有没有免费的库,可用于获取 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
.
但是,您需要最新版本pdfimages
这是基于波普勒图书馆 (NOT基于的“pdfimages”XPDF!)
最近的 Poppler 版本允许您使用-list
option:
pdfimages -list -f 2 -l 4 my.pdf
上述示例命令的输出显示页面范围从 2 (f显示的第一页) 到 4 (last 页面显示)。
以下是上述命令的输出,使用我专门为此问题准备的示例 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
and num
).
The PDF 对象 ID因为所有三个图像都是相同的:16 0
(如第 11+12 栏所示,标题为object
+ ID
)。这意味着 PDF 仅定义了一个不同的对象,但显示了 3 次(即图像仅嵌入一次,但出现在 3 页上)。
图像的宽度是697
像素,其高度为1238
像素,其图像深度(每颜色位数)为8
,其色彩空间为gray
它的颜色通道/分量的数量是1
,其压缩方案为jpeg
,它的字节大小(嵌入时)是142K
,其压缩率为17%
(如第 4-9 栏和第 14+15 栏标题所示)width
, height
, color
, comp
, bpc
, size
and ratio
).
-
然而,相同的图像以不同的分辨率出现在不同的页面上(如下所示)PPI-- 每英寸像素 --- 不是DPI):
第 2 页显示它的 PPI 为320
在两个方向上,
第 4 页显示它的 PPI 为151
在两个方向上,
而第 3 页显示的 PPI 为84
在水平 (X) 方向和115
垂直 (Y) 方向的 PPI。
现在,如果命令行工具无法重新用于您的目标:作为上面所示工具基础的 Poppler 库当然是免费的(“自由如自由”, 也“像啤酒一样免费”).
这里有一个链接至 PDF("my.pdf")我曾经演示过上面命令的输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)