尝试使用Wand将PDF转换为Jpg,但不识别pdf

时间:2015-03-05 22:01:15

标签: python pdf jpeg file-conversion wand

我正在尝试使用魔杖将PDF转换为JPG。

我想根据docHeight来调整jpg的大小,docHeight是一个全局变量。

jpg的大小将由最大维度与其将被放置的目标页面的比率确定。

我似乎从起跑门失败了,我无法弄清楚原因。

似乎我的with语句中没有读取该文件。

my with Image语句返回

>>>>with Image(filename = thumbOriginal, resolution = (RESOLUTION,RESOLUTION)) as img:
    print img
'NoneType' object has no attribute '__getitem__'

我如何阅读文件有什么问题?

主要是从this question借来的。我几乎找不到有关如何正确进行此转换的任何信息。

    with Image(filename = thumbOriginal, resolution = (RESOLUTION,RESOLUTION)) as img:
        print img # prints 'NoneType' object has no attribute '__getitem__'
        img_width = img.width
        print "img_width: "+str(img_width)  # prints 0 if I comment out "print img" statement
        img_height = img.height
        print "img_height: "+str(img_height)  # prints 0 if I comment out "print img" statement
        if img_width > img_height:
            ratio = float(dest_width / img_width) # Fails for float divided by 0 if I comment out "print img" statement
        else: ratio = float(dest_height / img_height) # Fails for float divided by 0 if I comment out "print img" statement

        img.resize(int(ratio*img_width), int(ratio *img.height))
        img.alpha_channel = False
        img.format = 'jpg'
        img.save(filename = thumb)

我还尝试过在a different stackoverflow question找到的更简单的版本:

with Image(filename = thumbOriginal, resolution = 300) as img:
    print img
    img.compression_quality = 99
    img.save(filename=thumb)

但我得到了同样的错误

'NoneType' object has no attribute '__getitem__'

我知道pdf就在那里。我可以手动打开它,它工作得很好。

我也尝试完全删除分辨率参数而没有运气。

当我加入......

print thumbOriginal

....语句,它返回正确完整的文件路径。

1 个答案:

答案 0 :(得分:0)

img 不是一个字符串,它是一个Image对象(请查看Wand源代码来理解)。当你尝试打印一个Image对象时,python不知道该怎么做。当你说:

print thumbObject

您已将此表面(表面上)定义为文件名的路径,该文件名是字符串。 print方法知道如何打印字符串。

我想如果你尝试下面的代码,你会有更好的运气。请注意我指定了分辨率:

with Image(filename=thumbOriginal, resolution=300) as img:
        img_width = img.width
        print "img_width: "+str(img_width)  
        img_height = img.height
        print "img_height: "+str(img_height)  
        if img_width > img_height:
            ratio = float(dest_width / img_width) 
        else: ratio = float(dest_height / img_height) 

        img.resize(int(ratio*img_width), int(ratio *img.height))
        img.alpha_channel = False
        img.format = 'jpg'
        img.save(filename = thumb)