是否有免费的图书馆,可用于解析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;
}
}
答案 0 :(得分:3)
您可以使用命令行工具获取所需信息: pdfimages
。
但是,您需要一个基于Poppler library的最新版本pdfimages
( 不 '基于{的pdfimages' {3}}!)
最近的Poppler版本允许您使用-list
选项:
pdfimages -list -f 2 -l 4 my.pdf
上述示例命令的输出显示页面范围内的所有图像,范围从2( f 第一页显示)到4( l < / em> 要显示的页面。
以下是上述命令的输出,使用我专门为此问题准备的示例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页上)。
图片的宽度为697
像素,其高度为1238
像素,其图像深度(每种颜色的位数)为8
,其色彩空间为gray
其颜色通道/组件的数量为1
,其压缩方案为jpeg
,其字节大小(嵌入式)为142K
,其压缩率为17%
(如下所示)第4-9和14 + 15列width
,height
,color
,comp
,bpc
,size
和ratio
)。
但是,相同的图像会出现在不同分辨率的不同页面上(以 PPI - 每英寸像素数 - 不是 DPI ):
第2页显示两个方向的PPI均为320
,
第4页显示两个方向的PPI均为151
,
,而第3页显示水平(X)方向的PPI为84
,垂直(Y)方向的PPI为115
。
现在,如果命令行工具无法重新用于您的目标:作为上述工具基础的Poppler库肯定是免费的('自由',如同在自由',以及'免费,如啤酒')。
以下是 XPDF 我用来演示上述命令的输出。
答案 1 :(得分:1)
PDF不一定在其定义中使用DPI。 PDF允许 文档创建者可以定义自己的用户坐标空间 或者可能不会映射到类似于Dots Per Inch的任何内容。
来自here: