是否有任何免费的库,可以用来获得PDF文件所包含的新闻部图像的分辨率?
我使用PDFSharp尝试了以下代码,但是它返回的DPI是不正确的。例如,它显示了96dpi,而应该是150 For:
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;
}
}发布于 2015-01-14 12:03:36
您可以使用命令行工具获取所需的信息:pdfimages.
但是,您需要一个基于pdfimages的最新版本的波普尔图书馆 (而不是,也就是基于XPDF的“pdfimages”!)
最近的Poppler版本允许您使用-list选项:
pdfimages -list -f 2 -l 4 my.pdf上面示例命令的输出显示页面中的所有图像,从2 (f irst page to example )到4 (l ast page to show)不等。
下面是上面命令的输出,使用我专门为这个问题准备的示例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%输出如下:
page和num列所示)。16 0 (如11+12列所示,标题为object + ID)。这意味着PDF只定义了一个不同的对象,但显示了三次(即图像只嵌入一次,但显示在3页上)。697像素,高度为1238像素,图像深度(每色比特)为8,颜色空间为gray,颜色通道/分量数为1,压缩方案为jpeg,其字节大小(作为嵌入式)为142K,压缩速率为17% (由列4-9和14+15 headed width指示,height、color、comp、bpc、D39和ratio)。然而,相同的图像以不同的分辨率出现在不同的页面上(以PPI -每英寸像素--而不是DPI):- page 2 shows it with a PPI of `320` in both directions,
- page 4 shows it with a PPI of `151` in both directions,
- while page 3 shows it with a PPI of `84` in horizontal (X) direction and `115` PPI in vertical (Y) direction.
现在,如果命令行工具不能被重新用于您的目标:作为上面所示工具的基础的Poppler库当然是免费的(“自由中的自由”,以及“在啤酒中的自由”)。
下面是一个),用于演示上面命令的输出。
发布于 2015-01-14 08:30:28
PDF不一定在定义中使用DPI。PDF允许文档创建者定义自己的用户坐标空间,该空间可能映射到或不映射到任何类似于每英寸点的位置。
来自这里:
https://stackoverflow.com/questions/27938551
复制相似问题