我需要将PDF页面转换为图像。我的文件中有一个带有一些文本的背景图像,当我将其另存为图像时,只会保存背景图像。
是否有可用的相同软件,以便整个页面都可以转换为图像?

评论

显然,inkscape也可以实现:stackoverflow.com/a/15484727/32453

我没有10位代表发布答案,所以这是另一种方法,请使用MuPDF。 mutool convert -o file.png file.pdf

在bash上:pdftocairo file.pdf -png

PDFBox也做得很好。 pdfbox.apache.org

#1 楼

您可以使用pdftoppm将PDF转换为PNG:
pdftoppm input.pdf outputname -png

,这将以outputname-01.png格式输出PDF中的每一页,其中01是页面的索引。
转换单个PDF页面
pdftoppm input.pdf outputname -png -f {page} -singlefile

{page}更改为页码。它的索引为1,因此-f 1将是第一页。
指定转换后的图像的分辨率
此命令的默认分辨率为150 DPI。增大它会导致更大的文件大小和更多细节。
要增加转换后的PDF的分辨率,请添加选项-rx {resolution}-ry {resolution}。例如:
pdftoppm input.pdf outputname -png -rx 300 -ry 300


评论


非常感谢。质量比imagemagick或graphicsmagick好得多!

– dAnjou
13年9月9日,0:18

pdftoppm比转换快得多

– Zuo
13年11月6日在4:52

这确实比imagemagick好得多。在我看来,Imagemagick实际上以一种意想不到的方式改变了颜色!

– NoBackingDown
2015年9月17日下午7:16

很好!但是编写-r 300而不是在要将x和y分辨率设置为相同值时分别指定x和y分辨率会稍微容易一些。

– mlc
15-10-20在14:52

我使用pdftoppm取得了比imagemagick更大的成功。

–迈克尔·海斯(Michael Hays)
18年4月14日在7:30

#2 楼


安装imagemagick。

使用PDF所在的终端:



对于完整文档:

convert -density 150 input.pdf -quality 90 output.png



对于单个页面:

convert -density 150 input.pdf[666] -quality 90 output.png






其中:


可以选择PNG,JPG或(实际上)任何其他图像格式。
-density xxx会将DPI设置为xxx(通常为150和300)。
-quality xxx会将PNG,JPG和MIFF文件格式的压缩率设置为xxx(100表示​​不压缩)。
[666]只能将第667页转换为PNG(从零开始的编号,因此[0]是第一页)。
所有其他选项(如修剪,灰度等)都可以在Image Magic的网站上查看。


评论


答案是可以的,但是分辨率很差。因此,当前没有一个有用的答案。也许如果convert具有一些可以指定的参数,则可能会更改。

–伊利亚·林恩(Elijah Lynn)
15年1月16日在19:57

这个答案是更高质量的askubuntu.com/a/50180/11929

–伊利亚·林恩(Elijah Lynn)
15年1月16日在20:06

您可以通过添加-density 300参数来更改密度

–OHLÁLÁ
2015年4月1日在12:18

因此,有人可以确认指定密度使其与此处的其他答案“一样好”吗?另外,作为对跟随者的说明,ImageMagick呼出“ ghostscript”以实际从pdf转换为png,例如:gs -q NOPROMPT ... -sDEVICE = pngalpha -r150x150 -sOutputFile = / var / tmp / Yf%d -f / var / tmp / L -f / var / tmp / Fic1,如果您进行了转换:没有定义图像output.png,则意味着您没有安装ghostscript ...

–rogerdpack
17 Mar 3 '17 at 17:29



在imagemagick中解析PDF已被禁用-bugs.archlinux.org/task/59778-可以通过编辑/etc/ImageMagick-7/policy.xml文件并从

–杰索
18/12/10在18:58

#3 楼

IIRC GIMP能够使用PDF,即将其转换为图像。因此,如果您想立即编辑图像-GIMP是您的朋友。

评论


GIMP确实可以打开PDF,每一页都是一层。选择“导出为”似乎仅保存当前层,但是您可以在导出后轻松删除该层并再次运行“导出为”。

– Dan Dascalescu
19年8月12日在8:34

从Ubuntu 19.04中打包的当前各个版本开始,我发现GIMP产生的转换质量比imagemagick高得多。

– durette
19年12月1日在18:38

#4 楼

当前接受的答案可以完成工作,但是会导致输出尺寸较大并且质量下降。

此处给出的答案中的方法所产生的输出的大小与输入的大小相当,并且不会遭受质量损失。

TLDR-使用pdfimagespdfimages -j input.pdf output

