在python代码中,如何有效地将pdf中的某个页面保存为jpeg文件?(使用案例:我有一个python flask web服务器,上传pdf-s,每个页面对应的jpeg-s是商店.)
这个解决方案很接近,但问题是它没有将整个页面转换为jpeg.
我从Unofficial Windows Binaries下载并安装了python 2.7,64位Windows 7的PythonMagick .
我正在尝试运行此代码(Processor.py)
import PythonMagick
pdf = 'test.pdf'
p = PythonMagick.Image()
p.density('600')
p.read(pdf)
p.write('doc.jpg')
Run Code Online (Sandbox Code Playgroud)
在此文件夹中(D:\ Python Projects\Sheet Music Reader)

但是,使用该相对pdf路径或pdf = "D:\\Python Projects\\Sheet Music Reader"导致此错误;
Traceback (most recent call last):
File "D:/Python Projects/Sheet Music Reader/Processor.py", line 6, in <module>
p.read(pdf)
RuntimeError: Magick: PostscriptDelegateFailed `D:\Python Projects\Sheet Music Reader\test.pdf':
No such file or directory @ error/pdf.c/ReadPDFImage/664
Run Code Online (Sandbox Code Playgroud)
我根本不明白为什么找不到我的pdf; 它与python脚本位于同一目录中.
导致此错误的原因是什么,我该如何解决?
(我的印象是将pdf转换成python中的图像是一个夜晚的母马)
如何将 PDF 文件中的图像绘制成 Pyplot 图(例如,使用plt.imshow,或在我可以添加的某个容器内ax.add_artist)?
不起作用的方法:
import matplotlib.pyplot as plt
im = plt.imread('file.pdf')
Run Code Online (Sandbox Code Playgroud)
(来源:this question,它适用于 PNG 文件。)
from PIL import Image
im = Image.open('file.pdf')
Run Code Online (Sandbox Code Playgroud)
(来源:this doc,但同样,它不适用于 PDF 文件;该问题链接了一个库以读取 PDF,但该文档没有显示将它们添加到 Pyplot 图的明显方法。)
此外,此问题存在,但答案无需实际加载 PDF 文件即可解决问题。
我需要创建pdf文件的缩略图,我正在使用Imagemagick来实现这一点.
我已经尝试过Pythonmagick和魔杖将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")
Run Code Online (Sandbox Code Playgroud) 我在将 pdf 转换为 jpeg 时发现了一个如此连线的东西,所以我想弄清楚这可能是一个小错误。看下面转换后的jpg,你会发现,背景色都是黑色的。图片在这里:www.shdowin.com/public/02.jpg
但是,在pdf的源文件中,可以看到背景颜色是正常的白色。图片在这里:www.shdowin.com/public/normal.jpg
我认为这可能是我的 pdf 文件的错误,但是,当我尝试在 .NET 环境中使用 Acrobat.pdf2image 时,转换后的 jpg 显示正确。
这是我的代码:
from wand.image import Image
from wand.color import Color
import os, os.path, sys
def pdf2jpg(source_file, target_file, dest_width, dest_height):
RESOLUTION = 300
ret = True
try:
with Image(filename=source_file, resolution=(RESOLUTION,RESOLUTION)) as img:
img.background_color = Color('white')
img_width = img.width
ratio = dest_width / img_width
img.resize(dest_width, int(ratio * img.height))
img.format = 'jpeg'
img.save(filename = target_file)
except Exception as e:
ret = False
return ret
if __name__ == "__main__":
source_file …Run Code Online (Sandbox Code Playgroud) 我想转换图像,以便我可以使用pyocr&tesseract更好地阅读它.我想要转换为python的命令行是:
convert pic.png -background white -flatten -resize 300% pic_2.png
Run Code Online (Sandbox Code Playgroud)
使用python Wand我设法调整它,但我不知道如何做flattend和白色背景我尝试:
from wand.image import Image
with Image(filename='pic.png') as image:
image.resize(270, 33) #Can I use 300% directly ?
image.save(filename='pic2.png')
Run Code Online (Sandbox Code Playgroud)
请帮助
编辑,这是要进行测试的图像:
python ×5
pdf ×4
image ×2
imagemagick ×2
wand ×2
jpeg ×1
magickwand ×1
matplotlib ×1
python-2.6 ×1
pythonmagick ×1
windows ×1