我有一些带有标签的模板,这些标签已替换为HTML。我可以按照@AxelRichter在这里的回答使用Apache POI来做到这一点: How to replace text(tag) with HTML in docx using Apache POI?
据我所知,当在MS Word中打开文件时,这些AltChunk会转换为Word格式。但是我需要在打开之前进行转换。我发现docx4j可以使用MainDocumentPart中的convertAltChunks()方法做到这一点。
所以,我试图做的事情:
XWPFDocument templateDocx = //here everything is replaced and fine.
//AltChunks are converted when opened in MS Word
ByteArrayOutputStream os = new ByteArrayOutputStream();
templateDocx.write(os);
templateDocx.close();
InputStream is = new ByteArrayInputStream(os.toByteArray());
//Opening document processed by Apache POI using docx4j
WordprocessingMLPackage wordMLPackage = Docx4J.load(is);
//Converting AltChunks
WordprocessingMLPackage pkgOut = wordMLPackage.getMainDocumentPart().convertAltChunks();
pkgOut.save(response.getOutputStream());
但是,不会转换AltChunk。我怎样才能做到这一点? Apache POI和Docx4j不兼容吗?如果是这样,如何按照docx4j的说明用HTML替换HTML标签?How to replace text(tag) with HTML in docx using Apache POI?
更新:
如果我使用7zip打开结果docx,我会得到:
根文件夹,Word文件夹,document.xml和_rels / document.xml.rels的快照
someText是我的AltChunk的ID
someText.html包含:
<!DOCTYPE html><html><head><style></style><title>HTML import</title></head><body><p><strong>qwe</strong></p><p><strong><em>asd</em></strong></p><p><strong><em><u>zxc</u></em></strong></p><p style="text-align: center;"><strong><em><u>123</u></em></strong></p></body>