引用链接的答案:


不清楚“质量损失”是什么意思。那可能意味着很多不同的事情。您可以张贴一些示例来说明吗?
也许从质量差和质量好的版本中切出相同的部分
(作为PNG,以避免进一步的质量损失)。

可能需要使用-density来以更高的dpi转换:

convert -density 300 file.pdf page_%04d.jpg


(如果需要,可以添加-units PixelsPerInch-units PixelsPerCentimeter。我的副本默认为ppi。)

更新:正如您所指出的,gscan2pdf(使用方式)只是pdfimages(来自poppler)的包装。当给定PDF时,pdfimages
做的与convert所做的不一样。

convert提取PDF,以一定的分辨率对其进行渲染,并使用
将得到的位图作为源图像。

pdfimages在PDF中查找嵌入的位图图像,然后将每个图像导出到文件中。它只是忽略了PDF中的任何文本或矢量
绘制命令。

因此,如果您拥有的PDF只是一系列
位图的包装, pdfimages提取它们会做得更好,因为它会以原始大小获取原始数据。您
可能还希望对-j使用pdfimages选项,因为
PDF可以包含原始JPEG数据。默认情况下,pdfimages将所有内容都
转换为PNM格式,并且将JPEG> PPM> JPEG转换是有损的
过程。

因此,请尝试

pdfimages -j file.pdf page


您可能需要也可能不需要在convert.jpg步骤之后进行操作
(取决于PDF使用的位图格式)。我自己来自JPEG图片序列。提取的JPEG与源图像逐字节相同。您无法获得比这更高的质量。


评论


如果PDF是用Illustrator或Acrobat之类的东西创建的可打印的PDF,这是OP问题的不正确解决方案,因为pdfimages仅从PDF中提取图像,而不会展平整个页面并将整个页面导出为图像。

–GuyPaddock
20-05-14在15:22

@GuyPaddock感谢您指出。

– Anmol Singh Jaggi
20年5月15日8:00

#5 楼

如果扫描了pdf,则图像已作为pdf的一部分存储。您只需要用pdfimages提取它们即可:

pdfimages my-file.pdf prefix 


评论


这是扫描pdf的完美解决方案,因为您可以使用一个命令提取原始jpg,而无需进一步重新压缩。

–乔斯·戈麦斯(JoseGómez)
16年1月31日在22:49

如果PDF是用Illustrator或Acrobat之类的东西创建的可打印的PDF,这是OP问题的不正确解决方案,因为pdfimages仅从PDF中提取图像,而不会展平整个页面并将整个页面导出为图像。

–GuyPaddock
20-05-14在15:22

#6 楼

如果仅要将PDF的特定页面转换为PNG,则可以将pdftk传递到convert(如上所述),如下所示:

pdftk document.pdf cat 12 output - | convert - document-page-12.png


#7 楼

要从gm convert获得单个页面,请在PDF名称中添加[N](其中N的页码从0开始),即gm convert foo.pdf[11] out.png从PDF获取第12页。 pdftoppm,其中N是从1开始的页码,即相同结果的-f N -singlefile。它似乎总是将“ .png”添加到输出文件名,并且没有办法阻止它。

#8 楼

您可以使用convert并使用-density选项指定更高的密度。

例如。 convert -d 300 foo.pdf bar.png

评论


您能否进一步解释什么是密度及其可以做什么?

–rɑːdʒɑ
14年7月24日在4:03

@AgentCool它指定水平和垂直图像密度(以ppi为单位)。

– Arjun
2014年7月27日在10:02

#9 楼

pdftocairo file.pdf -png(由Anthony Ebert发布​​,作为“如何将PDF转换为图像?”的评论)

#10 楼

Master PDF Editor(2.2版)内置了此选项。打开PDF文件,然后转到File> Export to> Images。它显示一个对话框,您可以在其中定义输出的不同选项。
非常有用。希望此信息对您有帮助。

评论


是免费版还是付费版?在我的版本中,该选项显示为灰色?这是否意味着我需要付款?有付费版本吗?

–约书亚·罗宾逊(Joshua Robison)
17年7月7日在2:25

#11 楼

您可以使用ghostscript进行此操作:

gs -dSAFER -dBATCH -dNOPAUSE -r300 -sDEVICE=png16m -dFirstPage=1 -dLastPage=1 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile=output.png input.pdf


有关详细信息,请参见https://www.ghostscript.com/doc/9.52/Devices.htm

#12 楼

PDF Mod还允许导出PDF文件的全部或单个页面的图像。

在PDF Mod中打开PDF文件
选择页面-
编辑>导出图像