在PDF文件中查找图像分辨率?


15

我有一些用户创建非常大的PDF的问题。另一方面,我从传真机发送的PDF确实很小,可以完全打印。我的问题是

  • 有什么办法可以找到PDF的分辨率(DPI)。我在互联网上搜索,找不到任何答案。检查了文件的属性,至少在我看来,此信息未存储在该文件中。
  • 将文本文件转换为图像PDF的最佳分辨率是多少?96dpi,300dpi或更高?
  • 好玩的问题。我可以将以高dpi扫描的PDF调整为较小的dpi吗?

我知道某些答案可能不可用,因为我已经搜索了互联网并且找不到答案。

注意:我的PDF完全是图像,是文本到图像。我也熟悉primoPDF(免费),您可以尝试使用

Answers:


18

slhck的答案和scruss的评论值得更新:pdfimages现在(至少从0.26.5版开始)显式列出了x-ppiy-ppi。这是一个示例输出:

$ pdfimages -list example.pdf 
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    2244  2244  cmyk    4   8  image  no       215  0   301   301  418K 2.1%
   2     1 image     900   600  rgb     3   8  image  no       324  0  1524  1525 35.5K 2.2%

关于Debian(Wheezy)和Fedora(23),pdfimagespoppler-utils软件包的一部分。


矿山都空了
theonlygusti '18

8

我知道您不想提取图像数据,但这可能是找出原始分辨率的唯一方法。


在* nix中,如果您有ImageMagick的identifyxpdf的安装1

pdfimages -j test.pdf test && for file in $(find . -name "test*.jpg"); do identify "$file"; done

test.pdf您输入的PDF 在哪里。输出文件被写入test-000.jpgtest-001.jpg,等等。这将为您提供该PDF 2包含的所有图像的原始大小。

仅包含一个大图像的PDF文件的示例输出:

./test-000.jpg JPEG 2500x1961 2500x1961+0+0 8-bit DirectClass 1.022MB 0.000u 0:00.000

1)Windows也有这些,但是脚本当然会有所不同。
2)请注意,图像并不真正包含DPI信息。简单地说:这只是用于打印的东西,图像不需要DPI的固有度量。


将文本文件转换为图像PDF的最佳分辨率是多少?96dpi,300dpi或更高?

通常,您要打印的任何东西都应为300dpi或更高。大多数打印机也会处理更高的分辨率。


2
poppler项目中的pdfimages版本(可能比原始问题更新)添加了-list选项:pdfimages -list test.pdf。而不是输出文件,而是列出大小和图像类型。仍然没有明确为您提供解决方案,但避免创建输出文件。
13年

1
@scruss从0.34.0版开始,pdfimages -list显式提供x-ppiy-ppi以及许多其他信息。
Skippy le Grand Gourou

@SkippyleGrandGourou现在的确如此:问了问题大约五年后。pdfimages仍然不将该分辨率/大小应用于它提取的图像。
scruss

@scruss实际上,似乎由给出的分辨率pdfimages可能相差很大(例如,当图像大于其可见区域时,在产生的PDF中scribus)。(很遗憾,我现在真的没有时间提交错误报告。)
Skippy le Grand Gourou

4

由于某种原因,我可以在CentOS中升级的pdfimages的最新版本是3.04版。

因此,我没有前面的答案中所述的-list选项。但是,基于slhck答案从pdfimages创建的测试图像包含所需答案!

确定-verbose test-0000.jpg | 更多

Image: test-0000.jpg  
Format: JPEG (Joint Photographic Experts Group JFIF format)  
Mime type: image/jpeg  
Class: DirectClass  
Geometry: 6600x5100+0+0  
Resolution: 600x600  
Print size: 11x8.5

因此,使用identify命令中的-verbose选项在第6行上显式显示dpi。

因此,slhck的答案可以修改为以下内容。

pdfimages -j test.pdf测试&& $中的文件(找到。-name“ test * .jpg”);标识-verbose“ $ file” | awk'NR == 6'; 做完了

另一方面,我尝试跑步

确定详细测试.pdf

Format: PDF (Portable Document Format)  
Mime type: application/pdf  
Class: DirectClass  
Geometry: 792x612+0+0  
Resolution: 72x72  
Print size: 11x8.5  

似乎Imagemagick始终假定为72dpi,因此此处打印的信息似乎不正确。


1

PDF文件没有固有的分辨率,其中的每个光栅图像(如果有)将具有其自己的分辨率。我不知道提取嵌入式数字XObjects的中位数/模态分辨率的单个数字的简单方法。


顺便说一句,我对从pdf中提取图像数据不感兴趣,我只想知道什么是扫描分辨率,如果扫描分辨率很高,则将来想避免这种情况。
hk_

@Dave:实际上,我的意思是提取有关嵌入图像的信息,而不是提取图像。但是slhck的答案可能会解决您的问题。
RedGrittyBrick

1

这与从Kyocera mfp生成的pdf一起使用。这可能仅对扫描等全页图像有效。

  1. 使用阅读器打开pdf文件-
  2. 文件>属性-“描述”选项卡-页面大小。我的例子说8.5x11.0 in。

  3. 使用文本编辑器(记事本)打开pdf,查找/width/height

  4. 将高度和宽度除以页面的高度和宽度(以英寸为单位)

例:

5100/8.5=600
6600/11.0=600

我的PDF以600x600分辨率扫描。

如果您知道文档大小(通常A4为8.27x11.69),则可以跳过前两个步骤。


0

要回答您的第二点,除了@slhck提到打印机dpi以外,对于字体大小为10 + pt的OCR,300dpi也是典型的最小建议数字。

此外,现代的15英寸4K笔记本电脑屏幕也只有约280PPi,因此,如果要在屏幕上查看整个A4(横向),则不会以高于〜320 dpi的分辨率进行点扫描,因为任何高于该分辨率的文档都会当然,如果您打算放大,则没关系,那么您可能需要更高的dpi。

为了回答您的其他两点,至少现在,您可以使用Acrobat Pro检查图像DPI和分辨率,也可以对其进行编辑。

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.