我尝试使用docx4j
将HTML转换为docx。我将表的cellspacing
和cellpadding
属性设置为0.但是在我打开生成的文档之后,每个单元格之间仍有单元格间距。我使用XHTMLImporterImpl
生成文档。以下是我使用的代码:
String border = "border: 1px solid black;";
String testString = "<table cellspacing='0' cellpadding='0' style='" + border + "'>"
+ "<tr>"
+ "<td style='border-spacing:0;padding:0;background-color:red;" + border + "'>This is test row1 col1</td>"
+ "<td style='border-spacing:0;padding:0;background-color:red;" + border + "'>This is test row1 col2</td>"
+ "</tr>"
+ "<tr>"
+ "<td style='border-spacing:0;padding:0;background-color:red;" + border + "'>This is row2 col1</td>"
+ "<td style='border-spacing:0;padding:0;background-color:red;'>This is row2 col2</td>"
+ "</tr>"
+ "</table>";
generateWord(testString);
generateWord()
方法如下:
public static void generateWord(String html) throws Docx4JException
{
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
wordMLPackage.getMainDocumentPart().getContent().addAll(XHTMLImporter.convert( html, null) );
wordMLPackage.save(new java.io.File(System.getProperty("user.dir") + "/output.docx"));
}
结果如下:
每个单元格之间都有空格。
旁注:如果我使用CTAltChunk
,则每个单元格之间没有间距。但CTAltChunk
无法处理Base64
图片。我可以将<img src=''>
与CTAltChunk
一起使用,但它会链接文档中的图像源。删除源图像后,图像将从文档中消失。这就是我需要使用Base64
图片的原因。