diff --git a/fine-itext/src/com/fr/third/v2/lowagie/text/html/Markup.java b/fine-itext/src/com/fr/third/v2/lowagie/text/html/Markup.java index 763bbde5a..6a9cc97ff 100644 --- a/fine-itext/src/com/fr/third/v2/lowagie/text/html/Markup.java +++ b/fine-itext/src/com/fr/third/v2/lowagie/text/html/Markup.java @@ -209,6 +209,8 @@ public class Markup { /** the CSS tag for the visibility of objects */ public static final String CSS_KEY_VISIBILITY = "visibility"; + public static final String CSS_KEY_TEXTINDENT = "text-indent"; + // CSS values /** @@ -341,7 +343,7 @@ public class Markup { /** * New method contributed by: Lubos Strapko - * + * * @since 2.1.3 */ public static float parseLength(String string, float actualFontSize) { diff --git a/fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/FactoryProperties.java b/fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/FactoryProperties.java index 418bb954f..cf53266c4 100644 --- a/fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/FactoryProperties.java +++ b/fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/FactoryProperties.java @@ -374,14 +374,7 @@ public class FactoryProperties { if (key.equals(Markup.CSS_KEY_FONTFAMILY)) { h.put(ElementTags.FACE, prop.getProperty(key)); } else if (key.equals(Markup.CSS_KEY_FONTSIZE)) { - float actualFontSize = Markup.parseLength(cprops - .getProperty(ElementTags.SIZE), - Markup.DEFAULT_FONT_SIZE); - if (actualFontSize <= 0f) - actualFontSize = Markup.DEFAULT_FONT_SIZE; - h.put(ElementTags.SIZE, Float.toString(Markup.parseLength(prop - .getProperty(key), actualFontSize)) - + "pt"); + dealWithFontSizeOrTextIndent(h, cprops, prop, key); } else if (key.equals(Markup.CSS_KEY_FONTSTYLE)) { String ss = prop.getProperty(key).trim().toLowerCase(); if (ss.equals("italic") || ss.equals("oblique")) @@ -429,14 +422,34 @@ public class FactoryProperties { } else if (key.equals(Markup.CSS_KEY_BGCOLOR)) { String ss = prop.getProperty(key).trim().toLowerCase(); h.put("background", ss); - } - else{ - String ss = prop.getProperty(key).trim(); - h.put(key, ss); - } + } else if (key.equals(Markup.CSS_KEY_TEXTINDENT)) { + dealWithFontSizeOrTextIndent(h, cprops, prop, key); + } else { + String ss = prop.getProperty(key).trim(); + h.put(key, ss); + } } } + /** + * 处理下字号和文本缩进 + * + * @param h 当前标签内的属性Map + * @param cprops 一个list , 从左到右保存着父到子标签中的属性 + * @param prop 当前标签内的style 属性Map + * @param key 当前 prop 中的 k + */ + private static void dealWithFontSizeOrTextIndent(HashMap h, ChainedProperties cprops, Properties prop, String key) { + float actualFontSize = Markup.parseLength(cprops + .getProperty(ElementTags.SIZE), + Markup.DEFAULT_FONT_SIZE); + if (actualFontSize <= 0f) + actualFontSize = Markup.DEFAULT_FONT_SIZE; + h.put(key.equals(Markup.CSS_KEY_FONTSIZE) ? ElementTags.SIZE : key, Float.toString(Markup.parseLength(prop + .getProperty(key), actualFontSize)) + + "pt"); + } + public FontFactoryImp getFontImp() { return fontImp; } diff --git a/fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncTable.java b/fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncTable.java index 52164fdc2..5da1eb4ca 100644 --- a/fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncTable.java +++ b/fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncTable.java @@ -171,10 +171,11 @@ public class IncTable { ArrayList cols = (ArrayList) rows.get(rowIndex); for (int colIndex = 0; colIndex < cols.size(); colIndex++) { PdfPCell pCell = ((PdfPCell) cols.get(colIndex)); + int cellCols = pCell.getColspan(); float avgWidth = pCell.getStyleWidth() / cellCols; for (int i = 0; i < cellCols && colIndex + i < colCount; i++) { - if (relativeColWidths.get(i) < avgWidth) { + if (relativeColWidths.get(colIndex + i) < avgWidth) { relativeColWidths.set(colIndex + i, avgWidth); } }