我正在开发一个项目,它从用户那里获取一些图像,然后创建一个包含所有这些图像的PDF文件.
在Python中有没有办法或任何工具?例如,从image1 + image 2 + image 3 - > PDF文件创建PDF文件(或eps,ps)?
Evg*_*eev 149
以下是按照此页面提示后的经验.
pyPDF无法将图像嵌入到文件中.它只能拆分和合并.(来源:Ctrl + F通过其文档页面)这很棒,但如果您的图像尚未嵌入PDF中则不行.
pyPDF2似乎没有任何额外的文档在pyPDF之上.
ReportLab非常广泛.(用户指南)但是,通过一点Ctrl + F并通过其源代码,我得到了这个:
然后在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()
Run Code Online (Sandbox Code Playgroud)我只需要将一堆图像放到PDF中,这样我就可以检查它们的外观和打印方式.以上就足以实现这一目标.
ReportLab很棒,但是可以从文档中突出显示上面的helloworlds中获益.
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
这是一个仅适用于标准软件包的解决方案.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)
我在PyQt中做了很多这样的工作,效果非常好.Qt对图像,字体,样式等有广泛的支持,所有这些都可以写成pdf文档.
如果您熟悉 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。
fpdf是python(也是)。并经常使用。请参阅PyPI /点子搜索。但也许将其从pyfpdf重命名为fpdf。来自功能:PNG,GIF和JPG支持(包括透明度和Alpha通道)