ghostscript crop pdf不正确

时间:2017-09-05 09:26:47

标签: pdf ghostscript

inputPdf

使用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。

非常感谢!

1 个答案:

答案 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覆盖。

但上面的命令行对我来说很好。