Как создать PDF-файлы в Python
13 ответов
вот мой опыт после следования подсказкам на этой странице.
pyPDF не может вставлять изображения в файлы. Он может только разделяться и сливаться. (Источник: Ctrl+F через его страница документация) Это здорово, но если у вас есть изображения, которые не встроены в PDF.
pyPDF2 похоже, нет никакой дополнительной документации поверх pyPDF.
-
ReportLab очень обширен. (Userguide) однако, с немного 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 / поиск типун. Но, возможно, он был переименован из 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 с соответствующим аргументом читать-то размолвка у меня и вывод такой PDF я хотел. Если это не tiffs, вы можете преобразовать их в tiffs с помощью PIL или найти инструмент, более специфичный для вашего типа изображения (или более общий, если изображения будут разнообразными), например ReportLab, упомянутых выше.
rinohtype поддерживает встраивание изображений PDF, PNG и JPEG (изначально) и других растровых форматов (при установке подушки).
(полное раскрытие: я автор rinohtype)
fpdf хорошо работает для меня. Гораздо проще, чем ReportLab и действительно бесплатно. Работает с UTF-8.