Как создать PDF файлы в Python
Я работаю над проектом, который принимает некоторые изображения от пользователя, а затем создает PDF-файл, который содержит все эти изображения.
есть ли способ или инструмент, чтобы сделать это в Python? Например, чтобы создать PDF-файл (или eps, ps) из image1 + image 2 + image 3 -> PDF-файл?
13 ответов:
вот мой опыт после следования подсказкам на этой странице.
pyPDF не может вставлять изображения в файлы. Он может только разделяться и сливаться. (Источник: Ctrl+F через его страница документация) Это здорово, но если у вас есть изображения, которые не встроены в PDF.
pyPDF2 кажется, нет никакой дополнительной документации поверх pyPDF.
ReportLab очень обширен. (руководство пользователя) однако, с немного Ctrl+F и grepping через его источник, я получил это:
- первый, загрузите установщик Windows и источник
затем попробуйте это в командной строке Python:
from reportlab.pdfgen import canvas from 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, как указано выше, в свою документацию.
предлагаю Pdfkit. (установка руководство)
Он создает pdf из html-файлов. Я выбрал его для создания pdf в 2 шагах от моего пирамидного стека Python:
- рендеринг на стороне сервера с шаблонами mako со стилем и разметкой, которые вы хотите для вас pdf-документ
- выполнения
pdfkit.from_string(...)метод путем передачи отрисованного html в качестве параметратаким образом, вы получаете pdf-документ со стилем и изображениями поддерживаемый.
Вы можете установить его следующим образом :
С помощью pip
pip install pdfkit- вам также нужно будет установить wkhtmltopdf (на Ubuntu).
вы можете попробовать этой(Python-for-PDF-Generation) или вы можете попробовать PyQt, который имеет поддержку для печати в формате pdf.
Python для генерации PDF
Портативный формат документа (PDF) позволяет создавать документы, которые выглядят точно так же на каждой платформе. Иногда PDF-документ должен быть создан динамически, однако, и это может быть довольно сложной задачей. К счастью, есть библиотеки, которые могут помочь. Эта статья изучает один из них для Python.подробнее на http://www.devshed.com/c/a/Python/Python-for-PDF-Generation/#whoCFCPh3TAks368.99
Я сделал это совсем немного в PyQt, и это работает очень хорошо. Qt имеет обширную поддержку изображений, шрифтов, стилей и т. д., И все они могут быть записаны в pdf-документы.
Я считаю, что matplotlib имеет возможность сериализовать графику, текст и другие объекты в pdf-документ.
fpdf-это python (тоже). И часто используется. См. раздел PyPI / pip search. Но, возможно, он был переименован из pyfpdf в fpdf. Из особенностей: Поддержка PNG, GIF и JPG (включая прозрачность и альфа-канал)
вот решение, которое работает только со стандартными пакетами.
matplotlibимеет бэкэнд PDF для сохранения фигур в PDF. Вы можете создать фигуры с подзаголовками, где каждый подзаголовок является одним из ваших изображений. У вас есть полная свобода возиться с фигурой: добавлять заголовки, играть с позицией и т. д. После того, как ваша фигура будет сделана, сохраните в PDF. Каждый звонок наsavefigсоздаст еще одну страницу PDF.пример ниже строит 2 изображения бок о бок, на странице 1 и странице 2.
from matplotlib.backends.backend_pdf import PdfPages import matplotlib.pyplot as plt from scipy.misc import imread import os import 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()
Это зависит от того, в каком формате находятся ваши файлы изображений, но для проекта здесь на работе я использовал инструмент tiff2pdf в LibTIFF от RemoteSensing.org. В основном просто используется подпроцесс для вызова tiff2pdf.exe с соответствующим аргументом, чтобы прочитать вид tiff, который у меня был, и вывести вид pdf, который я хотел. Если это не tiffs, вы можете преобразовать их в tiffs с помощью PIL или, возможно, найти инструмент, более специфичный для вашего типа изображения (или более общий, если изображения будут разнообразными), например ReportLab, упомянутых выше.
вы можете попробовать xhtml2pdf http://flask.pocoo.org/snippets/68/
rinohtype поддерживает встраивание изображений PDF, PNG и JPEG (изначально) и других растровых форматов (при установке подушки).
(полное раскрытие: я автор rinohtype)
fpdf хорошо работает для меня. Гораздо проще, чем ReportLab и действительно бесплатно. Работает с UTF-8.
Comments