【问题标题】:Reportlab PDF version generation problemsReportlab PDF版本生成问题
【发布时间】:2023-04-07 12:21:01
【问题描述】:

我正在使用带有 platypus 的 reportlab PDF 包来生成一些 PDF 文件。在 linux 服务器和 windows 机器上,我有相同的 python 应用程序,相同版本的 reportlab 包(虽然 python 版本略有不同 - 2.6.5 和 2.6.6)。我使用自己的字体,不依赖系统字体。最近,我注意到在这两个平台上生成的 PDF 有点不同 - 与另一个版本相比,一个版本中的某些段落垂直向上几个点。

我试图找出这些平台之间的区别,但我没有找到区别。

最后,当我比较PDF文件时,一个文件是PDF 1.3,第二个是PDF 1.4版本,所以我认为问题一定是这个。我不知道如何在reportlab 中设置PDF 版本的任何选项,请谁能指出如何设置生成的PDF 文件的正确版本,或者设置reportlab 输出的一些附加属性?

更新:

使用reportlab 2.4版:

reportlab.__version__: $Id: __init__.py 3649 2010-01-20 14:45:53Z damian $

【问题讨论】:

  • 您运行的是哪个版本的 reportlab?

标签: python pdf-generation reportlab


【解决方案1】:

您是否尝试在每个系统上使用准确的代码生成它们?我在reportlab源代码中进行了快速搜索,发现一些cmets指出,如果您使用setFillAlphasetStrokeAlpha方法,那么它将导致生成PDF 1.4而不是1.3。

编辑:

进一步看,我相当肯定这些方法是 reportlab 生成 PDF 1.4 文件的唯一原因。否则,它似乎总是默认为 1.3。据我所见,没有允许您切换版本的界面。但是,您可以很容易地修改源代码。只需搜索pdfdoc.py 并将这一行(它在reportlab 2.5 中的第85 行左右)从

PDF_VERSION_DEFAULT = (1, 3)

PDF_VERSION_DEFAULT = (1, 4)

这将强制它始终生成 PDF 1.4 文档。

希望这会有所帮助。

【讨论】:

  • 我的代码肯定是一样的,我查了好几遍。我没有使用 setFillAlpha 或 setStrokeAlpha。感谢您对 pdfdoc.py 的提示,我会看看它并让您知道。
  • 最后,我没有使用您的建议来更改 PDF 版本,但我已经检查了 PDF 中透明度的所有用法(png 文件,我现在使用其他 png 文件)。我不太确定这一点,但它现在对我有用。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 2013-03-07
  • 1970-01-01
  • 2017-03-24
  • 2017-12-05
相关资源
最近更新 更多