Browse Source

Merge pull request #291 in CORE/base-third from ~HUGH.C/base-third:release/10.0 to release/10.0

* commit '2781b67b84923bef831795fa0a759441c31d0463':
  REPORT-22637 PDF导出时列宽有问题(以第一行为准,而不是每列的最大值为准)、解决验收问题
  REPORT-23201 【专题测试】div使用text-index属性,使用em做单位导出无效果
release/10.0
ju.ju 5 years ago
parent
commit
17ae5ed486
  1. 2
      fine-itext/src/com/fr/third/v2/lowagie/text/html/Markup.java
  2. 33
      fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/FactoryProperties.java
  3. 3
      fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncTable.java

2
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 */ /** the CSS tag for the visibility of objects */
public static final String CSS_KEY_VISIBILITY = "visibility"; public static final String CSS_KEY_VISIBILITY = "visibility";
public static final String CSS_KEY_TEXTINDENT = "text-indent";
// CSS values // CSS values
/** /**

33
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)) { if (key.equals(Markup.CSS_KEY_FONTFAMILY)) {
h.put(ElementTags.FACE, prop.getProperty(key)); h.put(ElementTags.FACE, prop.getProperty(key));
} else if (key.equals(Markup.CSS_KEY_FONTSIZE)) { } else if (key.equals(Markup.CSS_KEY_FONTSIZE)) {
float actualFontSize = Markup.parseLength(cprops dealWithFontSizeOrTextIndent(h, cprops, prop, key);
.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");
} else if (key.equals(Markup.CSS_KEY_FONTSTYLE)) { } else if (key.equals(Markup.CSS_KEY_FONTSTYLE)) {
String ss = prop.getProperty(key).trim().toLowerCase(); String ss = prop.getProperty(key).trim().toLowerCase();
if (ss.equals("italic") || ss.equals("oblique")) if (ss.equals("italic") || ss.equals("oblique"))
@ -429,14 +422,34 @@ public class FactoryProperties {
} else if (key.equals(Markup.CSS_KEY_BGCOLOR)) { } else if (key.equals(Markup.CSS_KEY_BGCOLOR)) {
String ss = prop.getProperty(key).trim().toLowerCase(); String ss = prop.getProperty(key).trim().toLowerCase();
h.put("background", ss); h.put("background", ss);
} } else if (key.equals(Markup.CSS_KEY_TEXTINDENT)) {
else{ dealWithFontSizeOrTextIndent(h, cprops, prop, key);
} else {
String ss = prop.getProperty(key).trim(); String ss = prop.getProperty(key).trim();
h.put(key, ss); 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() { public FontFactoryImp getFontImp() {
return fontImp; return fontImp;
} }

3
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); ArrayList cols = (ArrayList) rows.get(rowIndex);
for (int colIndex = 0; colIndex < cols.size(); colIndex++) { for (int colIndex = 0; colIndex < cols.size(); colIndex++) {
PdfPCell pCell = ((PdfPCell) cols.get(colIndex)); PdfPCell pCell = ((PdfPCell) cols.get(colIndex));
int cellCols = pCell.getColspan(); int cellCols = pCell.getColspan();
float avgWidth = pCell.getStyleWidth() / cellCols; float avgWidth = pCell.getStyleWidth() / cellCols;
for (int i = 0; i < cellCols && colIndex + i < colCount; i++) { 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); relativeColWidths.set(colIndex + i, avgWidth);
} }
} }

Loading…
Cancel
Save