2012-08-23 74 views
0

我已经被创建和渲染为送过来一个servlet一个PDF的XML文件:追加完整的PDF文件,PDF FOP

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或其他任何可将其包含在对客户端的响应中的方法?那会工作吗?或者还有什么我需要做的?

回答

1

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

你不能只给他们按顺序出流,因为综合作用的结果,需要一个适当的PDF文件头,元数据等

我们使用iText library要合并文件,出发与

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

我们稍后通过将每个pdf中的页面添加到新的合并目标pdf中,随时调整书签/页码。

AFAIK,FOP不提供这种功能。