如何从PDF文件中提取图像


47

我目前使用Foxit的PDF阅读器,最近我从互联网上下载了一张图片,但它在PDF文件中。如何提取此图像?

操作系统是Windows 7。


您最高质量的提取将提取到图像已存储在pdf中的任何格式。 (至少我认为这是图像在pdf中的工作原理。)
quack quixote

Answers:


4

如果您不需要图像的原始像素分辨率,快速方法是只按ALT和打印屏幕按钮。然后选择粘贴到您想要图像的位置。

保留分辨率的另一种方法是在Adobe Photoshop等图像编辑程序中打开PDF并在那里使用它。


1
在Photoshop中打开PDF文档会导致出现“栅格化通用PDF格式”对话框,因此无法保留分辨率。用PS7测试。 Photoshop的新版本有何不同?
AffineMesh

1
如你所说,[alt] + [prnscr]不保留原始像素分辨率(它使用当前屏幕/监视器使用的任何分辨率)。
Kurt Pfeifle

1
@studiohack,@ UserSuUserDo:如果你使用[alt] + [prnscr],你不仅会错过原始分辨率,而且你会得到完整的PDF查看器窗口作为图片。对于许多用例来说,这可能“足够好”。但有时您希望图形仅嵌入在PDF页面中。这里 pdfimages.exe 派上用场了。
Kurt Pfeifle

1
或者使用W7内置的剪切工具捕获您想要的区域。
Moab

68

如果您下载XPDF for Windows( 这里 ),你会在里面找到一些.exe文件。您无需“安装”即可运行它们。使用 pdfimages.exe 像这样:

pdfimages.exe -help

这将显示帮助屏幕。

pdfimages.exe ^
    -j ^
    c:\path\to\your.pdf ^
    c:\path\to\where\you\want\images\prefix\

这将所有JPEG提取为prefix-00N.jpg,将所有其他图像提取为prefix-00N.ppm(Portable PixMap)。

[ 由ComFreek编辑: 请注意目标路径中的尾部斜杠,如果您不想将所有图像提取到其父目录中,这很重要。 -
{ 由KurtPfeifle编辑: 我不同意ComFreek的评论,但留给读者测试并找出结果本身的差异。我的原始参数,不使用尾部斜杠,如 ..\prefix 将为图像添加前缀 用于提取的文件。}

pdfimages.exe ^
    -j ^
    -f 11 ^
    -l 13 ^
    c:\path\to\your.pdf ^
    c:\path\to\where\you\want\images\prefix\

与之前相同,但将图像提取限制为第11页('f'=第一个)到13('l'=最后一个)。


更新:

同时我更喜欢 Poppler的版本 pdfimages - 特别是因为它获得了这个新功能:添加 -list 到命令行,只是列出(不提取)PDF中包含的图像,以及它们的一些属性。例:

pdfimages -list -f 7 -l 8  ct-magazin-14-2012.pdf

  page   num  type   width height color comp bpc  enc interp  object ID
  ---------------------------------------------------------------------
     7     0 image     581   838  rgb     3   8  jpeg   no        39  0
     7     1 image       4     4  rgb     3   8  image  no        40  0
     7     2 image     314   332  rgb     3   8  jpx    no        44  0
     7     3 image     358   430  rgb     3   8  jpx    no        45  0
     7     4 image       4     4  rgb     3   8  image  no        46  0
     7     5 image       4     4  rgb     3   8  image  no        47  0
     7     6 image       4     6  rgb     3   8  image  no        48  0
     7     7 image     596   462  rgb     3   8  jpx    no        49  0
     7     8 image       4     6  rgb     3   8  image  no        50  0
     7     9 image       4     4  rgb     3   8  image  no        51  0
     7    10 image       8    10  rgb     3   8  image  no        41  0
     7    11 image       6     6  rgb     3   8  image  no        42  0
     7    12 image     113    27  rgb     3   8  jpx    no        43  0
     8    13 image     582   839  gray    1   8  jpeg   no      2080  0
     8    14 image     344   364  gray    1   8  jpx    no      2079  0

注意 再次:这个版本的 pdfimages 是来自Poppler的那个(来自XPDF的那个) (但?)支持这个新功能),版本必须是v0.20.2或更新版本。


1
@harlev:Google for ImageMagick的 。它有一个命令行工具,可以将任何东西转换为任何调用的东西 convert。适用于Linux,Windows,MacOS X以及您拥有的产品。最简单的用例: convert some.ppm some.jpeg
Kurt Pfeifle

3
注意:XPDF不像以前那样积极维护 poppler库 它是前一段时间的分歧。 Poppler提供 pdfimages 同样,有些人可能更喜欢使用它。
MvG

