0

我已经创建了一个 xml 文件并将其呈现为通过 servlet 发送的 PDF:

TraxInputHandler input = new TraxInputHandler(
   new File(XML_LOCATION+xmlFile+".xml"),
   new File(XSLT_LOCATION)
);
ByteArrayOutputStream out = new ByteArrayOutputStream();

//driver is just `new Driver()`
synchronized (driver) {
  driver.reset();
  driver.setRenderer(Driver.RENDER_PDF);
  driver.setOutputStream(out);
  input.run(driver);
}

//response is HttpServletResponse
byte[] content = out.toByteArray();
response.setContentType("application/pdf");
response.setContentLength(content.length);
response.getOutputStream().write(content);
response.getOutputStream().flush();

这一切都很好。

但是,我现在有另一个 PDF 文件需要包含在输出中。这只是给.pdf我的一个完全独立的文件。有什么方法可以将此文件附加到响应、驱动程序out或其他任何内容以将其包含在对客户端的响应中?这甚至会起作用吗?或者还有什么我需要做的吗?

4

1 回答 1

2

我们还使用 FOP 生成一些文档,并且我们接受上传的文档,我们最终将所有这些文档合并为一个 PDF。

您不能只是按顺序将它们从流中发送出去,因为组合结果需要适当的 PDF 文件头、元数据等。

我们使用iText 库来组合文件,从

PdfReader reader = new PdfReader(/*String*/fileName);
reader.consolidateNamedDestinations();

我们稍后循环将每个 pdf 中的页面添加到新的组合目标 pdf 中,同时调整书签/页码。

AFAIK,FOP 不提供这种功能。

于 2012-08-24T00:44:25.597 回答