Reportlab PDF 版本生成问题
我正在使用reportlab这个PDF库和platypus来生成一些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 $
1 个回答
你是在每个系统上用完全一样的代码生成文件吗?我快速查了一下reportlab的源代码,发现有些注释提到,如果你使用了 setFillAlpha
或 setStrokeAlpha
这两个方法,那么生成的文件会是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文档。
希望这能帮到你。