是否可以使用GhostScript获取页面大小(例如PDF文档页面)?我见过“bbox”设备,但是它返回了边界框(每页不同),而不是PDF页面的TrimBox(或CropBox)。 (有关页面框的信息,请参阅http://www.prepressure.com/pdf/basics/page_boxes。)还有其他可能吗?
答案 0 :(得分:12)
不幸的是,在Ghostscript的帮助下,在PDF中获取(可能是不同的)页面大小(或*盒子)似乎并不容易。
但是,由于您还要求其他可能性:确定每个页面(甚至每个嵌入式{Trim,Media,Crop,Bleed}框)的媒体大小的相当可靠的方法是命令行工具pdfinfo。可执行程序。该实用程序是http://www.foolabs.com/xpdf/download.html的XPDF工具的一部分。您可以使用“-box”参数运行该工具,并使用“-f 3”告诉它从第3页开始,并使用“-l 8”在第8页停止处理。
示例输出:
C:\downloads>pdfinfo -box -f 1 -l 3 _IXUS_850IS_ADVCUG_EN.pdf Creator: FrameMaker 6.0 Producer: Acrobat Distiller 5.0.5 (Windows) CreationDate: 08/17/06 16:43:06 ModDate: 08/22/06 12:20:24 Tagged: no Pages: 146 Encrypted: no Page 1 size: 419.535 x 297.644 pts Page 2 size: 297.646 x 419.524 pts Page 3 size: 297.646 x 419.524 pts Page 1 MediaBox: 0.00 0.00 595.00 842.00 Page 1 CropBox: 87.25 430.36 506.79 728.00 Page 1 BleedBox: 87.25 430.36 506.79 728.00 Page 1 TrimBox: 87.25 430.36 506.79 728.00 Page 1 ArtBox: 87.25 430.36 506.79 728.00 Page 2 MediaBox: 0.00 0.00 595.00 842.00 Page 2 CropBox: 148.17 210.76 445.81 630.28 Page 2 BleedBox: 148.17 210.76 445.81 630.28 Page 2 TrimBox: 148.17 210.76 445.81 630.28 Page 2 ArtBox: 148.17 210.76 445.81 630.28 Page 3 MediaBox: 0.00 0.00 595.00 842.00 Page 3 CropBox: 148.17 210.76 445.81 630.28 Page 3 BleedBox: 148.17 210.76 445.81 630.28 Page 3 TrimBox: 148.17 210.76 445.81 630.28 Page 3 ArtBox: 148.17 210.76 445.81 630.28 File size: 6888764 bytes Optimized: yes PDF version: 1.4
答案 1 :(得分:9)
与此同时,我发现了一种不同的方法。这个只使用Ghostscript(就像你需要的那样)。无需额外的第三方实用程序。
此方法使用一个用PostScript编写的小助手程序,附带Ghostscript源代码。查看 toolbin 子目录中的pdf_info.ps
文件。
包含的评论说你应该像这样运行它以列出使用的字体,使用的媒体大小
gswin32c -dNODISPLAY ^
-q ^
-sFile=____.pdf ^
[-dDumpMediaSizes] ^
[-dDumpFontsUsed [-dShowEmbeddedFonts]] ^
toolbin/pdf_info.ps
我确实在本地示例文件上运行它,命令行参数仅询问媒体大小(不是使用的字体)。结果如下:
C:\> gswin32c ^
-dNODISPLAY ^
-q ^
-sFile=c:\downloads\_IXUS_850IS_ADVCUG_EN.pdf ^
-dDumpMediaSizes ^
C:/gs8.71/lib/pdf_info.ps
c:\downloads\_IXUS_850IS_ADVCUG_EN.pdf has 146 pages.
Creator: FrameMaker 6.0
Producer: Acrobat Distiller 5.0.5 (Windows)
CreationDate: D:20060817164306Z
ModDate: D:20060822122024+02'00'
Page 1 MediaBox: [ 595 842 ] CropBox: [ 419.535 297.644 ]
Page 2 MediaBox: [ 595 842 ] CropBox: [ 297.646 419.524 ]
Page 3 MediaBox: [ 595 842 ] CropBox: [ 297.646 419.524 ]
Page 4 MediaBox: [ 595 842 ] CropBox: [ 297.646 419.524 ]
[....]
答案 2 :(得分:3)
纯GhostScript PostScript解决方案,不需要其他脚本:
gs -dQUIET -sFileName=path/to/file.pdf -c "FileName (r) file runpdfbegin 1 1 pdfpagecount {pdfgetpage /MediaBox get {=print ( ) print} forall (\n) print} for quit"
该命令将PDF中每页的MediaBox打印为每行四个数字。 3页PDF的示例:
0 0 595 841
0 0 595 841
0 0 595 841
以下是该命令的细目分类:
FileName (r) file % open file given by -sFileName
runpdfbegin % open file as pdf
1 1 pdfpagecount { % for each page index
pdfgetpage % get pdf page properties (pushes a dict)
/MediaBox get % get MediaBox value from dict (pushes an array of numbers)
{ % for every array element
=print % print element value
( ) print % print single space
} forall
(\n) print % print new line
} for
quit % quit interpreter. Not necessary if you pass -dBATCH to gs
将/MediaBox
替换为/CropBox
,以获取裁剪框。