Reportlab PDF проблемы генерации версии - PullRequest
2 голосов
/ 03 ноября 2010

Я использую пакет reportlab PDF с утконосом для создания некоторых файлов PDF.На Linux-сервере и на Windows Box у меня есть одно и то же приложение Python, та же версия пакета reportlab (хотя немного отличная версия Python - 2.6.5 против 2.6.6).Я использую свои собственные шрифты, я не зависим от системных шрифтов.В последнее время я заметил, что PDF, сгенерированный на этих двух платформах, немного отличается - некоторые абзацы на несколько пунктов вертикально вверх в одной версии по сравнению с другой версией.

Я пытался выяснить, в чем разница междуэти формы, но мне не удалось найти разницу.

Наконец, когда я сравниваю файлы PDF, один файл - это PDF 1.3, а второй - версия PDF 1.4, так что я думаю, что проблема должна быть в этом.Я не знаю какой-либо опции, как установить версию PDF в reportlab, пожалуйста, кто-нибудь может указать мне, как установить правильную версию сгенерированного файла PDF, или, возможно, установить некоторые дополнительные свойства вывода reportlab?

с использованием версии отчета 2.4:

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

1 Ответ

1 голос
/ 04 ноября 2010

Вы пытаетесь сгенерировать их с точным кодом в каждой системе? Я быстро выполнил поиск в исходном коде reportlab и нашел несколько комментариев, в которых говорилось, что если вы используете методы setFillAlpha или setStrokeAlpha, то это приведет к созданию PDF 1.4 вместо 1.3.

Edit:

Глядя дальше, я вполне уверен, что эти методы - единственная причина, по которой reportlab может создать файл PDF 1.4. Кажется, всегда по умолчанию 1,3 в противном случае. Насколько я вижу, нет интерфейса, который позволял бы вам переключать версии. Однако вы можете довольно легко изменить исходный код. Просто найдите pdfdoc.py и измените эту строку (это около строки 85 в reportlab 2.5) с

PDF_VERSION_DEFAULT = (1, 3)

до

PDF_VERSION_DEFAULT = (1, 4)

Это заставит его всегда генерировать документы PDF 1.4.

Надеюсь, это поможет.

...