如何在Python中创建PDF文件

Ste*_* T. 156 python pdf

我正在开发一个项目,它从用户那里获取一些图像,然后创建一个包含所有这些图像的PDF文件.

在Python中有没有办法或任何工具?例如,从image1 + image 2 + image 3 - > PDF文件创建PDF文件(或eps,ps)?

Evg*_*eev 149

以下是按照此页面提示后的经验.

  1. pyPDF无法将图像嵌入到文件中.它只能拆分和合并.(来源:Ctrl + F通过其文档页面)这很棒,但如果您的图像尚未嵌入PDF中则不行.

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

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

我只需要将一堆图像放到PDF中,这样我就可以检查它们的外观和打印方式.以上就足以实现这一目标.

ReportLab很棒,但是可以从文档中突出显示上面的helloworlds中获益.

  • 我必须说reportlab是我试过的最好的PDF生成,绝对是最完整的.但是,它也有点复杂.http://www.blog.pythonlibrary.org/2010/03/08/a-simple-step-by-step-reportlab-tutorial/ http://www.blog.pythonlibrary.org/2010/09/21/ ReportLab的桌创造桌式-PDF文件与 - 蟒/ (13认同)

Geo*_*Geo 40

我建议pyPdf.它的效果非常好.我前段时间也写了一篇博文,你可以在这里找到它.

  • 这究竟是如何被接受的答案...... (136认同)
  • 请注意,pypdf仅剪切/粘贴/等.现有的pdf内容 - 您无法将文本或图像添加到pdf. (91认同)
  • PyPDF2的当前分支位于[此处](https://github.com/mstamy2/PyPDF2). (7认同)
  • pyPDF2不适用于创建新的PDF文档4cs (3认同)

eto*_*ceb 30

我建议使用Pdfkit.(安装指南)

它从html文件创建pdf.我选择它从我的Python Pyramid堆栈中分2步创建pdf:

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

这样您就可以获得支持样式和图像的pdf文档.

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

  • 用pip

    pip install pdfkit

  • 您还需要安装wkhtmltopdf(在Ubuntu上).


gru*_*czy 14

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

用于PDF生成

Python可移植文档格式(PDF)允许您创建在每个平台上看起来完全相同的文档.有时,需要动态生成PDF文档,这可能是一个非常大的挑战.幸运的是,有些库可以提供帮助.本文将介绍Python的其中一个.

欲了解更多信息,请访问http://www.devshed.com/c/a/Python/Python-for-PDF-Generation/#whoCFCPh3TAks368.99

  • 链接失效了。 (2认同)

Ant*_*fer 8

这是一个仅适用于标准软件包的解决方案.matplotlib有一个PDF后端,以保存数字到PDF.您可以使用子图创建图形,其中每个子图是您的一个图像.你有充分的自由来搞乱这个数字:添加标题,玩位置等.完成你的数字后,保存为PDF.每次调用savefig都会创建另一页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()
Run Code Online (Sandbox Code Playgroud)


All*_*len 7

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

  • 哇,Qt 看起来棒极了。他们说他们支持 15 个平台,公司。Windows、Mac OS X、Linux、Android、iOS、Windows RT 以及这些实时操作系统——INTEGRITY QNX VxWorks http://www.qt.io/qt-framework/。而且,由于我是 Python 粉丝,我喜欢“PyQt 结合了 Qt 和 Python 的所有优点。程序员拥有 Qt 的所有功能,但能够以 Python 的简单性来利用它。” http://www .riverbankcomputing.co.uk/software/pyqt/intro (2认同)

And*_*rea 7

我相信matplotlib能够将图形,文本和其他对象序列化为pdf文档.


Bre*_*els 7

rinohtype支持嵌入 PDF、PNG 和 JPEG 图像(本机)和其他位图格式(安装 Pillow 时)。

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

  • 嘿!如果我错了,请纠正我,但它似乎是非常强大的工具,并且与许多其他工具不同,这里列出的许多其他工具不是古老的 php/ruby/perl/pyqt4/其他废话库的 python 包装器。 (2认同)

lar*_*sjr 7

如果您熟悉 LaTex,您可能需要考虑pylatex

pylatex 的优点之一是易于控制图像质量。pdf 中的图像将与原始图像具有相同的质量。在使用reportlab时,我遇到图像被自动压缩,图像质量下降。

pylatex 的缺点是,由于它基于 LaTex,因此很难将图像准确放置在页面上您想要的位置。但是,我发现在 Figure 类中使用 position 参数,有时在 Subfigure 中使用,可以提供足够好的结果。

使用单个图像创建 pdf 的示例代码:

from pylatex import Document, Figure

doc = Document(documentclass="article")
with doc.create(Figure(position='p')) as fig:
fig.add_image('Lenna.png')

doc.generate_pdf('test', compiler='latexmk', compiler_args=["-pdf", "-pdflatex=pdflatex"], clean_tex=True)
Run Code Online (Sandbox Code Playgroud)

除了安装pylatex(pip install pylatex),还需要安装LaTex。对于 Ubuntu 和其他 Debian 系统,您可以运行sudo apt-get install texlive-full. 如果您使用的是 Windows,我会推荐MixTex


小智 6

fpdf 对我来说效果很好。比 ReportLab 简单得多,而且完全免费。适用于 UTF-8。

  • 考虑到问题是关于 Python 而不是 PHP,相关性不是很大 (14认同)
  • fpdf 可能是从 php 开始的。但是[有一个 python](https://pyfpdf.readthedocs.io/en/latest/Tutorial/index.html) 端口工作得非常好。所以我认为这是一个非常相关的答案,值得更多的赞成票而不是反对票。(我不确定这个答案最初发布时的情况) (5认同)
  • 为什么这么多人投反对票?fpdf 也适用于 python。pip 安装 fpdf 有效 (4认同)
  • 链接/描述:http://www.fpdf.org/ FPDF 是一个 PHP 类,它允许使用纯 PHP 生成 PDF 文件,也就是说不使用 PDFlib 库。FPDF 中的 F 代表免费:您可以将其用于任何类型的用途并对其进行修改以满足您的需要。FPDF 还有其他优点:高级功能。以下是其主要功能的列表:选择度量单位、页面格式和边距、页眉和页脚管理、自动分页、自动换行和文本对齐、图像支持(JPEG、PNG 和 GIF)、颜色、链接、 TrueType、Type1 和编码支持、页面压缩 (2认同)

ism*_*nni 6

我使用rst2pdf来创建pdf文件,因为我比使用RST更熟悉RST.它支持嵌入几乎任何类型的光栅或矢量图像.

它需要reportlab,但我发现reportlab不是那么直接使用(至少对我而言).


mir*_*rek 6

fpdf是python(也是)。并经常使用。请参阅PyPI /点子搜索。但也许将其从pyfpdf重命名为fpdf。来自功能:PNG,GIF和JPG支持(包括透明度和Alpha通道)

  • 你的答案不清楚,但你肯定是 PyFPDF pfoject https://pyfpdf.readthedocs.io/en/latest/ (2认同)

小智 5

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