如何用Python创buildPDF文件

我正在从一个项目,从用户采取一些图像,然后创build一个包含所有这些图像的PDF文件。

有什么办法或任何工具在Python中做到这一点? 例如,要从image1 + image 2 + image 3 – > PDF文件创buildPDF文件(或eps,ps)?

我build议pyPdf 。 它工作真的很好。 前段时间我还写了一篇博文,你可以在这里find。

按照此页面上的提示,这是我的经验。

  1. pyPDF不能将图像embedded到文件中。 它只能分裂和合并。 (来源:按Ctrl + F通过它的文档页 )这是伟大的,但不是如果你有图像还没有embedded在PDF中。

  2. pyPDF2在pyPDF上似乎没有任何额外的文档。

  3. ReportLab非常广泛。 ( 用户指南 )但是,通过一些Ctrl + F,并通过其来源,我得到这个:

    • 首先, 下载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。

我build议Pdfkit 。

它从HTML文件创buildPDF。 我select它从我的Python金字塔堆栈中分两步创buildpdf:

  1. 用mako模板渲染服务器端的样式和标记,你想为你的pdf文件
  2. 通过传递呈现的html作为参数来执行pdfkit.from_string(...)方法

这样你就可以得到一个支持样式和图像的pdf文档。

您可以按如下方式安装它:

  • 使用点子

    pip install pdfkit

  • 你还需要安装wkhtmltopdf( 在Ubuntu上 )。

你可以试试这个 (Python-for-PDF-Generation),或者你可以尝试PyQt ,它支持打印到PDF。

用于PDF生成的Python

可移植文档格式(PDF)可让您在每个平台上创build完全一样的文档。 有时候需要dynamic生成一个PDF文档,这可能是一个很大的挑战。 幸运的是,有些图书馆可以提供帮助。 本文将探讨Python的其中之一。

阅读更多在http://www.devshed.com/c/a/Python/Python-for-PDF-Generation/#whoCFCPh3TAks368.99

我在PyQt中做了相当多的工作,效果很好。 Qt对图像,字体,样式等有广泛的支持,所有这些都可以写成PDF文档。

我使用rst2pdf来创buildPDF文件,因为我比RST更熟悉RST。 它支持embedded几乎任何types的光栅或vector图像。

它需要reportlab ,但是我发现reportlab并不是那么简单(至less对我来说)。

我相信,matplotlib能够将graphics,文本和其他对象序列化为PDF文档。

fpdf是python(太)。 并经常使用。 请参阅PyPI / pipsearch。 但也许它是从pyfpdf改名为fpdf。 从function:PNG,GIF和JPG支持(包括透明度和alpha通道)

这是一个只适用于标准软件包的解决scheme。 matplotlib有一个PDF后端将数据保存为PDF。 您可以创build一个带有子图的graphics,其中每个子图都是您的图像之一。 你有充分的自由来混淆数字:添加标题,玩位置等。一旦你的数字完成,保存为PDF。 每次调用savefig都会创build另一个PDF页面。

下面的示例在第1页和第2页上并排绘制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() 

这取决于你的图像文件格式是什么,但是对于这里的项目,我使用了RemoteSensing.org的 LibTIFF中的tiff2pdf工具。 基本上只是使用subprocess调用tiff2pdf.exe与适当的参数来阅读我的tiff的种类,并输出我想要的types的PDF。 如果他们不是tiffs,那么可以使用PIL将它们转换为tiff,或者可以像上面提到的ReportLab一样,find一个更专用于图像types的工具(或者更通用的,如果图像将是多样的)。

你可以尝试xhtml2pdf http://flask.pocoo.org/snippets/68/

rinohtype支持embeddedPDF,PNG和JPEG图像(本地)和其他位图格式(安装Pillow时)。

(全面披露:我是rinohtype的作者)

fpdf适合我。 比ReportLab简单多了,真的很自由。 适用于UTF-8。