Как создать PDF файлы в Python



Я работаю над проектом, который принимает некоторые изображения от пользователя, а затем создает PDF-файл, который содержит все эти изображения.



есть ли способ или инструмент, чтобы сделать это в Python? Например, чтобы создать PDF-файл (или eps, ps) из image1 + image 2 + image 3 -> PDF-файл?

618   13  

13 ответов:

предлагаю pyPdf. Это работает очень хорошо. Я также писал в блоге некоторое время назад, вы можете найти его здесь.

вот мой опыт после следования подсказкам на этой странице.

  1. pyPDF не может вставлять изображения в файлы. Он может только разделяться и сливаться. (Источник: Ctrl+F через его страница документация) Это здорово, но если у вас есть изображения, которые не встроены в PDF.

  2. pyPDF2 кажется, нет никакой дополнительной документации поверх pyPDF.

  3. 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:

  1. рендеринг на стороне сервера с шаблонами mako со стилем и разметкой, которые вы хотите для вас pdf-документ
  2. выполнения 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-документ.

Я использую rst2pdf чтобы создать pdf-файл, так как я больше знаком с RST, чем с HTML. Он поддерживает встраивание практически любых растровых или векторных изображений.

требует reportlab, но я нашел reportlab не так прямо вперед, чтобы использовать (по крайней мере для меня).

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

    Ничего не найдено.