kerry
6 years ago
24 changed files with 2869 additions and 1871 deletions
@ -0,0 +1,200 @@
|
||||
package com.fr.third.com.lowagie.text.html; |
||||
|
||||
/** |
||||
* @author kerry |
||||
* @date 2018/5/11 |
||||
*/ |
||||
public class CSS { |
||||
public final class Value { |
||||
private Value(){}; |
||||
public static final String THIN = "thin"; |
||||
public static final String MEDIUM = "medium"; |
||||
public static final String THICK = "thick"; |
||||
public static final String NONE = "none"; |
||||
public static final String HIDDEN = "hidden"; |
||||
public static final String DOTTED = "dotted"; |
||||
public static final String DASHED = "dashed"; |
||||
public static final String SOLID = "solid"; |
||||
public static final String DOUBLE = "double"; |
||||
public static final String GROOVE = "groove"; |
||||
public static final String RIDGE = "ridge"; |
||||
public static final String INSET = "inset"; |
||||
public static final String OUTSET = "outset"; |
||||
public static final String LEFT = "left"; |
||||
public static final String CENTER = "center"; |
||||
public static final String JUSTIFY = "justify"; |
||||
public static final String BOTTOM = "bottom"; |
||||
public static final String TOP = "top"; |
||||
public static final String RIGHT = "right"; |
||||
public static final String REPEAT = "repeat"; |
||||
public static final String NO_REPEAT = "no-repeat"; |
||||
public static final String REPEAT_X = "repeat-x"; |
||||
public static final String REPEAT_Y = "repeat-y"; |
||||
public static final String FIXED = "fixed"; |
||||
public static final String SCROLL = "scroll"; |
||||
public static final String DISC = "disc"; |
||||
public static final String SQUARE = "square"; |
||||
public static final String CIRCLE = "circle"; |
||||
public static final String DECIMAL = "decimal"; |
||||
public static final String LOWER_ROMAN = "lower-roman"; |
||||
public static final String UPPER_ROMAN = "upper-roman"; |
||||
public static final String LOWER_GREEK = "lower-greek"; |
||||
public static final String UPPER_GREEK = "upper-greek"; |
||||
public static final String LOWER_ALPHA = "lower-alpha"; |
||||
public static final String UPPER_ALPHA = "upper-alpha"; |
||||
public static final String LOWER_LATIN = "lower-latin"; |
||||
public static final String UPPER_LATIN = "upper-latin"; |
||||
public static final String INSIDE = "inside"; |
||||
public static final String OUTSIDE = "outside"; |
||||
public static final String INHERIT = "inherit"; |
||||
public static final String UNDERLINE = "underline"; |
||||
public static final String BOLD = "bold"; |
||||
public static final String ITALIC = "italic"; |
||||
public static final String OBLIQUE = "oblique"; |
||||
public static final String SUPER = "super"; |
||||
public static final String SUB = "sub"; |
||||
public static final String TEXT_TOP = "text-top"; |
||||
public static final String TEXT_BOTTOM = "text-bottom"; |
||||
public static final String LINE_THROUGH = "line-through"; |
||||
public static final String RELATIVE = "relative"; |
||||
public static final String HIDE = "hide"; |
||||
public static final String XX_SMALL = "xx-small"; |
||||
public static final String X_SMALL = "x-small"; |
||||
public static final String SMALL = "small"; |
||||
public static final String LARGE = "large"; |
||||
public static final String X_LARGE = "x-large"; |
||||
public static final String XX_LARGE = "xx-large"; |
||||
public static final String SMALLER = "smaller"; |
||||
public static final String LARGER = "larger"; |
||||
public static final String PX = "px"; |
||||
public static final String IN = "in"; |
||||
public static final String CM = "cm"; |
||||
public static final String MM = "mm"; |
||||
public static final String PT = "pt"; |
||||
public static final String PC = "pc"; |
||||
public static final String PERCENTAGE = "%"; |
||||
public static final String EM = "em"; |
||||
public static final String EX = "ex"; |
||||
public static final String ALWAYS = "always"; |
||||
public static final String AVOID = "avoid"; |
||||
public static final String ABSOLUTE = "absolute"; |
||||
public static final String AUTO = "auto"; |
||||
public static final String INLINE = "inline"; |
||||
public static final String BLOCK = "block"; |
||||
public static final String SEPARATE = "separate"; |
||||
public static final String COLLAPSE = "collapse"; |
||||
public static final String RTL = "rtl"; |
||||
public static final String LTR = "ltr"; |
||||
public static final String INLINE_BLOCK = "inline-block"; |
||||
public static final String INLINE_TABLE = "inline-table"; |
||||
public static final String LIST_ITEM = "list-item"; |
||||
public static final String RUN_IN = "run-in"; |
||||
public static final String TABLE = "table"; |
||||
public static final String TABLE_CAPTION = "table-caption"; |
||||
public static final String TABLE_CELL = "table-cell"; |
||||
public static final String TABLE_COLUMN_GROUP = "table-column-group"; |
||||
public static final String TABLE_COLUMN = "table-column"; |
||||
public static final String TABLE_FOOTER_GROUP = "table-footer-group"; |
||||
public static final String TABLE_HEADER_GROUP = "table-header-group"; |
||||
public static final String TABLE_ROW = "table-row"; |
||||
public static final String TABLE_ROW_GROUP = "table-row-group"; |
||||
} |
||||
|
||||
public final class Property { |
||||
|
||||
private Property() {}; |
||||
public static final String BACKGROUND = "background"; |
||||
public static final String BACKGROUND_IMAGE = "background-image"; |
||||
public static final String BACKGROUND_REPEAT = "background-repeat"; |
||||
public static final String BACKGROUND_ATTACHMENT = "background-attachment"; |
||||
public static final String BACKGROUND_POSITION = "background-position"; |
||||
public static final String BACKGROUND_COLOR = "background-color"; |
||||
public static final String BACKGROUND_SIZE = "background-size"; |
||||
public static final String LIST_STYLE = "list-style"; |
||||
public static final String LIST_STYLE_TYPE = "list-style-type"; |
||||
public static final String LIST_STYLE_POSITION = "list-style-position"; |
||||
public static final String LIST_STYLE_IMAGE = "list-style-image"; |
||||
public static final String MARGIN = "margin"; |
||||
public static final String TOP = "top"; |
||||
public static final String MARGIN_LEFT = "margin-left"; |
||||
public static final String MARGIN_RIGHT = "margin-right"; |
||||
public static final String MARGIN_TOP = "margin-top"; |
||||
public static final String MARGIN_BOTTOM = "margin-bottom"; |
||||
public static final String BORDER = "border"; |
||||
public static final String BORDER_LEFT = "border-left"; |
||||
public static final String BORDER_TOP = "border-top"; |
||||
public static final String BORDER_RIGHT = "border-right"; |
||||
public static final String BORDER_BOTTOM = "border-bottom"; |
||||
public static final String BORDER_WIDTH = "border-width"; |
||||
public static final String BORDER_STYLE = "border-style"; |
||||
public static final String BORDER_COLOR = "border-color"; |
||||
public static final String BORDER_COLLAPSE = "border-collapse"; |
||||
public static final String BORDER_SPACING = "border-spacing"; |
||||
public static final String BORDER_TOP_WIDTH = "border-top-width"; |
||||
public static final String BORDER_BOTTOM_WIDTH = "border-bottom-width"; |
||||
public static final String BORDER_LEFT_WIDTH = "border-left-width"; |
||||
public static final String BORDER_RIGHT_WIDTH = "border-right-width"; |
||||
public static final String BORDER_TOP_COLOR = "border-top-color"; |
||||
public static final String BORDER_BOTTOM_COLOR = "border-bottom-color"; |
||||
public static final String BORDER_LEFT_COLOR = "border-left-color"; |
||||
public static final String BORDER_RIGHT_COLOR = "border-right-color"; |
||||
public static final String BORDER_TOP_STYLE = "border-top-style"; |
||||
public static final String BORDER_BOTTOM_STYLE = "border-bottom-style"; |
||||
public static final String BORDER_LEFT_STYLE = "border-left-style"; |
||||
public static final String BORDER_RIGHT_STYLE = "border-right-style"; |
||||
public static final String PADDING = "padding"; |
||||
public static final String PADDING_TOP = "padding-top"; |
||||
public static final String PADDING_BOTTOM = "padding-bottom"; |
||||
public static final String PADDING_LEFT = "padding-left"; |
||||
public static final String PADDING_RIGHT = "padding-right"; |
||||
public static final String FONT = "font"; |
||||
public static final String FONT_WEIGHT = "font-weight"; |
||||
public static final String FONT_SIZE = "font-size"; |
||||
public static final String FONT_STYLE = "font-style"; |
||||
public static final String FONT_FAMILY = "font-family"; |
||||
public static final String TEXT_DECORATION = "text-decoration"; |
||||
public static final String COLOR = "color"; |
||||
public static final String TAB_INTERVAL = "tab-interval"; |
||||
public static final String XFA_TAB_COUNT = "xfa-tab-count"; |
||||
public static final String XFA_FONT_HORIZONTAL_SCALE = "xfa-font-horizontal-scale"; |
||||
public static final String XFA_FONT_VERTICAL_SCALE = "xfa-font-vertical-scale"; |
||||
public static final String BEFORE = "before"; |
||||
public static final String AFTER = "after"; |
||||
public static final String HEIGHT = "height"; |
||||
public static final String WIDTH = "width"; |
||||
public static final String LETTER_SPACING = "letter-spacing"; |
||||
public static final String VERTICAL_ALIGN = "vertical-align"; |
||||
public static final String LINE_HEIGHT = "line-height"; |
||||
public static final String TEXT_ALIGN = "text-align"; |
||||
public static final String TEXT_VALIGN = "text-valign"; |
||||
public static final String TEXT_INDENT = "text-indent"; |
||||
public static final String POSITION = "position"; |
||||
public static final String EMPTY_CELLS = "empty-cells"; |
||||
public static final String CELLPADDING = "cellpadding"; |
||||
//deprecated
|
||||
public static final String CELLPADDING_LEFT = "cellpadding-left"; |
||||
public static final String CELLPADDING_TOP = "cellpadding-top"; |
||||
public static final String CELLPADDING_RIGHT = "cellpadding-right"; |
||||
public static final String CELLPADDING_BOTTOM = "cellpadding-bottom"; |
||||
|
||||
public static final String CAPTION_SIDE = "caption-side"; |
||||
public static final String TAB_STOPS = "tab-stops"; |
||||
public static final String XFA_TAB_STOPS = "xfa-tab-stops"; |
||||
public static final String PAGE_BREAK_BEFORE = "page-break-before"; |
||||
public static final String PAGE_BREAK_INSIDE = "page-break-inside"; |
||||
public static final String PAGE_BREAK_AFTER = "page-break-after"; |
||||
public static final String REPEAT_HEADER = "repeat-header"; |
||||
public static final String REPEAT_FOOTER = "repeat-footer"; |
||||
public static final String LEFT = "left"; |
||||
public static final String DISPLAY = "display"; |
||||
public static final String MIN_WIDTH = "min-width"; |
||||
public static final String MAX_WIDTH = "max-width"; |
||||
public static final String MIN_HEIGHT = "min-height"; |
||||
public static final String MAX_HEIGHT = "max-height"; |
||||
public static final String RIGHT = "right"; |
||||
public static final String BOTTOM = "bottom"; |
||||
public static final String FLOAT = "float"; |
||||
public static final String DIRECTION = "direction"; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,108 @@
|
||||
package com.fr.third.com.lowagie.text.html; |
||||
|
||||
import com.fr.third.com.lowagie.text.html.CSS; |
||||
import com.fr.third.com.lowagie.text.html.WebColors; |
||||
|
||||
import java.util.Arrays; |
||||
import java.util.HashMap; |
||||
import java.util.HashSet; |
||||
import java.util.Map; |
||||
import java.util.Set; |
||||
|
||||
/** |
||||
* @author kerry |
||||
* @date 2018/4/9 |
||||
*/ |
||||
public class CSSUtils { |
||||
|
||||
|
||||
private static final Set<String> backgroundPositions = new HashSet<String>( |
||||
Arrays.asList(new String[] { CSS.Value.LEFT, CSS.Value.CENTER, CSS.Value.BOTTOM, CSS.Value.TOP, CSS.Value.RIGHT })); |
||||
|
||||
public static Map<String, String> processBackground(final String background) { |
||||
Map<String, String> rules = new HashMap<String, String>(); |
||||
String[] styles = splitComplexCssStyle(background); |
||||
for(String style : styles) { |
||||
if (style.contains("url(")) { |
||||
rules.put(CSS.Property.BACKGROUND_IMAGE, style); |
||||
} else if (style.equalsIgnoreCase(CSS.Value.REPEAT) |
||||
|| style.equalsIgnoreCase(CSS.Value.NO_REPEAT) |
||||
|| style.equalsIgnoreCase(CSS.Value.REPEAT_X) |
||||
|| style.equalsIgnoreCase(CSS.Value.REPEAT_Y)) { |
||||
rules.put(CSS.Property.BACKGROUND_REPEAT, style); |
||||
} else if (style.equalsIgnoreCase(CSS.Value.FIXED) || style.equalsIgnoreCase(CSS.Value.SCROLL)) { |
||||
rules.put(CSS.Property.BACKGROUND_ATTACHMENT, style); |
||||
} else if (backgroundPositions.contains(style)) { |
||||
if(rules.get(CSS.Property.BACKGROUND_POSITION) == null) { |
||||
rules.put(CSS.Property.BACKGROUND_POSITION, style); |
||||
} else { |
||||
style = style.concat(" "+rules.get(CSS.Property.BACKGROUND_POSITION)); |
||||
rules.put(CSS.Property.BACKGROUND_POSITION, style); |
||||
} |
||||
} else if (isNumericValue(style) || isMetricValue(style) || isRelativeValue(style)) { |
||||
if(rules.get(CSS.Property.BACKGROUND_POSITION) == null) { |
||||
rules.put(CSS.Property.BACKGROUND_POSITION, style); |
||||
} else { |
||||
style = style.concat(" "+rules.get(CSS.Property.BACKGROUND_POSITION)); |
||||
rules.put(CSS.Property.BACKGROUND_POSITION, style); |
||||
} |
||||
} else if(style.contains("rgb(") || style.contains("rgba(") || style.contains("#") || WebColors.NAMES.containsKey(style.toLowerCase())) { |
||||
rules.put(CSS.Property.BACKGROUND_COLOR, style); |
||||
} |
||||
} |
||||
return rules; |
||||
} |
||||
public static String[] splitComplexCssStyle(String s) { |
||||
s = s.replaceAll("\\s*,\\s*", ",") ; |
||||
return s.split("\\s"); |
||||
} |
||||
|
||||
|
||||
public static boolean isMetricValue(final String value) { |
||||
return value.contains(CSS.Value.PX) || value.contains(CSS.Value.IN) || value.contains(CSS.Value.CM) |
||||
|| value.contains(CSS.Value.MM) || value.contains(CSS.Value.PC) || value.contains(CSS.Value.PT); |
||||
|
||||
} |
||||
|
||||
public static boolean isRelativeValue(final String value) { |
||||
return value.contains(CSS.Value.PERCENTAGE) || value.contains(CSS.Value.EM) || value.contains(CSS.Value.EX); |
||||
|
||||
} |
||||
|
||||
public static boolean isNumericValue(final String value) { |
||||
return value.matches("^-?\\d\\d*\\.\\d*$") || value.matches("^-?\\d\\d*$") || value.matches("^-?\\.\\d\\d*$"); |
||||
|
||||
} |
||||
|
||||
|
||||
public static String extractUrl(final String url) { |
||||
String str = null; |
||||
if (url.startsWith("url")) { |
||||
String urlString = url.substring(3).trim().replace("(", "").replace(")", "").trim(); |
||||
if (urlString.startsWith("'") && urlString.endsWith("'")) { |
||||
str = urlString.substring(urlString.indexOf("'")+1, urlString.lastIndexOf("'")); |
||||
} else if ( urlString.startsWith("\"") && urlString.endsWith("\"") ) { |
||||
str = urlString.substring(urlString.indexOf('"')+1, urlString.lastIndexOf('"')); |
||||
} else { |
||||
str = urlString; |
||||
} |
||||
} else { |
||||
str = url; |
||||
} |
||||
return str; |
||||
} |
||||
|
||||
public static Float parseFloat(String str){ |
||||
float result = 0.0f; |
||||
try { |
||||
if(str.endsWith("px") || str.endsWith("pt")){ |
||||
result = Float.parseFloat(str.substring(0, str.length() - 2)); |
||||
}else{ |
||||
result = Float.parseFloat(str); |
||||
} |
||||
}catch (NumberFormatException e){ |
||||
|
||||
} |
||||
return result; |
||||
} |
||||
} |
@ -0,0 +1,55 @@
|
||||
package com.fr.third.com.lowagie.text.html; |
||||
|
||||
/** |
||||
* @author kerry |
||||
* @date 2018/5/9 |
||||
*/ |
||||
public class IndentAttribute { |
||||
private float top = 0.0f; |
||||
private float bottom = 0.0f; |
||||
private float left = 0.0f; |
||||
private float right = 0.0f; |
||||
|
||||
public float getTop() { |
||||
return top; |
||||
} |
||||
|
||||
public void setTop(float top) { |
||||
this.top = top; |
||||
} |
||||
|
||||
public float getBottom() { |
||||
return bottom; |
||||
} |
||||
|
||||
public void setBottom(float bottom) { |
||||
this.bottom = bottom; |
||||
} |
||||
|
||||
public float getLeft() { |
||||
return left; |
||||
} |
||||
|
||||
public void setLeft(float left) { |
||||
this.left = left; |
||||
} |
||||
|
||||
public float getRight() { |
||||
return right; |
||||
} |
||||
|
||||
public void setRight(float right) { |
||||
this.right = right; |
||||
} |
||||
|
||||
public IndentAttribute(float top, float left, float bottom, float right){ |
||||
this.top = top; |
||||
this.left = left; |
||||
this.bottom = bottom; |
||||
this.right = right; |
||||
} |
||||
|
||||
public IndentAttribute(){ |
||||
|
||||
} |
||||
} |
@ -0,0 +1,84 @@
|
||||
package com.fr.third.com.lowagie.text.html; |
||||
|
||||
import com.fr.third.com.lowagie.text.html.CSS; |
||||
import com.fr.third.com.lowagie.text.html.IndentAttribute; |
||||
import com.fr.third.com.lowagie.text.html.Markup; |
||||
|
||||
import java.util.Iterator; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* @author kerry |
||||
* @date 2018/5/14 |
||||
*/ |
||||
public class ParseIndentAttrUtils { |
||||
public static IndentAttribute parseSpace(String indent){ |
||||
String[] a = indent.split(" "); |
||||
if(a.length == 0){ |
||||
return new IndentAttribute(); |
||||
} |
||||
float indentTop = Markup.parseLength(a[0]); |
||||
if(a.length == 1){ |
||||
return new IndentAttribute(indentTop, indentTop, indentTop, indentTop); |
||||
} |
||||
float indentLeft = Markup.parseLength(a[1]); |
||||
if(a.length == 2){ |
||||
return new IndentAttribute(indentTop, indentLeft, indentTop, indentLeft); |
||||
} |
||||
float indentBottom = Markup.parseLength(a[2]); |
||||
if(a.length == 3){ |
||||
return new IndentAttribute(indentTop, indentLeft, indentBottom, indentLeft); |
||||
} |
||||
float indentRight = Markup.parseLength(a[3]); |
||||
return new IndentAttribute(indentTop, indentLeft, indentBottom, indentRight); |
||||
} |
||||
|
||||
public static IndentAttribute parsePaddingAttribute(Map map){ |
||||
if (map == null){ |
||||
return new IndentAttribute(); |
||||
} |
||||
IndentAttribute indentAttribute = new IndentAttribute(); |
||||
Iterator iter = map.entrySet().iterator(); |
||||
while (iter.hasNext()) { |
||||
Map.Entry entry = (Map.Entry) iter.next(); |
||||
String key = (String) entry.getKey(); |
||||
if (CSS.Property.PADDING_LEFT.equals(key)) { |
||||
indentAttribute.setLeft(Markup.parseLength((String) entry.getValue())); |
||||
} else if (CSS.Property.PADDING_RIGHT.equals(key)) { |
||||
indentAttribute.setRight(Markup.parseLength((String) entry.getValue())); |
||||
} else if (CSS.Property.PADDING_TOP.equals(key)) { |
||||
indentAttribute.setTop(Markup.parseLength((String) entry.getValue())); |
||||
} else if (CSS.Property.PADDING_BOTTOM.equals(key)) { |
||||
indentAttribute.setBottom(Markup.parseLength((String) entry.getValue())); |
||||
} |
||||
} |
||||
return indentAttribute; |
||||
} |
||||
|
||||
public static IndentAttribute parseMarginAttribute(Map map){ |
||||
IndentAttribute indentAttribute = new IndentAttribute(); |
||||
Iterator iter = map.entrySet().iterator(); |
||||
while (iter.hasNext()) { |
||||
Map.Entry entry = (Map.Entry) iter.next(); |
||||
String key = (String) entry.getKey(); |
||||
float val = Markup.parseLength((String) entry.getValue()); |
||||
if (CSS.Property.MARGIN_LEFT.equals(key)) { |
||||
indentAttribute.setLeft(val); |
||||
} else if (CSS.Property.MARGIN_RIGHT.equals(key)) { |
||||
indentAttribute.setRight(val); |
||||
} else if (CSS.Property.MARGIN_TOP.equals(key)) { |
||||
indentAttribute.setTop(val); |
||||
} else if (CSS.Property.MARGIN_BOTTOM.equals(key)) { |
||||
indentAttribute.setBottom(val); |
||||
} |
||||
} |
||||
return indentAttribute; |
||||
} |
||||
|
||||
public static void createIndent(StringBuffer stringBuffer, String attr, IndentAttribute indentAttribute){ |
||||
stringBuffer.append(attr).append("-").append("left").append(":").append(indentAttribute.getLeft()).append("px;") |
||||
.append(attr).append("-").append("right").append(":").append(indentAttribute.getRight()).append("px;") |
||||
.append(attr).append("-").append("top").append(":").append(indentAttribute.getTop()).append("px;") |
||||
.append(attr).append("-").append("bottom").append(":").append(indentAttribute.getBottom()).append("px;"); |
||||
} |
||||
} |
@ -0,0 +1,45 @@
|
||||
package com.fr.third.com.lowagie.text.html.simpleparser; |
||||
|
||||
import com.fr.third.com.lowagie.text.html.HtmlTags; |
||||
import com.fr.third.com.lowagie.text.html.Markup; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author kerry |
||||
* @date 2018/5/2 |
||||
*/ |
||||
public class HtmlConstants { |
||||
//块级元素集合
|
||||
public static final List<String> BLOCK_ELEMENTS = new ArrayList<String>(); |
||||
//行内元素集合
|
||||
public static final List<String> INLINE_ELEMENTS = new ArrayList<String>(); |
||||
//支持解析的属性
|
||||
public static final List<String> PADDING = new ArrayList<String>(); |
||||
public static final List<String> MARGIN = new ArrayList<String>(); |
||||
static { |
||||
BLOCK_ELEMENTS.add(HtmlTags.DIV); |
||||
BLOCK_ELEMENTS.add(HtmlTags.UNORDEREDLIST); |
||||
BLOCK_ELEMENTS.add(HtmlTags.PARAGRAPH); |
||||
BLOCK_ELEMENTS.add(HtmlTags.ORDEREDLIST); |
||||
BLOCK_ELEMENTS.add(HtmlTags.TABLE); |
||||
INLINE_ELEMENTS.add(HtmlTags.SPAN); |
||||
INLINE_ELEMENTS.add(HtmlTags.IMAGE); |
||||
INLINE_ELEMENTS.add(HtmlTags.STRONG); |
||||
INLINE_ELEMENTS.add(HtmlTags.ANCHOR); |
||||
INLINE_ELEMENTS.add(HtmlTags.SUB); |
||||
INLINE_ELEMENTS.add(HtmlTags.SUP); |
||||
INLINE_ELEMENTS.add(HtmlTags.I); |
||||
INLINE_ELEMENTS.add(HtmlTags.U); |
||||
INLINE_ELEMENTS.add(HtmlTags.EM); |
||||
PADDING.add(Markup.CSS_KEY_PADDINGLEFT); |
||||
PADDING.add(Markup.CSS_KEY_PADDINGRIGHT); |
||||
PADDING.add(Markup.CSS_KEY_PADDINGTOP); |
||||
PADDING.add(Markup.CSS_KEY_PADDINGBOTTOM); |
||||
MARGIN.add(Markup.CSS_KEY_MARGINLEFT); |
||||
MARGIN.add(Markup.CSS_KEY_MARGINRIGHT); |
||||
MARGIN.add(Markup.CSS_KEY_MARGINTOP); |
||||
MARGIN.add(Markup.CSS_KEY_MARGINBOTTOM); |
||||
} |
||||
} |
@ -0,0 +1,58 @@
|
||||
package com.fr.third.com.lowagie.text.pdf; |
||||
|
||||
import com.fr.third.com.lowagie.text.DocumentException; |
||||
import com.fr.third.com.lowagie.text.html.CSSUtils; |
||||
import com.fr.third.com.lowagie.text.html.Markup; |
||||
|
||||
import java.awt.Color; |
||||
|
||||
public class BorderStyle { |
||||
private float borderWidth = 0.0f; |
||||
private Color borderColor = Color.black; |
||||
private String borderPattern = "solid"; |
||||
|
||||
public float getBorderWidth() { |
||||
return borderWidth; |
||||
} |
||||
|
||||
public void setBorderWidth(float borderWidth) { |
||||
this.borderWidth = borderWidth; |
||||
} |
||||
|
||||
public Color getBorderColor() { |
||||
return borderColor; |
||||
} |
||||
|
||||
public void setBorderColor(Color borderColor) { |
||||
this.borderColor = borderColor; |
||||
} |
||||
|
||||
public String getBorderPattern() { |
||||
return borderPattern; |
||||
} |
||||
|
||||
public void setBorderPattern(String borderPattern) { |
||||
this.borderPattern = borderPattern; |
||||
} |
||||
|
||||
public BorderStyle() { |
||||
|
||||
} |
||||
|
||||
public BorderStyle(int borderWidth, String borderPattern, Color borderColor) { |
||||
this.borderWidth = borderWidth; |
||||
this.borderPattern = borderPattern; |
||||
this.borderWidth = borderWidth; |
||||
} |
||||
|
||||
public static BorderStyle parseBorderStyle(String borderString) throws DocumentException { |
||||
BorderStyle borderStyle = new BorderStyle(); |
||||
String[] borderPros = borderString.split(" "); |
||||
borderStyle.setBorderWidth(CSSUtils.parseFloat(borderPros[0])); |
||||
borderStyle.setBorderPattern(borderPros[1]); |
||||
borderStyle.setBorderColor(Markup.decodeColor(borderPros[2])); |
||||
return borderStyle; |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,54 @@
|
||||
package com.fr.third.com.lowagie.text.pdf; |
||||
|
||||
import com.fr.third.com.lowagie.text.pdf.BorderStyle; |
||||
|
||||
/** |
||||
* 描述table的属性类 |
||||
* 包括cellspacing、cellpadding、border等 |
||||
*/ |
||||
public class TableProperties { |
||||
private BorderStyle borderStyle = new BorderStyle(); |
||||
private float cellspacing = 2.0f; |
||||
private float cellpadding = 1.0f; |
||||
private boolean collapse = false; |
||||
|
||||
public BorderStyle getBorderStyle() { |
||||
return borderStyle; |
||||
} |
||||
|
||||
public void setBorderStyle(BorderStyle borderStyle) { |
||||
this.borderStyle = borderStyle; |
||||
} |
||||
|
||||
public float getCellspacing() { |
||||
return isCollapse() ? 0 : cellspacing; |
||||
} |
||||
|
||||
public void setCellspacing(float cellspacing) { |
||||
this.cellspacing = cellspacing; |
||||
} |
||||
|
||||
public float getCellpadding() { |
||||
return cellpadding; |
||||
} |
||||
|
||||
public void setCellpadding(float cellpadding) { |
||||
this.cellpadding = cellpadding; |
||||
} |
||||
|
||||
public boolean isCollapse() { |
||||
return collapse; |
||||
} |
||||
|
||||
public void setCollapse(boolean collapse) { |
||||
this.collapse = collapse; |
||||
} |
||||
|
||||
public String toHtmlString(){ |
||||
StringBuffer sb = new StringBuffer(); |
||||
sb.append("cellspacing").append("=").append(cellspacing).append(" "); |
||||
sb.append("cellpadding").append("=").append(cellpadding).append(" "); |
||||
sb.append("border").append("=").append(borderStyle.getBorderWidth()).append(" "); |
||||
return sb.toString(); |
||||
} |
||||
} |
Loading…
Reference in new issue