【问题标题】:I am converting HTML2WORD document using APACHE POI Java , but not able to add Header and Footer to newly generated word document我正在使用 APACHE POI Java 转换 HTML2WORD 文档,但无法将页眉和页脚添加到新生成的 word 文档
【发布时间】:2021-08-09 09:24:12
【问题描述】:

当我使用 POI 转换 HTML 2 Word 时,能够生成一个新的 .doc,其中包含 html 中使用的所有样式和格式,但问题是无法在新创建的 .doc 文档中附加页眉和页脚。 POI 不支持 CSS 的 @page 样式吗?以及如何在新生成的 .doc 文档中添加页眉和页脚。

以下代码:

public void convertHtmltoWord(String html, OutputStream outputStream) throws IOException {  

    POIFSFileSystem poifs = new POIFSFileSystem();
    DirectoryEntry directory = poifs.getRoot();

    try {
        directory.createDocument("WordDocument", getInputStream(html));
        poifs.writeFilesystem(outputStream);
    } finally {
        outputStream.close();
        poifs.close();
    }
}

public static InputStream getInputStream(String inputData) {
    InputStream targetStream = IOUtils.toInputStream(inputData);
    return targetStream;
}

注意:转换后的 .doc 只会给出 .doc 的 BODY 部分,而不是 Header 和 Footer。就像页脚中的页码没有出现。

【问题讨论】:

    标签: java css apache-poi


    【解决方案1】:

    您使用您的代码所做的是不是 HTMLWord 的转换。

    您的代码仅创建一个POIFSFileSystem,其中一个DirectoryEntry 包含HTMLMicrosoft Word 将解释 HTML 并将其显示在文档正文中,但该文件不是真正的二进制 *.doc 文件。

    Word 中打开后更改某些内容然后保存时可以看到这一点。它将被保存为HTML,并且将创建一个附加目录[Filename]-Files。这是必需的,因为HTML 默认不提供嵌入。所以这个目录包含了所有不能嵌入的元素。这是例如图片,还有包含页眉和/或页脚文本的附加 HTML 文件。

    因此,使用您的方法无法将页眉或页脚添加到 HTML。它只能将HTML 放入文档正文中。它甚至没有创建一个真正的MIcvrosoft Word 文件,而只是一个HTML 文件,由于它的假文件名*.doc 而被强加到Microsoft Word

    【讨论】:

    • 好的。但是我们怎样才能做到这一点。我已经使用样式(报告)格式化了 html 字符串正文。我想将这些内容转换为带有页眉和页脚部分的 .doc/docx。这是否可以通过任何 java api 开源实现,如果可以,那么如何实现?
    • @Cchanchal Sharma:只需将HTML 解析为其元素,然后为Word 文档创建适当的元素。有多个 Java 库来解析 HTML 并创建 Word 文档。例如JSoupapache poi。也许已经有完整的库可以将HTML 转换为Word。但StackOverflow 不支持关于查找书籍和/或图书馆的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2017-05-26
    • 2012-07-25
    • 2017-03-29
    • 2021-07-21
    • 1970-01-01
    • 2012-10-31
    相关资源
    最近更新 更多