【问题标题】:Size of pdf generated with reportLab使用 reportLab 生成的 pdf 大小
【发布时间】:2017-03-24 06:19:29
【问题描述】:

我的 pdf 生成有问题。

当我生成 pdf 时,几分钟后当我重新启动相同的脚本以生成相同的 pdf 时,我的第一个 pdf 和第二个 pdf 之间的大小不同...

这是我的代码:

c = reportlab.pdfgen.canvas.Canvas("test.pdf")
c.showPage()
c.save()

第一个 pdf 有:1519 byte

第二个有1531字节

每当我重新启动同一个脚本并且每当我有不同的值时。 为什么?我该如何解决?

【问题讨论】:

  • 差异是由于生成的PDF文件的trailer部分内随机生成的ID
  • @acw1668,有解决办法吗?
  • @acw1668,我可以得到一个 pdf 的ID 吗?我可以在保存pdf之前设置一个特定的ID吗?
  • @acw1668,没关系,我发现我加了reportlab.rl_config.invariant = 1,非常感谢你的帮助!!!

标签: python pdf-generation reportlab


【解决方案1】:

我没有看到您的 PDF 改变大小的问题,但它的内容正在改变:

$ python make_pdf.py && md5sum test.pdf
9a1dbc5621622526b4411fb5f818246e  test.pdf
$ python make_pdf.py && md5sum test.pdf
b4c3ef4661c2a0f7d5c458757ac8a891  test.pdf
$

根据您的评论提示,设置 invariant option 即可解决此问题。

import reportlab.pdfgen.canvas
import reportlab.rl_config

reportlab.rl_config.invariant = 1
c = reportlab.pdfgen.canvas.Canvas("test.pdf")
c.showPage()
c.save()

现在内容没有改变,因为 PDF 没有获得生成的 id,并且时间戳设置为 UTC 2000 年 1 月 1 日 0:00。

$ python make_pdf.py && md5sum test.pdf
4a0ecf533e69fc2a91cda0a055cbec58  test.pdf
$ python make_pdf.py && md5sum test.pdf
4a0ecf533e69fc2a91cda0a055cbec58  test.pdf
$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多