首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PDF与Sejda合并为流输出失败

将PDF与Sejda合并为流输出失败
EN

Stack Overflow用户
提问于 2015-08-12 09:32:41
回答 1查看 161关注 0票数 0

使用Sejda1.0.0.RELEASE,我基本上遵循了用于拆分PDF的教程,但是尝试了合并(org.sejda.impl.itext5.MergeTaskMergeParameters,.)。所有的FileTaskOutput都很好用

代码语言:javascript
复制
parameters.setOutput(new FileTaskOutput(new File("/some/path/merged.pdf")));

但是,我无法正确地将它更改为StreamTaskOutput

代码语言:javascript
复制
OutputStream os = new FileOutputStream("/some/path/merged.pdf");
parameters.setOutput(new StreamTaskOutput(os));
parameters.setOutputName("merged.pdf");

没有报告错误,但是结果文件不能被Preview.app读取,并且比上面保存的文件小约31 kB (在~1.2MB的总结果中)。

我的第一个想法是:流没有被正确关闭!所以我将os.close();添加到CompletionListener的末尾,仍然是相同的问题。

备注:

  • 我需要使用StreamTaskOutput的原因是这个合并逻辑将存在于一个web应用程序中,合并的PDF将直接通过HTTP发送。我可以存储临时文件并为其提供服务,但这是一个黑客。
  • 由于许可问题,我不能使用任务的iText 5版本。

编辑

原来,原因是StreamTaskOutput将结果压缩到一个ZIP文件中!OutputWriterHelper.copyToStream()是罪魁祸首。如果我将merged.pdf重命名为merged.zip,它是一个有效的ZIP文件,其中包含一个完全有效的merged.pdf文件!

有谁(图书馆的亲爱的作者)能评论一下为什么会发生这种情况吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-13 07:07:38

这样做的想法是,当任务消耗产生多个输出文档的MultipleOutputTaskParameters时,StreamTaskOutput必须对它们进行分组,以便能够将它们全部写入流输出。不幸的是,Sejda目前对SingleOutputTaskParameters应用了相同的逻辑,这就是您的问题所在。我们可以在Sejda2.0中修复这个问题,因为在SingleOutputTaskParameters的情况下直接流出文档是更有意义的。对于Sejda1.x,我不知道如何解决与现有行为兼容的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31961299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档