我成功使用fo.net
从xsl-fo
模板和xml数据生成单页发票pdf文档。
现在我想在循环中生成pdf文档并将它们写入Stream
,这样我就可以将文档合并到一个批处理pdf中。每当我达到一定数量的文件时,我都会创建一个新的批处理文件并继续。
我的问题:我逐个生成pdf文档并将它们附加到批处理文件而没有错误,但最终的pdf文件只显示第一个文档。文件大小相应地增加了附加数据,但这些页面未显示。如果我保存每个单独的文档,他们就可以了,每个都有一页。但是,打开生成的文件时,附加到文件流的相同文档不可见。
我尝试fo:simple-page-master
和fo:page-sequence-master
fo:repeatable-page-master-reference
,但没有成功。就我用谷歌搜索而言,我猜fo.net
并不打算以这种方式使用。
我的问题是:有没有办法将pdf内容附加到fo.net
的现有pdf文件(或流)?或者它根本无法完成?
我想在继续实施其他解决方案之前确认一下,例如使用一些免费工具合并现有的pdf文档(我现在最好的候选人是PDFtk)。
另一个可行的解决方案可能是生成已包含多个页面的转换后的xsl-fo,但出于性能原因,我不喜欢这种方法。中间文件会很棒。我宁愿一次只保留一页内容。
也许我对这个问题的全面解决方法是错误的,我会很感激一些想法。
我的环境:.NET 4.0
,Visual Studio 2010
。
答案 0 :(得分:1)
除非您拥有非常智能的应用程序,否则连接PDF可能是错误的方法。理由:图像和字体可以在每个文档中重复,使得生成的文件非常庞大。更糟糕的是,我已经看到一个字体表打破其他字体表的应用程序,并且您只获得最终文档中附加的最后一个文档中的字符。对于一些没有您提及的限制的产品,有更好的方法。
有关如何使用一个XSL FO处理器,请参阅http://www.renderx.com/solutions/large_report_formatting.html。不确定你是否可以采纳这些想法。 RenderX可以在“追加”模式下处理XSL FO,接收并流出结果,同时保持图像和字体信息以构建适当的输出。也许你的选择有类似的模式。