Browse Source

REPORT-13464 [10.0.2回归]表单导出排版混乱,背景未导出

bugfix/10.0
kerry 6 years ago
parent
commit
d4323d8e43
  1. 2
      fine-itext/src/com/fr/third/v2/lowagie/text/html/CSSUtils.java
  2. 16
      fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncCell.java
  3. 16
      fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncTable.java

2
fine-itext/src/com/fr/third/v2/lowagie/text/html/CSSUtils.java

@ -94,6 +94,8 @@ public class CSSUtils {
try { try {
if(str.endsWith("px") || str.endsWith("pt")){ if(str.endsWith("px") || str.endsWith("pt")){
result = Float.parseFloat(str.substring(0, str.length() - 2)); result = Float.parseFloat(str.substring(0, str.length() - 2));
}else if(str.endsWith("%")){
result = Float.parseFloat(str.substring(0, str.length() - 1));
}else { }else {
result = Float.parseFloat(str); result = Float.parseFloat(str);
} }

16
fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncCell.java

@ -60,7 +60,6 @@ import com.fr.third.v2.lowagie.text.pdf.PdfPCell;
import com.fr.third.v2.lowagie.text.Phrase; import com.fr.third.v2.lowagie.text.Phrase;
/** /**
*
* @author psoares * @author psoares
*/ */
public class IncCell implements TextElementArray { public class IncCell implements TextElementArray {
@ -68,7 +67,9 @@ public class IncCell implements TextElementArray {
private ArrayList chunks = new ArrayList(); private ArrayList chunks = new ArrayList();
private PdfPCell cell; private PdfPCell cell;
/** Creates a new instance of IncCell */ /**
* Creates a new instance of IncCell
*/
public IncCell(String tag, ChainedProperties props) { public IncCell(String tag, ChainedProperties props) {
cell = new PdfPCell((Phrase) null); cell = new PdfPCell((Phrase) null);
String value = props.getProperty("colspan"); String value = props.getProperty("colspan");
@ -104,8 +105,7 @@ public class IncCell implements TextElementArray {
if (value != null) if (value != null)
cell.setPadding(CSSUtils.parseFloat(value)); cell.setPadding(CSSUtils.parseFloat(value));
cell.setUseDescender(true); cell.setUseDescender(true);
value = props.getProperty("bgcolor");
cell.setBackgroundColor(Markup.decodeColor(value));
//解析td上声明的width //解析td上声明的width
value = props.getLastChainProperty("width"); value = props.getLastChainProperty("width");
if (value != null) { if (value != null) {
@ -118,6 +118,10 @@ public class IncCell implements TextElementArray {
} }
//解析background相关属性并保存到cell对象 //解析background相关属性并保存到cell对象
Map<String, String> backgroundRules = new HashMap<String, String>(); Map<String, String> backgroundRules = new HashMap<String, String>();
value = props.getProperty("bgcolor");
if (value != null) {
backgroundRules.put("background-color", value);
}
value = props.getLastChainProperty("background-size"); value = props.getLastChainProperty("background-size");
if (value != null) { if (value != null) {
backgroundRules.put("background-size", value); backgroundRules.put("background-size", value);
@ -170,16 +174,16 @@ public class IncCell implements TextElementArray {
} }
/** /**
* @see Element#isContent()
* @since iText 2.0.8 * @since iText 2.0.8
* @see Element#isContent()
*/ */
public boolean isContent() { public boolean isContent() {
return true; return true;
} }
/** /**
* @see Element#isNestable()
* @since iText 2.0.8 * @since iText 2.0.8
* @see Element#isNestable()
*/ */
public boolean isNestable() { public boolean isNestable() {
return true; return true;

16
fine-itext/src/com/fr/third/v2/lowagie/text/html/simpleparser/IncTable.java

@ -151,10 +151,9 @@ public class IncTable {
table.addCell((PdfPCell)col.get(k)); table.addCell((PdfPCell)col.get(k));
} }
} }
//调整行高
for(int a = 0; a < rowHeights.size(); a++){ processRowHeight(table);
table.getRow(a).setStyleHeight(rowHeights.get(a));
}
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
@ -162,6 +161,15 @@ public class IncTable {
return table; return table;
} }
public void processRowHeight(PdfPTable table){
Float height = CSSUtils.parseFloat((String)props.get("height"));
Float eachHeight = height / table.getRows().size();
//调整行高
for(int a = 0; a < rowHeights.size(); a++){
table.getRow(a).setStyleHeight(Math.max(eachHeight, rowHeights.get(a)));
}
}
public TableProperties parseTableProperties(){ public TableProperties parseTableProperties(){
TableProperties tableProperties = new TableProperties(); TableProperties tableProperties = new TableProperties();
BorderStyle borderStyle = new BorderStyle(); BorderStyle borderStyle = new BorderStyle();

Loading…
Cancel
Save