如何使用img2pdf作为模块

时间:2014-12-20 16:38:35

标签: python python-2.7 pdf pdf-generation jpeg

我正在构建一个简单的Python 2.7.9脚本,该脚本将JPEG图像列表作为输入并输出PDF文件。我在谷歌上搜索了几个小时但却无法找到解决方案:

  • 我尝试了pypdf,但它说我没有安装PIL,但我已经安装了。
  • 我尝试Reportlab,但页面大小比图片本身大,我找不到修复方法。我也觉得很难......
  • 我尝试了img2pdf,但无法理解如何使用它

我真的厌倦了所有这些图书馆,而且我正在寻找一个好的解决方案。 好的意思是:

  • 尽可能使用pythonic
  • 使页面大小适合图像大小
  • 支持大量图片(甚至可能是500张)
  • 够容易

如果您可以帮助我已经尝试过的模块/代码示例,那就太棒了。 此外,如果您有使用模块的经验,我很高兴您能分享它。

修改

正如评论中所建议的,我决定再给img2pdf一次机会。我使用官方GitHub README中的以下代码:

import img2pdf
pdf_bytes = img2pdf('test.jpg', dpi=150)

但它引发了一个例外: `TypeError:'模块'对象不可调用

有人知道如何将img2pdf用作多个图像的模块吗?`

1 个答案:

答案 0 :(得分:1)

GitHub代码中没有任何内容告诉我该模块是可调用的。这可能是自述文件中的一个错误;他们的意思是使用convert函数。试试这个:

import img2pdf
pdf_bytes = img2pdf.convert(('test.jpg',), dpi=150, x=None, y=None)

the source code中,此功能需要位置参数xy

def convert(images, dpi, x, y, title=None, author=None, creator=None, producer=None,
            creationdate=None, moddate=None, subject=None, keywords=None,
            colorspace=None, verbose=False):

但只要您提供dpi参数,就会设置一个默认情况,使其看起来(至少对我而言)像xy一样是可选参数:

    if not x and not y:
        pdf_x, pdf_y = 72.0*width/ndpi[0], 72.0*height/ndpi[1]

你在PIP上获得的包不一定与GitHub上的代码相同。你可以试试它而不提供xy作为convert的参数 - 甚至更好,在你自己的机器上找到源文件并自己查看。