有没有一种编程方式将图像文件序列转换为PDF?

时间:2010-04-11 23:10:44

标签: python documentation latex pdf-generation tex

我有一系列JPG图像。每个扫描都已裁剪为一页的确切大小。它们是有价值的绝版书籍的连续页面。发布应用程序要求将这些页面作为单个PDF文件提交。

我可以把这些图片中的每一个都带到一个文字处理器(例如OpenOffice)中 - 不幸的是,这里的问题是它是一本非常大的书,而且我有很多这样的书可以通过。这显然很耗时。这是志愿者工作!

我的第二个想法是使用LaTeX(实际上是pdflatex) - 我可以创建一个非常简单的文档,其中只包含一系列内嵌图像。我确信这种方法可以起作用,对于一些看起来非常简单的工作而言,这只是复杂的一点。

我突然觉得必须有一个更简单的方法 - 所以有什么建议吗?

我使用的是Ubuntu 9.10,我的主要编程语言是Python,但如果解决方案非常简单,我很乐意采用任何有效的技术。


更新,有人可以解释这里出了什么问题吗?

sal@bobnit:/media/NIKON D200/DCIM/100HPAIO/bat$ convert '*.jpg' bat.pdf
convert: unable to open image `*.jpg': No such file or directory @ blob.c/OpenBlob/2439.
convert: missing an image filename `bat.pdf' @ convert.c/ConvertImageCommand/2775.

在convert命令语法中是否有一种方法可以指定bat.pdf是输出?

由于

3 个答案:

答案 0 :(得分:12)

  

我突然觉得必须有一个更简单的方法 - 所以有什么建议吗?

你是对的,有!试试这个:

sudo apt-get install imagemagick
cd ~/rare-book-images
convert "*.jpg" rare-book.pdf

注意:根据您正在使用的shell“* .jpg”可能无法正常工作。尝试省略引号,看看是否能得到你期望的结果。

答案 1 :(得分:6)

如果您对Python解决方案感兴趣,可以使用ReportLab库。例如:

from reportlab.platypus import SimpleDocTemplate, Image
from reportlab.lib.pagesizes import letter
from glob import glob

doc = SimpleDocTemplate('image-collection.pdf', pagesize=letter)
parts = [Image(filename) for filename in glob('*.jpg')]
doc.build(parts)

这将获取当前目录中的所有jpg文件,并生成一个名为“image-collection.pdf”的文件。

答案 2 :(得分:0)

我想知道你是否可以在for循环中使用\includegraphics命令并在LaTeX文件中使用一些适当的标准图像文件命名等等。这可能具有允许标题页等和页面编号等优点。 (我不确定其他任何解决办法都是这样做的,我也不会费心去检查。我只是在这里大声思考,真的)