如何合并用fo.net生成的pdf文档(xsl-fo)

时间:2013-10-01 12:27:33

标签: pdf-generation xsl-fo

我成功使用fo.netxsl-fo模板和xml数据生成单页发票pdf文档。 现在我想在循环中生成pdf文档并将它们写入Stream,这样我就可以将文档合并到一个批处理pdf中。每当我达到一定数量的文件时,我都会创建一个新的批处理文件并继续。

我的问题:我逐个生成pdf文档并将它们附加到批处理文件而没有错误,但最终的pdf文件只显示第一个文档。文件大小相应地增加了附加数据,但这些页面未显示。如果我保存每个单独的文档,他们就可以了,每个都有一页。但是,打开生成的文件时,附加到文件流的相同文档不可见。

我尝试fo:simple-page-masterfo:page-sequence-master fo:repeatable-page-master-reference,但没有成功。就我用谷歌搜索而言,我猜fo.net并不打算以这种方式使用。

我的问题是:有没有办法将pdf内容附加到fo.net的现有pdf文件(或流)?或者它根本无法完成?

我想在继续实施其他解决方案之前确认一下,例如使用一些免费工具合并现有的pdf文档(我现在最好的候选人是PDFtk)。

另一个可行的解决方案可能是生成已包含多个页面的转换后的xsl-fo,但出于性能原因,我不喜欢这种方法。中间文件会很棒。我宁愿一次只保留一页内容。

也许我对这个问题的全面解决方法是错误的,我会很感激一些想法。

我的环境:.NET 4.0Visual Studio 2010

1 个答案:

答案 0 :(得分:1)

除非您拥有非常智能的应用程序,否则连接PDF可能是错误的方法。理由:图像和字体可以在每个文档中重复,使得生成的文件非常庞大。更糟糕的是,我已经看到一个字体表打破其他字体表的应用程序,并且您只获得最终文档中附加的最后一个文档中的字符。对于一些没有您提及的限制的产品,有更好的方法。

有关如何使用一个XSL FO处理器,请参阅http://www.renderx.com/solutions/large_report_formatting.html。不确定你是否可以采纳这些想法。 RenderX可以在“追加”模式下处理XSL FO,接收并流出结果,同时保持图像和字体信息以构建适当的输出。也许你的选择有类似的模式。