【问题标题】:Is there a programmatic way to transform a sequence of image files into a PDF? [closed]是否有一种编程方式将一系列图像文件转换为 PDF? [关闭]
【发布时间】:2011-02-06 19:47:50
【问题描述】:

我有一系列 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.

转换命令语法中有没有办法指定 bat.pdf 是输出?

谢谢

【问题讨论】:

  • 我认为它被 shell globbing 弄糊涂了。尝试使用双引号或完全省略引号。
  • 为什么你引用 '*.jpg',对我来说转换 *.jpg bat.pdf,有效。
  • 此外,您似乎正在将结果输出到存储卡 (/media/NIKON D200) 上,这可能不是您想要的。您可能会用完空间,并且在任何情况下,每次写入时都会稍微磨损卡片。
  • 不,不乏空间。我今晚要再试一次。

标签: python documentation latex pdf-generation tex


【解决方案1】:

我想知道你是否可以通过 for 循环和 \includegraphics 命令在 LaTeX 文件中使用适当的漂亮标准图像文件命名等来做到这一点。这可能具有允许标题页等和页码等的优点。 (我不确定其他任何一种解决方案都可以做到这一点,我也懒得去检查。我只是在这里大声思考,真的)

【讨论】:

    【解决方案2】:

    如果您对 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”的文件。

    【讨论】:

      【解决方案3】:

      我突然想到必须有一种更简单的方法 - 所以有什么建议吗?

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

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

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

      【讨论】:

      • 我建议先在文件的一个子集上尝试它,以确保前几页看起来不错。如果您有很多页面,这将是一项昂贵的操作。
      • 您可能需要使用引号 ('*.jpg'),因为 imagemagick 在按正确顺序排列事物方面比 shell 更聪明。
      • @cobbal:这个主意不错,谢谢。
      • 这听起来是个不错的解决方案!我现在要试一试。萨尔
      • 这真的很简单。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      相关资源
      最近更新 更多