为有中文需求的客户提供多渠道中文技术支持.

Sun Apr 25, 2021 9:04 am

一个pdf文件,反复调用同一java逻辑,执行逻辑一模一样,先删除pdf最后一页,然后新加一页,在新添加的一页中加入两张图片(每次调用使用的图片都一样)。
反复执行时,发现最后的 pdf 越来越大。

求教!!!

vulgar.cd
 
Posts: 5
Joined: Sun Apr 25, 2021 8:57 am

Sun Apr 25, 2021 9:37 am

您好,

感谢询问。

请您在每次操作文档时,使用 PdfDocument.getFileInfo().setIncrementalUpdate(false);,使PDF不产生每次操作时额外的的增量更新。

如果您尝在试上面所提到的代码后,最后生成的PDF文件依旧比原来大许多。请您将您的完整代码、输入文件提供给我们,以供进一步研究。

提前致谢

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Sun Apr 25, 2021 9:53 am

Marcia.Zhou wrote:您好,

感谢询问。

请您在每次操作文档时,使用 PdfDocument.getFileInfo().setIncrementalUpdate(false);,使PDF不产生每次操作时额外的的增量更新。

如果您尝在试上面所提到的代码后,最后生成的PDF文件依旧比原来大许多。请您将您的完整代码、输入文件提供给我们,以供进一步研究。

提前致谢

Sincerely,
Marcia
E-iceblue support team


没有用呀,因为PdfDocument对象每次请求都是新 new 出来的,只是该次请求中使用的 pdf 文件是 上一次请求的 PdfDocument 对象产生的。
因此两次请求中的 PdfDocument不是同一个对象,所以设置setIncrementalUpdate(false)也是没有用的。

vulgar.cd
 
Posts: 5
Joined: Sun Apr 25, 2021 8:57 am

Sun Apr 25, 2021 9:57 am

您好,

感谢回复。

为了帮助我们进一步调查您的问题,请您将您完整的测试代码以及输入文件提供给我们以供参考。 提前致谢!

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Sun Apr 25, 2021 10:31 am

Marcia.Zhou wrote:您好,

感谢回复。

为了帮助我们进一步调查您的问题,请您将您完整的测试代码以及输入文件提供给我们以供参考。 提前致谢!

Sincerely,
Marcia
E-iceblue support team


代码太多了,不好给呀,暂时没时间写demo。
总之每次操作统一pdf文件之后,文件增加 0.44M和0.45M,如此反复!

vulgar.cd
 
Posts: 5
Joined: Sun Apr 25, 2021 8:57 am

Sun Apr 25, 2021 11:33 am

vulgar.cd wrote:
Marcia.Zhou wrote:您好,

感谢回复。

为了帮助我们进一步调查您的问题,请您将您完整的测试代码以及输入文件提供给我们以供参考。 提前致谢!

Sincerely,
Marcia
E-iceblue support team


代码太多了,不好给呀,暂时没时间写demo。
总之每次操作统一pdf文件之后,文件增加 0.44M和0.45M,如此反复!


请问这个帖子里面说的水印是咋回事勒?https://www.e-iceblue.com/forum/file-size-constantly-increasing-t9983.html
PS:我用的是 free 版本

vulgar.cd
 
Posts: 5
Joined: Sun Apr 25, 2021 8:57 am

Sun Apr 25, 2021 12:02 pm

vulgar.cd wrote:
vulgar.cd wrote:
Marcia.Zhou wrote:您好,

感谢回复。

为了帮助我们进一步调查您的问题,请您将您完整的测试代码以及输入文件提供给我们以供参考。 提前致谢!

Sincerely,
Marcia
E-iceblue support team


代码太多了,不好给呀,暂时没时间写demo。
总之每次操作统一pdf文件之后,文件增加 0.44M和0.45M,如此反复!


请问这个帖子里面说的水印是咋回事勒?https://www.e-iceblue.com/forum/file-size-constantly-increasing-t9983.html
PS:我用的是 free 版本


我貌似解决了。
Code: Select all
private InputStream composePDF(InputStream pdfIs, InputStream frontIs, InputStream backIs) {
   
    final PdfDocument doc = new PdfDocument(pdfIs);
   
    doc.getFileInfo().setIncrementalUpdate(false);
   
    doc.setCompressionLevel(PdfCompressionLevel.Best);
    ... ...

PdfDocument 不能在循环外声明,然后在循环内不停的 loadFromStream,我把代码调整到循环内声明,解决了该问题。
虽然不知道为啥,总算解决了。
希望您能告知一二。 :D

vulgar.cd
 
Posts: 5
Joined: Sun Apr 25, 2021 8:57 am

Mon Apr 26, 2021 1:35 am

您好,

感谢反馈。

请注意,在循环外声明PdfDocument后, 再在循环内不停的 loadFromStream时。虽然每一次循环都加载了新文档,但是setIncrementalUpdate(false)只会对第一次加载的文档起作用。因为后面的会被判定为同一文档,即循环外声明文档,因此生成文件会越来越大。 所以需要您在循环内声明PdfDocument并每一次都使用setIncrementalUpdate(false),使每一次生成的PDF都不产生增量更新,从而保证PDF文档可以维持原来大小。

总之,很高兴听到您的问题解决了。您后续还有任何关于产品的问题,请随时联系。

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Return to 中文技术支持