1
@BurhanKhalid:预建的二进制文件在这里: sourceforge.net/projects/poppler-win32
Kurt Pfeifle

1
@KurtPfeifle不幸的是那些根本不包含任何exe文件。
Chris

2
我知道这是旧的,但只是想分享,如果有人正在寻找Windows二进制文件,你可能会在这里得到它 blog.alivate.com.au/poppler-windows
Aivan Monceller

7

您可以尝试将PDF导入 Inkscape中 ,从那里工作。 Inkscape只会打开一个页面,但会让您完全控制页面内容。您将能够非常轻松地从PDF中提取和操作矢量图形。

但是,如果你想从PDF中提取光栅图像,我很确定 pdfimages 从XPDF更容易(但你仍然可以尝试在学习后使用Inkscape 如何从SVG文件中提取嵌入的图像 )。


GIMP( gimp.org )是另一种可以导入和操作PDF的图形设计工具。然而,不确定GIMP功能与Inkscape中的功能形成对比。
coderworks

@coderworks:GIMP会将导入的PDF页面栅格化为给定的分辨率。换句话说,它比使用“Print Screen”稍好一些。另一方面,Inkscape将保留原始矢量数据以及原始光栅图像。
Denilson Sá Maia

5

无需安装任何软件,您可以切换到 PDF-XChange Viewer (选择 便携版 )这种能力已经内置

  • 将所有或所选页面导出为图像
  • 输出格式:PNG,JPG,TIFF,BMP
  • 选择DPI,压缩等级,灰度等级
  • 可以将多个页面保存为多页TIFF

    enter image description here

    enter image description here
    点击放大


请注意,虽然此方法将整个PDF页面转换为图像,但@Laurenz解释了该方法 使用苏门答腊PDF 如果要从具有混合内容(图像+文本)的PDF页面中提取图像以仅获取图像,则更为出色。


2
@MarkSeemann我无法效仿。 “没有安装任何软件”在这种情况下意味着有可用的便携版本。根据定义,无法“安装”便携式软件。你只需下载,解压缩并启动它。
nixda

3
你需要“选择DPI”的事实使目的失败。您正在调整栅格图像(像素数组)的大小,并且栅格图像的任何调整大小都会导致质量和信息的丢失。
anthony

将PPM文件转换为png或jpeg?
Kiquenet

4

苏门答腊PDF 是一个快速,轻量级的开源PDF阅读器,可以直接将图像复制到剪贴板,无需任何重新光栅化。


3

MuPDF 是一个新的(2006年创建)多平台(桌面和移动)PDF查看器,根据AGPL许可证发布。它是由同一个人维护的 Ghostscript的

它包含一个命令行工具,用于从PDF中提取图像:

mutool extract [options] file.pdf [object numbers]

extract命令可用于从PDF中提取图像和字体文件。如果命令行中没有给出对象编号,则将提取所有图像和字体。

-p password
       Use the specified password if the file is encrypted.

-r     Convert images to RGB when extracting them.

2

使用 pdftocairopoppler toolkit。它可以提取PDF格式的图像并将其转换为任何所需的格式。它总是生成图像,永远不会产生ppm或类似的骰子。以下命令将pdf页面转换为jpg图像:

pdftocairo.exe -jpeg "my.pdf" "my"

你可以从这里获取它的窗口: http://blog.alivate.com.au/poppler-windows/

它也可以在Linux上使用。


这个命令呢 提取PDF中嵌入的图像(如OP所述)。相反,它将完整的PDF页面转换为图像格式。这个答案不符合提出的问题。
Kurt Pfeifle

1

http://www.sumnotes.net/ 是一个提取笔记,高亮和图像的在线工具。我在大学里广泛使用它作为我的论文,我真的很满意。


商业,限量免费试用。它也是在线,意味着无法保证隐私!
anthony

-1

通常我用原始分辨率的'pdfimages'提取嵌入图像,然后使用ImageMagick转换为所需的格式:

$ pdfimages -list fileName.pdf
$ pdfimages fileName.pdf fileName   # save in .ppm format
$ convert fileName-000.ppm fileName-000.png

这会生成最佳和最小的结果文件。

注意:对于有损JPG嵌入图像,您必须使用-j:

$ pdfimages -j fileName.pdf fileName   # save in .jpg format

在很少提供的Win平台上,您必须从以下位置下载最近的(0.37,2015)'poppler-util'二进制文件: http://blog.alivate.com.au/poppler-windows/

更新: 在最近的“poppler-util”0.50+(2016)中,pdfunite有一个选项“-all”来提取无损压缩位图为.png和有损压缩位图为.jpg,所以很简单:

$ pdfimages -all fileName.pdf fileName

始终从PDF中提取最佳质量内容


以前是在Kurt Pfeifle的回答中。
daniel.neumann
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.