当前位置: 首页 > 知识库问答 >
问题:

如何使用Java中的PDFBOX在pdf中裁剪每个页面?

柴华灿
2023-03-14

我想删除PDF中每个页面的底部部分,但不改变页面大小,什么是推荐的方式在PDFBOX中的java中做到这一点?如何删除页脚从PDF中的每个页面?

是否有可能使用PDRectgle删除其中的所有文本/图像?

我所尝试的片段,使用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

共有2个答案

公冶麒
2023-03-14

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

从PDF规范:

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

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

如果你看到(有缺陷的)应用程序和库迫使CropBox和MediaBox保持一致,请仔细检查你的案例中是否出现了这种情况。

还要考虑到PDF中的坐标原点(0,0)位于左下角,有些库会为您翻译到左上角,有些库则不会,您可能还需要在正在使用的库中再次检查这一点。

穆劲
2023-03-14

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

总的来说,不要指望PDFBox文档告诉你很多关于PDF本身的事情——要使用PDFBox,我认为你需要去其他地方——好吧,主要是PDF规范。不过我还没浏览呢!

 类似资料:
  • 我正在尝试将单个PDF拆分为多个。将10页文档转换为10页单页文档。 这里的问题是,新文档的页面大小与原始文档不同。因此,一些文本在新文档中被裁剪或丢失。我正在使用PDFBox 2.0,如何避免这种情况? 更新:感谢@mkl。 斯普利特变魔术了。这是更新后的工作部件,

  • 我正在尝试使用pdfbox库签署pdf。我现在卡住了,真的需要帮助。 这是我的代码: 然后我正在保存我的pdf,但是:1)我注意到sign method从来没有被调用2)我应该在哪里附加CertyFicate?在sign method中? 以下是我保存PDF的方法:

  • 问题内容: 我如何像以前在PIL中一样使用OpenCV裁剪图像。 PIL的工作示例 但是我如何在上做到这一点? 这是我尝试的: 但这是行不通的。 我认为我使用不正确。如果是这种情况,请说明如何正确使用此功能。 问题答案: 非常简单。使用numpy切片。

  • 我正在使用PDFbox下载PDF。我想在中间添加一些新页面。 此代码在PDF结尾处插入新页面。如何在另一个位置插入页面?

  • 我已经编写了执行以下操作的代码: 以特定页面大小(例如8.5英寸x 11英寸)的PDF为例 为此,我使用方法从原始PDF获取当前页面,然后使用方法将原始页面放置到新PDF的当前页面上。 我的新挑战是,在将原始PDF添加到新PDF之前,我需要裁剪它。例如,假设我想在强制使用之前将原始PDF裁剪2英寸。输入PDF仍然是8.5英寸x11英寸,新PDF仍然是17英寸x11英寸,但新PDF中原始PDF的两个

  • 如何为PDF表单中的每个字段设置定义值,假设我的PDF表单中有5个字段,例如2个文本框(名字和姓氏)和2个复选框(Check_1,Check_2),2个单选按钮(男,女),然后最后我有另一个文本框(地址),现在我必须定义或设置每个字段的值,比如1代表名字,2代表姓氏,3代表Check_1并继续到7代表地址。下面是一段代码来定义每个字段的值,但我面临一些问题,当设置单选按钮字段的值时,当涉及男和女字