2

我想删除 PDF 中每个页面的底部,但不更改页面大小,在 PDFBOX 中的 java 中执行此操作的推荐方法是什么?如何从PDF中的每一页中删除页脚?

有没有办法使用 PDRectangle 来删除其中的所有文本/图像?

我尝试过的片段,使用带有 setCropBox 的矩形似乎会丢失页面大小,也许cropBox 不适合这个?

            PDRectangle rectangle = new PDRectangle();
            rectangle.setUpperRightY(mypage.findCropBox().getUpperRightY());
            rectangle.setLowerLeftY(50);
            rectangle.setUpperRightX(mypage.findCropBox().getUpperRightX());
            rectangle.setLowerLeftX(mypage.findCropBox().getLowerLeftX());                  
            mypage.setCropBox(rectangle);
            croppedDoc.addPage(mypage);
            croppedDoc.save(filename);              
            croppedDoc.close();

我能找到的 pdfbox 食谱示例中最接近的示例是关于如何删除整个页面,但这不是我想要的,我只想从页面中删除一些元素:http: //pdfbox.apache.org /userguide/cookbook.html

4

2 回答 2

3

我也是新手,但是看看这个页面,特别是TrimBox的描述。如果页面上没有 TrimBox,则默认为 CropBox,这将导致您看到的内容。

一般来说,不要指望 PDFBox 文档会告诉你很多关于 PDF 本身的信息——要很好地使用 PDFBox,我认为你需要去其他地方——AFAIK,主要是为了 PDF 规范。不过,我什至还没有浏览它!

于 2012-09-14T00:53:33.117 回答
2

如果您想删除页面的一部分同时保持矩形区域可见,那么 CropBox 是您的最佳选择。如果您希望页面大小保持不变,则需要 MediaBox 保持不变。

从 PDF 规范:

CropBox - 矩形(可选;可继承)以默认用户空间单位表示的矩形,定义默认用户空间的可见区域。当页面显示或打印时,其内容将被剪裁(裁剪)到这个矩形,然后以某种实现定义的方式施加到输出介质上(参见第 10.10.1 节,“页面边界”)。默认值:MediaBox 的值。

MediaBox - 矩形(必需;可继承)一个矩形(参见第 3.8.4 节,“矩形”),以默认用户空间单位表示,定义了要在其上显示或打印页面的物理介质的边界(参见第 3.8.4 节,“矩形”) 10.10.1,“页面边界”)。

A 已经看到(错误的)应用程序和库强制 CropBox 和 MediaBox 相同,请仔细检查这不是您的情况发生的情况。

还要考虑到 PDF 中的坐标原点 (0,0) 是左下角,有些库会为您翻译到左上角,有些则不会,您可能还想在您的库上仔细检查正在使用。

于 2012-09-17T18:26:48.360 回答