Обратите внимание, что pypdf только вырезает / вставляет / и т. Д. Существующее содержимое PDF - вы не можете добавлять текст или изображения в PDF.
drevicko
3
pyPDF2 не для создания новых документов PDF, 4cs
michelek
160
Вот мой опыт после следования подсказкам на этой странице.
pyPDF не может вставлять изображения в файлы. Это может только разделить и объединить. (Источник: Ctrl + F на странице документации ). Это здорово, но нет, если у вас есть изображения, которые еще не встроены в PDF.
У pyPDF2 , похоже, нет никакой дополнительной документации поверх pyPDF.
ReportLab очень обширный. ( Руководство пользователя ) Однако, с небольшим количеством Ctrl + F и просмотром его источника, я получил это:
from reportlab.pdfgen import canvasfrom reportlab.lib.units import inch, cm
c = canvas.Canvas('ex.pdf')
c.drawImage('ar.jpg',0,0,10*cm,10*cm)
c.showPage()
c.save()
Все, что мне нужно, - это поместить несколько изображений в PDF, чтобы я мог проверить их внешний вид и распечатать их. Вышесказанного достаточно для достижения этой цели.
ReportLab - это здорово, но было бы полезно включить helloworlds, подобные приведенным выше, в свою документацию.
Вы можете попробовать это (Python-for-PDF-Generation) или попробуйте PyQt , который поддерживает печать в PDF.
Python для генерации PDF
Переносимый формат документов (PDF) позволяет создавать документы, которые выглядят одинаково на любой платформе. Однако иногда документ PDF необходимо генерировать динамически, и это может быть довольно сложной задачей. К счастью, есть библиотеки, которые могут помочь. В этой статье рассматривается один из них для Python.
Вот решение, которое работает только со стандартными пакетами. matplotlibимеет PDF-файл для сохранения рисунков в PDF. Вы можете создать фигуры с сюжетами, где каждый субплот является одним из ваших изображений. У вас есть полная свобода связываться с фигурой: добавление заголовков, игра с позицией и т. Д. Как только ваша фигура будет готова, сохраните ее в PDF. Каждый вызов savefigсоздаст еще одну страницу PDF.
Пример ниже показывает 2 изображения рядом, на странице 1 и странице 2.
from matplotlib.backends.backend_pdf importPdfPagesimport matplotlib.pyplot as pltfrom scipy.misc import imreadimport osimport numpy as np
files =["Column0_Line16.jpg","Column0_Line47.jpg"]def plotImage(f):
folder ="C:/temp/"
im = imread(os.path.join(folder, f)).astype(np.float32)/255
plt.imshow(im)
a = plt.gca()
a.get_xaxis().set_visible(False)# We don't need axis ticks
a.get_yaxis().set_visible(False)
pp =PdfPages("c:/temp/page1.pdf")
plt.subplot(121)
plotImage(files[0])
plt.subplot(122)
plotImage(files[1])
pp.savefig(plt.gcf())# This generates page 1
pp.savefig(plt.gcf())# This generates page 2
pp.close()
в моем тесте код генерирует одну страницу с 2 изображениями
конструктор
Обновленную версию кода можно найти по
конструктор
7
Я сделал это совсем немного в PyQt, и он работает очень хорошо. Qt имеет обширную поддержку изображений, шрифтов, стилей и т. Д., И все они могут быть записаны в документы PDF.
Вау, Qt выглядит потрясающе. Они говорят, что поддерживают 15 платформ, вкл. Windows, Mac OS X, Linux, Android, iOS, Windows RT, а также эти операционные системы реального времени - INTEGRITY QNX VxWorks qt.io/qt-framework . И так как я фанат Python, мне нравится «PyQt сочетает в себе все преимущества Qt и Python. Программист обладает всей мощью Qt, но может использовать его с простотой Python». Riverbankcomputing.co.uk / программное обеспечение / pyqt / вступление
AnneTheAgile
7
Я считаю, что matplotlib имеет возможность сериализации графики, текста и других объектов в PDF-документ.
Да, ты можешь. Этот SO ответ содержит несколько хороших ссылок о том, как это сделать.
drevicko
7
fpdf это тоже питон (тоже). И часто используется. Смотрите PyPI / pip search. Но, возможно, он был переименован из pyfpdf в fpdf. Из функций: поддержка PNG, GIF и JPG (включая прозрачность и альфа-канал)
Вся путаница с именами действительно жаль. Этот ответ и комментарий @WojciechKaczmarek действительно заслуживают большего количества голосов и внимания. PyFPDF - это порт Python часто используемой библиотеки PDF, изначально написанный на PHP.
Идеограмма
6
Я использую rst2pdf для создания PDF-файла, так как я больше знаком с RST, чем с HTML. Он поддерживает встраивание практически любого вида растровых или векторных изображений.
Это требует reportlab , но я обнаружил, что reportlab не так прост в использовании (по крайней мере, для меня).
Это зависит от того, в каком формате находятся ваши файлы изображений, но для работающего здесь проекта я использовал инструмент tiff2pdf в LibTIFF с RemoteSensing.org . По сути, просто использовал подпроцесс для вызова tiff2pdf.exe с соответствующим аргументом, чтобы прочитать тот тип tiff, который у меня был, и вывести нужный мне pdf. Если они не TIFF, вы, вероятно, можете преобразовать их в TIFF, используя PIL, или, возможно, найти инструмент, более специфичный для вашего типа изображения (или более общий, если изображения будут разнообразными), как ReportLab, упомянутый выше.
Ссылка / Описание : fpdf.org FPDF - это класс PHP, который позволяет генерировать PDF-файлы на чистом PHP, то есть без использования библиотеки PDFlib. F от FPDF означает бесплатно: вы можете использовать его для любого вида использования и изменять его в соответствии со своими потребностями. У FPDF есть и другие преимущества: функции высокого уровня. Вот список его основных функций: выбор единицы измерения, формата страницы и полей, управление верхним и нижним колонтитулами страницы, автоматический разрыв страницы, автоматический разрыв строки и выравнивание текста, поддержка изображений (JPEG, PNG и GIF), цвета, ссылки, TrueType, Type1 и поддержка кодирования, Сжатие страниц
AnneTheAgile
12
Не очень актуально, учитывая вопрос о Python, а не PHP
KingRadical
1
почему все это понижение? fpdf доступен также для python. pip install fpdf works
user1981924
1
fpdf мог начаться с php. Но есть порт Python, который работает очень хорошо. Поэтому я думаю, что это очень актуальный ответ, который заслуживает больше голосов за, чем за. (Я не уверен в ситуации, когда этот ответ был первоначально опубликован)
Sumudu
3
rinohtype поддерживает встраивание изображений PDF, PNG и JPEG (изначально) и других растровых форматов (если установлена Pillow).
Привет! Поправьте меня, если я ошибаюсь, но кажется, что это довольно мощный инструмент, и в отличие от многих, многие другие, перечисленные здесь, не являются оболочкой python для активной библиотеки php / ruby / perl / pyqt4 / other crap.
Mikaelblomkvistsson
3
Если вы знакомы с LaTex, возможно, вы захотите рассмотреть pylatex
Одним из преимуществ pylatex является то, что легко контролировать качество изображения. Изображения в вашем pdf будут того же качества, что и исходные изображения. При использовании reportlab я обнаружил, что изображения автоматически сжимаются и качество изображения снижается.
Недостатком pylatex является то, что, поскольку он основан на LaTex, может быть трудно разместить изображения именно там, где вы хотите на странице. Однако я обнаружил, что использование аргумента position в классе Figure, а иногда и в Subfigure дает достаточно хорошие результаты.
Пример кода для создания PDF с одним изображением:
Помимо установки pylatex (pip install pylatex), вам необходимо установить LaTex. Для Ubuntu и других систем Debian вы можете запустить sudo apt-get install texlive-full. Если вы используете Windows, я бы порекомендовал MixTex
py
[language or tag] some_keyword
как в[python] PDF
или[python] PDF image
Ответы:
Я предлагаю pyPdf . Это работает действительно хорошо. Я также написал пост в блоге некоторое время назад, вы можете найти его здесь .
источник
Вот мой опыт после следования подсказкам на этой странице.
pyPDF не может вставлять изображения в файлы. Это может только разделить и объединить. (Источник: Ctrl + F на странице документации ). Это здорово, но нет, если у вас есть изображения, которые еще не встроены в PDF.
У pyPDF2 , похоже, нет никакой дополнительной документации поверх pyPDF.
ReportLab очень обширный. ( Руководство пользователя ) Однако, с небольшим количеством Ctrl + F и просмотром его источника, я получил это:
Затем попробуйте это в командной строке Python:
Все, что мне нужно, - это поместить несколько изображений в PDF, чтобы я мог проверить их внешний вид и распечатать их. Вышесказанного достаточно для достижения этой цели.
ReportLab - это здорово, но было бы полезно включить helloworlds, подобные приведенным выше, в свою документацию.
источник
Я предлагаю Pdfkit . ( руководство по установке )
Он создает PDF из HTML-файлов. Я выбрал его для создания PDF за 2 шага из моего стека Python Pyramid:
pdfkit.from_string(...)
метода путем передачи рендеринга HTML в качестве параметраТаким образом, вы получите PDF документ с поддержкой стилей и изображений.
Вы можете установить его следующим образом:
используя пункт
pip install pdfkit
источник
Вы можете попробовать это (Python-for-PDF-Generation) или попробуйте PyQt , который поддерживает печать в PDF.
Python для генерации PDF
Переносимый формат документов (PDF) позволяет создавать документы, которые выглядят одинаково на любой платформе. Однако иногда документ PDF необходимо генерировать динамически, и это может быть довольно сложной задачей. К счастью, есть библиотеки, которые могут помочь. В этой статье рассматривается один из них для Python.
Узнайте больше на http://www.devshed.com/c/a/Python/Python-for-PDF-Generation/#whoCFCPh3TAks368.99
источник
Вот решение, которое работает только со стандартными пакетами.
matplotlib
имеет PDF-файл для сохранения рисунков в PDF. Вы можете создать фигуры с сюжетами, где каждый субплот является одним из ваших изображений. У вас есть полная свобода связываться с фигурой: добавление заголовков, игра с позицией и т. Д. Как только ваша фигура будет готова, сохраните ее в PDF. Каждый вызовsavefig
создаст еще одну страницу PDF.Пример ниже показывает 2 изображения рядом, на странице 1 и странице 2.
источник
Я сделал это совсем немного в PyQt, и он работает очень хорошо. Qt имеет обширную поддержку изображений, шрифтов, стилей и т. Д., И все они могут быть записаны в документы PDF.
источник
Я считаю, что matplotlib имеет возможность сериализации графики, текста и других объектов в PDF-документ.
источник
fpdf это тоже питон (тоже). И часто используется. Смотрите PyPI / pip search. Но, возможно, он был переименован из pyfpdf в fpdf. Из функций: поддержка PNG, GIF и JPG (включая прозрачность и альфа-канал)
источник
Я использую rst2pdf для создания PDF-файла, так как я больше знаком с RST, чем с HTML. Он поддерживает встраивание практически любого вида растровых или векторных изображений.
Это требует reportlab , но я обнаружил, что reportlab не так прост в использовании (по крайней мере, для меня).
источник
Вы можете попробовать xhtml2pdf http://flask.pocoo.org/snippets/68/
источник
Это зависит от того, в каком формате находятся ваши файлы изображений, но для работающего здесь проекта я использовал инструмент tiff2pdf в LibTIFF с RemoteSensing.org . По сути, просто использовал подпроцесс для вызова tiff2pdf.exe с соответствующим аргументом, чтобы прочитать тот тип tiff, который у меня был, и вывести нужный мне pdf. Если они не TIFF, вы, вероятно, можете преобразовать их в TIFF, используя PIL, или, возможно, найти инструмент, более специфичный для вашего типа изображения (или более общий, если изображения будут разнообразными), как ReportLab, упомянутый выше.
источник
у меня хорошо работает fpdf. Гораздо проще, чем ReportLab и действительно бесплатно. Работает с UTF-8.
источник
rinohtype поддерживает встраивание изображений PDF, PNG и JPEG (изначально) и других растровых форматов (если установлена Pillow).
(Полное раскрытие: я автор rinohtype)
источник
Если вы знакомы с LaTex, возможно, вы захотите рассмотреть pylatex
Одним из преимуществ pylatex является то, что легко контролировать качество изображения. Изображения в вашем pdf будут того же качества, что и исходные изображения. При использовании reportlab я обнаружил, что изображения автоматически сжимаются и качество изображения снижается.
Недостатком pylatex является то, что, поскольку он основан на LaTex, может быть трудно разместить изображения именно там, где вы хотите на странице. Однако я обнаружил, что использование аргумента position в классе Figure, а иногда и в Subfigure дает достаточно хорошие результаты.
Пример кода для создания PDF с одним изображением:
Помимо установки pylatex (pip install pylatex), вам необходимо установить LaTex. Для Ubuntu и других систем Debian вы можете запустить
sudo apt-get install texlive-full
. Если вы используете Windows, я бы порекомендовал MixTexисточник