Html文件带页眉页脚怎么转换为pdf

我有三段html,页眉、正文和页脚。我想把这三段放在一起转换为pdf文件,该怎么做

@humanhuman, 您可以将页眉、正文和页脚连接成一个文件或字符串,然后将结果转换为 PDF。 这是一个如何使用字符串完成此操作的示例。

String header ="<html><head><title>你好 Aspose.Words</title></head>";
String body = "<body><p>这是正文。</p></body>";
String footer = "</html>";

String html = header + body + footer;

InputStream htmlStream = new ByteArrayInputStream(html.getBytes("UTF-8"));
Document doc = new Document(htmlStream);
doc.save("out.pdf");

我的这三段html都是独立的完整的html,都是浏览器可以直接展示的页面文件。不能直接拼接在一起。这种情况有办法吗

@humanhuman, 你能附上示例 HTML 文件吗?

html.zip (23.1 KB)

@humanhuman, 您可以在转换为PDF之前使用“ Document.AppendDocument”来连接HTML文件:

Document mergedDoc = new Document("header.html");
Document body = new Document("body.html");
Document footer = new Document("footer.html");

mergedDoc.appendDocument(body, ImportFormatMode.USE_DESTINATION_STYLES);
mergedDoc.appendDocument(footer, ImportFormatMode.USE_DESTINATION_STYLES);

mergedDoc.save("out.pdf");

请参阅我们的文档以获取更多详细信息:

我们想要得结果是,能够在转换出来的pdf中的每一页都加上页眉页脚,直接拼接的方式并不好。
我们发现,先把html转换为word,并且使用方法insertHtml添加页眉页脚之后,生成的word是每一页都有页眉页脚,之后在转换为pdf,就达到了我们的效果,但是这个过程非常的慢,耗时很严重,
这是我想要的效果
out.pdf (206.6 KB)
这是我的代码
asposeHTML.zip (3.8 KB)

@humanhuman, 在您的代码示例中,您创建并保存了 2 个中间 DOCX 文件。 删除它会使代码在我的计算机上运行速度提高 ~20%。


com.aspose.words.Document htmlDoc = new com.aspose.words.Document(new ByteArrayInputStream(hh.getBody().getBytes("utf-8")));
DocumentBuilder builder = new DocumentBuilder(htmlDoc);

builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
if (StringUtils.isNotBlank(hh.getHead())) {
     builder.insertHtml(hh.getHead());
}

builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
if (StringUtils.isNotBlank(hh.getFoot())) {
    builder.insertHtml(hh.getFoot());
}

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
htmlDoc.save(byteArrayOutputStream, SaveFormat.PDF);
return byteArrayOutputStream.toByteArray();