如何在Python中创建PDF文件
我正在做一个项目,从用户那里获取一些图像,然后创建一个包含所有这些图像的PDF文件 在Python中有什么方法或工具可以做到这一点吗?例如,要从image1+Image2+Image3->PDF文件创建PDF文件(或eps,ps)?您可以尝试(Python用于生成PDF),也可以尝试,它支持打印为PDF。如何在Python中创建PDF文件,python,pdf,Python,Pdf,我正在做一个项目,从用户那里获取一些图像,然后创建一个包含所有这些图像的PDF文件 在Python中有什么方法或工具可以做到这一点吗?例如,要从image1+Image2+Image3->PDF文件创建PDF文件(或eps,ps)?您可以尝试(Python用于生成PDF),也可以尝试,它支持打印为PDF。 用于PDF生成的Python 可移植文档格式(PDF)允许您创建在每个平台上看起来完全相同的文档。然而,有时需要动态生成PDF文档,这可能是一个相当大的挑战。幸运的是,有些库可以提供帮助。本
用于PDF生成的Python
可移植文档格式(PDF)允许您创建在每个平台上看起来完全相同的文档。然而,有时需要动态生成PDF文档,这可能是一个相当大的挑战。幸运的是,有些库可以提供帮助。本文将研究Python的一个例子
我建议在上阅读更多内容。它真的很好用。不久前我还写了一篇博客文章,你可以找到它。这取决于你的图像文件的格式,但对于我工作中的一个项目,我使用了LibTIFF中的tiff2pdf工具。
基本上只是使用子流程调用tiff2pdf.exe,并使用适当的参数来读取我拥有的tiff类型并输出我想要的pdf类型。如果它们不是TIFF,您可能会使用PIL将它们转换为TIFF,或者可能会找到一个更适合您的图像类型的工具(或者更通用的工具,如果图像多样性的话),如上面提到的ReportLab。我在PyQt中做了很多这方面的工作,效果非常好。Qt广泛支持图像、字体、样式等,所有这些都可以写入pdf文档。我相信matplotlib能够将图形、文本和其他对象序列化为pdf文档。以下是我在遵循本页提示后的体验
- 首先,以及
- 然后在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()
ReportLab很不错,但如果在其文档中突出地包含上面提到的HelloWorld,它将受益匪浅。fpdf对我来说效果很好。比ReportLab简单得多,而且非常免费。使用UTF-8。我用来创建pdf文件,因为我更熟悉RST而不是HTML。它支持嵌入几乎任何类型的光栅或矢量图像 它需要,但我发现reportlab的使用并不那么直接(至少对我来说是这样)。我建议。(安装) 它从html文件创建pdf。我选择它从Python金字塔堆栈中分两步创建pdf:
pdfkit.from_string(…)
方法- 使用pip
pip安装pdfkit
- 您还需要安装wkhtmltopdf()
- fpdf也是python。而且经常使用。请参阅PyPI/pip搜索。但也许它是从pyfpdf重命名为fpdf的。从功能:
PNG、GIF和JPG支持(包括透明和alpha通道)这是一个仅适用于标准软件包的解决方案
matplotlib
有一个PDF后端,用于将数字保存为PDF格式。您可以创建带有子图的图形,其中每个子图都是您的图像之一。你有完全的自由来搞乱这个人物:添加标题,玩弄位置等等。一旦你的人物完成了,保存到PDF。每次调用savefig
都将创建另一页PDF
下面的示例在第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()
实际上,您可以尝试xhtml2pdf支持嵌入PDF、PNG和JPEG图像(本机)和其他位图格式(安装Pillow时)
(完全公开:我是RunOHype的作者)
< P>如果你熟悉PACTH,你可能想考虑 pylatex的优点之一是易于控制图像质量。pdf中的图像将与原始图像具有相同的质量。使用reportlab时,我体验到图像被自动压缩,图像质量降低 pylatex的缺点是,由于它是基于乳胶的,所以很难将图像准确地放置在页面上您想要的位置。但是,我发现在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)
除了安装pylatex(pip安装pylatex),还需要安装LaTex。对于Ubuntu和其他Debian系统,您可以运行
sudo-apt-get-install-texlive-full
。如果您使用的是Windows,我建议您如果有疑问,请在您正在搜索的任何内容前面加上前缀(py
;-)另一个SO搜索技巧:[language or tag]some_关键字
,如[python]PDF
或[python]PDF图像
,适用于那些使用matplolib来到这里的人:我必须说reportlab是我尝试过的最适合生成PDF的,肯定是最完整的。然而,它也有点复杂。这正是我要找的for@JoseSalvatierra谢谢Jose…这真的很容易。感谢您的博客链接。找到了PyPDF2的最新分支。请注意,pypdf仅用于剪切/粘贴/等。。现有pdf内容-您不能向pdf添加文本或图像。pyPDF2不用于创建新的pdf文档,您可以。有一些关于如何做的好链接。Link/Descrip.:FPDF是一个PHP类