如何像 Microsoft Edge 一样使用 python 从 PDF 渲染图像?

How can I render an image from a PDF with python as Microsoft Edge is doing?

因此,当我使用 Wand 和 Python 从 PDF 生成 JPEG 时,我可以看到五线谱的某些线条大小不同,但是当我使用 MS Edge 进行缩放时,它们的大小相同。 ..我找不到同样的方法。

魔杖

开罗

第一种回答方式:

convert +antialias -density 1200 Betlem.pdf -alpha off -resize 640x -monochrome A_betlem_m_en_vull_anar.png

我试过 poppler、pdftocairo、pdf2(png¦svg)、inkscape 等...

pdf = wi(filename = "Betlem.pdf", resolution = 300)
pdfImage = pdf.convert("jpeg")
d = 1
for img in pdfImage.sequence:
   page = wi(image=img)
   page.save(filename="Betlem_" + str(d) + ".jpg")
   d += 1

我希望看到工作人员和笔记的缩放方式与 Edge(最佳)或 Firefox(极好)相同的结果。

PDF如下:http://www.xn--estudiantladolaina-lvb.com/partitures/baixa/pdf/26

已编辑:

由于 PDF 上的 SVG 信息错误,您可以看到它是如何呈现错误的:

使用 Imagemagick 6.9.10.55 Q16 Mac OSX 和 Ghostscript 9.25,我可以使用超级采样进行高质量转换(4 倍标称 72 dpi 密度,并将尺寸缩小 1/4 至正常比例)作为

convert -density 288 A_betlem_m_en_vull_anar.pdf -alpha off -resize 25% A_betlem_m_en_vull_anar.png


这与您的 MS Edge 视图相比如何? (下载我的图片并查看)。

添加:

这是 Python Wand 中的相同代码,它使用 Imagemagick。

!/bin/python3.7

from wand.image import Image

with Image(filename='A_betlem_m_en_vull_anar.pdf', resolution=288) as img:
    img.alpha_channel='off'
    img.resize(width=int(0.25*img.width),height=int(0.25*img.height))
    img.save(filename='A_betlem_m_en_vull_anar.png')