如何解决使用inkcov
我使用Ghostscript通过裁剪我感兴趣的区域(在vb.net中使用iTextSharp)然后运行来检查pdf页面的一部分是否没有内容:
gswin64c.exe -o - -sDEVICE=inkcov c:\cropped.pdf
这足够好用,但是如果我让Ghostscript查看页面上特定的矩形区域(而不是整个页面),则可以更好地解决问题。
这可能吗?
解决方法
您可以将-dDEVICEWIDTHPOINTS和-dDEVICEHEIGHTPOINTS与-dFIXEDMEDIA一起使用以指定固定的介质大小。您要将其设置为要使用的“窗口”大小。
然后,您需要移动PDF内容,以使您感兴趣的页面部分位于窗口下方。为此,您需要编写一些PostScript代码。
您需要定义一个BeginPage过程,该过程将在每个页面的开始处执行,在那里您需要转换页面原点。
所以让我们举一个具体的例子:
假设您有一个A4页面(612x792磅),并且想要将渲染的内容限制为右上角1x2英寸的矩形。我们首先定义媒体大小:
-dDEVICEWIDTHPOINTS=72 -dDEVICEHEIGHTPOINTS=144 -dFIXEDMEDIA
然后,我们需要移动原点(0,0),它是PostScript和PDF中的左下角,以便仅内容的右上部分位于页面上。这意味着我们需要将内容向左移动540点,向下移动648点。所以我们的BeginPage过程是:
/BeginPage {-540 -648 translate}
,因此我们将其安装在当前页面设备中:
<<
/BeginPage {-540 -648 translate}
>> setpagedevice
为了引入任意PostScript,我们使用-c命令(完成后需要告诉GS,通常为此使用-f开关,但是任何开关都可以)
因此您的原始命令行将是:
gswin64c -dDEVICEWIDTHPOINTS=72 -dDEVICEHEIGHTPOINTS=144 -dFIXEDMEDIA -sDEVICE=inkcov -o - -c "<</BeginPage {-540 -648 translate}>> setpagedevice" -f original.pdf
显然,这里的确切数字将由您决定。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。