[英]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.