使用gswin32c.exe -o nul -sDEVICE=bbox bbox.pdf
,我知道此pdf的BoundingBox是
%% BoundingBox:6292 6865 8108 7535
%% HiResBoundingBox:6292.907808 6865.505790 8107.091753 7534.493770,
我想在BoundingBox中获取带有内容的pdf。
我使用以下命令裁剪PDF:
gswin32c -sDEVICE=pdfwrite -dFirstPage=1 -dLastPage=1 -o croped.pdf -dDEVICEWIDTHPOINTS=1815 -dDEVICEHEIGHTPOINTS=670 -dFIXEDMEDIA -c "6292 6865 translate 6292 6865 8107 7534 rectclip" -f bbox.pdf
或
gswin32c -dQUIET -dBATCH -dNOPAUSE -dNOPROMPT -sDEVICE=pdfwrite -dFirstPage=1 -dLastPage=1 -o croped.pdf -dDEVICEWIDTHPOINTS=1815 -dDEVICEHEIGHTPOINTS=670 -dFIXEDMEDIA -c "<</PageOffset [6292 6865]>> setpagedevice" -f bbox.pdf
我是一个空白的pdf文件。
这个命令
gswin32c.exe -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=croped.pdf -c "[/CropBox [6292.907808 6865.505790 8107.091753 7534.493770] /PAGES pdfmark" -f bbox.pdf
我是原始档案。
如何正确裁剪此pdf。
非常感谢!
答案 0 :(得分:0)
BoundingBox看起来很可疑。
在任何情况下,您都无法轻易完成Ghostscript的操作,因为PDF解释器使用PDF文件中的信息来设置媒体大小。
前两个命令行可能&#39;工作,但你已经将CTM转向了错误的方向。您已从左下方向上和向右移动原点(0,0)。这使得页面的内容进一步偏离媒体,这就是为什么你得到一个空白页面。您可以尝试使用相同的值,但是否定,以便原点向下和向左移动。在你引用的BoundingBox中,这是正确的方向。
gswin32c -sDEVICE=pdfwrite -dFirstPage=1 -dLastPage=1 -o croped.pdf -dDEVICEWIDTHPOINTS=1816 -dDEVICEHEIGHTPOINTS=670 -dFIXEDMEDIA -c "-6292 -6865 translate" -f bbox.pdf
您不需要使用rectclip,因为内容已被剪切到页面。
第三个命令行也可以工作,除了你在处理PDF文件之前设置CropBox ,所以PDF解释器从PDF文件中读取CropBox并覆盖你组。尝试在输入文件后设置它。
gswin32c.exe -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=croped.pdf bbox.pdf -c "[/CropBox [6292.907808 6865.505790 8107.091753 7534.493770] /PAGES pdfmark" -f
[编辑]
好的,所以第一个命令行不起作用的原因是(我怀疑),因为PDF解释器在运行PDF之前会重置图形状态,因此它只会丢弃“翻译”。
如果你否定了PageOffset数组中的操作数,第二个命令行对我来说非常有效:
gswin32c -sDEVICE=pdfwrite -sOutputFile=\temp\out.pdf -dDEVICEWIDTHPOINTS=1815 -dDEVICEHEIGHTPOINTS=670 -dFIXEDMEDIA -c "<</PageOffset [-6292 -6865]>>setpagedevice" -f D:\Users\ken\Downloads\bbox.pdf
第三个命令行不起作用,因为它为所有Pages设置了CropBox,这是默认设置,可以通过在每个页面上设置CropBox来覆盖它。您的原始PDF文件包含一个由PDF解释器保留的CropBox(与MediaBox相同),因此PAGES CropBox会被特定于页面的CropBox覆盖。
但上面的命令行对我来说很好。