[英]How to check PDF pages for resolution (DPI) of embedded images?
是否有任何免费的库可用于获取PDF文件包含的DPI中的图像分辨率?
我使用PDFSharp尝试了以下代码,但返回的DPI不正确。 例如,它显示96dpi,而应为150dpi:
using (PdfDocument pdf = PdfReader.Open(sourcePdf))
{
for (int i = 0; i < pdf.Pages.Count; i++)
{
XGraphics xGraphics = XGraphics.FromPdfPage(pdf.Pages[i]);
float dpi = xGraphics.Graphics.DpiX;
}
}
您可以使用命令行工具获取所需的信息: pdfimages
。
但是,您需要基于Poppler库的最新版本pdfimages
(而不是基于XPDF的“ pdfimages”!)
最新的Poppler版本使您可以使用-list
选项:
pdfimages -list -f 2 -l 4 my.pdf
上面的示例命令的输出示出了从2至4中的页面范围的所有图像( 开始步骤页面显示)( 升 AST页面来显示)。
这是上述命令的输出,使用的是我专门为该问题准备的示例PDF文件(水平滚动以查看所有列):
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
---------------------------------------------------------------------------------------
2 0 image 697 1238 gray 1 8 jpeg no 16 0 320 320 142K 17%
3 1 image 697 1238 gray 1 8 jpeg no 16 0 151 151 142K 17%
4 2 image 697 1238 gray 1 8 jpeg no 16 0 84 115 142K 17%
输出显示以下内容:
在三个页面2-4上有三个图像(如第1 + 2列, page
和num
)。
所有三个图像的PDF 对象ID都是相同的: 16 0
(如第11 + 12列所示,标题object
+ ID
)。 这意味着PDF仅定义了一个不同的对象,但显示了3次(即,图像仅嵌入一次,但出现在3页上)。
图像的宽度为697
像素,高度为1238
像素,图像深度(每种颜色的位数)为8
,颜色空间为gray
,颜色通道/组件数为1
,压缩方案为jpeg
,字节大小(嵌入)为142K
,其压缩率为17%
(如第4-9和14 + 15列所示, 142K
width
, height
, color
, comp
, bpc
, size
和ratio
)。
但是,同一张图片会以不同的分辨率出现在不同的页面上(以PPI表示 -每英寸像素---而不是DPI ):
第2页显示了双向的PPI为320
,
第4页显示了双向的PPI为151
,
而第3页显示了水平(X)方向的PPI为84
,垂直(Y)方向的PPI为115
。
现在,如果不能将命令行工具重新用于您的目标:上面显示的工具的基础Poppler库肯定是Free( “自由自在” ,以及“啤酒自在” )。
这是我用来演示上述命令输出的PDF( “ my.pdf” )的链接 。
PDF不一定在其定义中使用DPI。 PDF允许文档创建者定义自己的用户坐标空间,该用户坐标空间可能会或可能不会映射到类似于“每英寸点数”的内容。
从这里:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.