8

我需要创建 pdf 文件的缩略图,我正在使用 Imagemagick 来实现这一点。

我已经尝试过 Pythonmagick 和 wand 将 pdf 转换为图像。但是,当我尝试调整转换后的 pdf 大小时,生成的图像变为黑色。

有没有 -define pdf:use-cropbox=true使用 python 包装器设置的选项?

Python中还有其他方法可以将pdf转换为缩略图吗?

代码如下:

    import wand
    img = wand.image.Image(filename="d:\\test.pdf[0]")
    img.resize(160,160)
    img.save(filename="d:\\test.jpg")
4

3 回答 3

5

我找到了解决这个问题的方法。将 pdf 转换为图像 1st 并保存图像。打开新保存的图像并调整其大小。

import wand
img = wand.image.Image(filename="d:\\test.pdf[0]")
img.save(filename="d:\\temp.jpg")
img = wand.image.Image(filename="d:\\temp.jpg")
img.resize(160,160)
img.save(filename="d:\\resized_image.jpg")

我仍在等待更好的答案。

于 2012-10-28T08:36:59.153 回答
1

我今天遇到了同样的问题。我在其他帖子中找到了另一个解决方案。图像变黑的原因是PDF文件的背景是透明的。由于 JPG 文件无法识别 alpha 通道(记录透明像素信息)。默认情况下,JPG 文件会将这些透明像素设置为黑色。

# Use the following two lines to fix this error
# img_page.background_color = Color('white')
# img_page.alpha_channel = 'remove'

with Image(filename="file.pdf",resolution= 350) as img_pdf:
    num_pages = len(img_pdf.sequence)
    for page, img in enumerate(img_pdf.sequence):
        img_page = Image(image=img)
        img_page.background_color = Color('white')
        img_page.alpha_channel = 'remove'
        img_page.resize(900,1200)
        img_page.save(filename="file"+str(page)+".jpg")
        if page == 0:
            img_page.resize(500, 500)
            img_page.save(filename="thumbnail.jpg")

参考:Python Wand 将 PDF 转换为 PNG 禁用透明(alpha_channel)

于 2018-11-26T18:45:08.390 回答
0

您可以在不使用临时文件的情况下执行此操作 - 如果您不依赖 JPG。

以下对我有用:

import wand
img=wand.image.Image(filename="/home/vagrant/tmp/wand/law.pdf[0]")
img.format='png'
img.resize(220,220)
img.save(filename="/home/vagrant/tmp/wand/law_2.png")
于 2015-12-28T14:45:30.547 回答