我想删除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 cookbook示例中最近的例子我可以找到如何删除整个页面,但这不是我想要的,我想从页面中删除一些元素: http://pdfbox.apache.org/userguide/cookbook.html
答案 0 :(得分:3)
我也是新手,但请看一下this page,特别是TrimBox的描述。如果页面上没有TrimBox,则默认为CropBox,这会导致您看到的内容。
一般情况下,不要指望PDFBox文档能够告诉你关于PDF本身的任何内容 - 很好地使用PDFBox我认为你需要去其他地方--AFAIK,主要是针对PDF规范。不过我还没有撇去它!
答案 1 :(得分:2)
如果要在保持矩形区域可见的同时删除页面的一部分,可以使用CropBox。如果您希望页面大小保持不变,则需要MediaBox保持不变。
来自PDF规范:
裁剪框 - 矩形(可选;可继承)以默认用户空间单位表示的矩形,用于定义默认的可见区域 用户空间。显示或打印页面时,其内容为 被裁剪(裁剪)到这个矩形,然后强加在输出上 介质以某种实现方式定义(参见第10.10.1节, “页面边界”)。默认值:MediaBox的值。
MediaBox - 矩形(必需;可继承)一个矩形(参见第3.8.4节“矩形”),以默认用户空间单位表示, 定义页面所在物理介质的边界 打算显示或打印(参见第10.10.1节,“页面 边界”)。
已经看到(错误的)应用程序和库强制CropBox和MediaBox相同,请仔细检查这不是您的案例中发生的情况。
另外考虑到PDF中的坐标原点(0,0)是左下角,有些库为你做左上角的翻译,有些则没有,你可能还想仔细检查一下你正在使用的图书馆。