2013-12-20 4 views
3

Я ищу для создания PDF-файлов из приложения Python. Они начинаются сравнительно просто, но некоторые из них могут стать более сложными (по сути, буквенные документы, но будут включать водяные знаки, например, позже)создать pdf от python

Я работал в необработанном постскрипте до и предоставляю возможность генерировать правильные заголовки и т. Д. И файл в конце Я хочу избежать использования сложных библиотек, которые могут не делать полностью то, что я хочу. У некоторых, похоже, есть битрота и больше не поддерживается (pypdf и pypdf2). Особенно, когда я знаю, что PDF/Postscript может делать именно то, что мне нужно. PDF-контент действительно не такой сложный.

Я могу сгенерировать EPS (Encapsulated postscript) отлично, просто записав соответствующие текстовые заголовки в файл и мой код постскриптума. Но, проверяя PDF, есть двоичный заголовок lil. Я не уверен, как сгенерировать.

Я мог бы сгенерировать EPS и преобразовать его. Я не слишком доволен этим, поскольку производственная среда - это сервер Windows 2008 (Dev - Ubuntu 12.04), и что-то делает, и преобразование кажется очень глупым.

Кто-нибудь сделал это раньше? Я педантичен, не желая использовать библиотеку?

+0

Я уверен, вы может найти спецификацию для документов PDF ... но это будет кошмар, чтобы сделать с нуля ... почему вы против использования библиотеки? (из грубого кто-то делал это раньше ... они создали библиотеку для этого: P) –

+0

Возражение частично зависит от адских проблем, в зависимости от библиотеки. Разработка на Ubuntu 12.04, но вам нужно будет перейти к тестированию на Windows для развертывания и производства на Win Server 2008. Например, я пытаюсь использовать PYX, который сильно использует библиотеки LaTex, и просто потребовал, чтобы я захватил шрифты LaTex и Type1, у которых есть собственный длинный список зависимостей от моего машинного суммирования до 200 миллионов дополнительных. Он чувствует себя очень ОТТ, но я мог бы неправильно интерпретировать требуемую сложность. (Спасибо за быстрый ответ btw) – Jetblackstar

+0

Я думаю, что reportlab просто работает с easy_install (или, может быть, с пипсом) ... но это ни здесь, ни там ... просто справедливое предупреждение о том, что делать это с нуля будет свой особый вид ада (allthough вероятно, интересный опыт обучения) –

ответ

3

borrowed from ask.yahoo

Файл PDF начинается с "% PDF-1.1", если это версия 1.1 типа PDF-файл. Вы можете читать файлы PDF нормально, когда у них нет двоичных данных, хранящихся в них, и вы даже можете сделать это с помощью Notepad, если вам не нужно хранить двоичный объект, такой как растровое изображение Paint.

Но после просмотра «% PDF-1.1» вы игнорируете, что после этого (Adobe Reader тоже), и идите прямо в конец файла туда, где есть строка, которая говорит «%% EOF». Это всегда последняя вещь в файле; и если вы знаете, что всего несколько символов перед этим местом в файле есть слово «startxref», за которым следует число. Этот номер сообщает программе читателя, где нужно искать в файле, чтобы найти начало списка элементов, описывающих структуру файла. Эти элементы в списке могут быть объектами страницы, объектами словаря или потоковыми объектами (такими как двоичные данные растрового изображения), и каждый из них имеет «obj» и «endobj», обозначая, где начинается и заканчивается его описание.

Для простых простых PDF-файлов вы можете ввести текст так же, как и с помощью Блокнота, чтобы создать рабочий PDF-файл, который Adobe Reader и другие программы просмотра PDF могли читать и отображать правильно.

Выполнение чего-то подобного - это вызов даже для простого файла, и вам действительно нужно знать, что вы делаете, чтобы получить любые двоичные данные в файл, где он должен идти; но для символьных данных вы можете просто ввести его. И все команды, используемые в PDF, представлены в виде строк, которые вы можете ввести. Самая сложная часть - это вычисление тех чисел, которые дают смещения файла для элементы в файле (например, число, следующее за «startxref»).

Если способ, которым выкладывается формат файла, интригует вас, прочитайте руководство по PDF, в котором рассказывается вся история. http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf

но на самом деле вы, вероятно, следует просто использовать библиотеку

Благодаря @LukasGraf для обеспечения этой ссылке http://www.gnupdf.org/Introduction_to_PDF, которая показывает, как создать простой привет мир PDF с нуля

+2

Если вы заимствовали какой-то текст из другого места, вы должны указать ссылку на источник, а также простую атрибуцию. – Hannele

+0

там ya go :) вы правы из грубого ... Я хотел ... но потом я застрял, пытаясь найти правильную ссылку для спецификации –

+0

Я собираюсь дать это Джорану, потому что он дал мне пользу сомнения в попытках сделать это вручную. Также ссылка на отличные документы, которые я еще не нашел в PDF. Это говорит о том, что я собираюсь попытаться капитулировать и использовать одну из доступных библиотек. Многое ругань может произойти, когда я сражаюсь с ними. Однако, если я в конечном итоге использую Report Lab, я вернусь и запомню это здесь. Большое спасибо и всем! – Jetblackstar

4

До тех пор, пока вы работаете в Python 2.7, Reportlab кажется лучшим решением на данный момент. Он довольно полнофункциональный и может быть немного сложным в работе, в зависимости от того, что вы делаете с ним, но поскольку вы, похоже, знакомы с внутренними документами PDF, мы надеемся, что кривая обучения не будет слишком крутой.

+0

он конкретно говорит, что он не хочет использовать библиотеку ... но да. Лаборатория отчетов - лучшая ставка, если вы делаете больше, чем простой текст. –

+0

. Я попробую PYX и Report lab, если я в конечном итоге использую отчетную лабораторию. это здесь. – Jetblackstar

Смежные вопросы