在PDFBox中的特定点拆分
我希望通过连接某些单独的页面来拆分生成新的pdf,但最后一页必须在某个点拆分(即,所有超出限制的内容都要包含,下面的内容都要排除-我只关心左上角在一行上方的内容)。是否可以使用PDFbox?实现该任务的一种方法是,在某个点拆分页面(即,所有超出限制的内容都将被包括,而所有低于限制的内容都将被排除),这将是预先设置剪辑路径 您可以使用以下方法:在PDFBox中的特定点拆分,pdf,split,pdfbox,Pdf,Split,Pdfbox,我希望通过连接某些单独的页面来拆分生成新的pdf,但最后一页必须在某个点拆分(即,所有超出限制的内容都要包含,下面的内容都要排除-我只关心左上角在一行上方的内容)。是否可以使用PDFbox?实现该任务的一种方法是,在某个点拆分页面(即,所有超出限制的内容都将被包括,而所有低于限制的内容都将被排除),这将是预先设置剪辑路径 您可以使用以下方法: void clipPage(PDDocument document, PDPage page, BoundingBox clipBox) throws I
void clipPage(PDDocument document, PDPage page, BoundingBox clipBox) throws IOException
{
PDPageContentStream pageContentStream = new PDPageContentStream(document, page, true, false);
pageContentStream.addRect(clipBox.getLowerLeftX(), clipBox.getLowerLeftY(), clipBox.getWidth(), clipBox.getHeight());
pageContentStream.clipPath(PathIterator.WIND_NON_ZERO);
pageContentStream.close();
COSArray newContents = new COSArray();
COSStreamArray contents = (COSStreamArray) page.getContents().getStream();
newContents.add(contents.get(contents.getStreamCount()-1));
for (int i = 0; i < contents.getStreamCount()-1; i++)
{
newContents.add(contents.get(i));
}
page.setContents(new PDStream(new COSStreamArray(newContents)));
}
下面是一个正在运行的示例:。如果该行下面的内容不可见,这就足够了吗?在这种情况下,为页面内容预先设置剪辑路径就足够了;这是相当容易做到的。或者必须从文件中完全删除该内容(例如,出于安全原因)?一个通用的解决方案要困难得多。实际上,我想做的是收集几个pdf文件的一部分,并将它们与标记一起存储在数据库中。然后,用户将使用关键字搜索这些部分,他们将返回按标题显示的结果。半页不会对加载产生影响,但仍可能不美观。种植作物可能是另一种解决办法。
PDPage page = ...
PDRectangle cropBox = page.findCropBox();
clipPage(document, page, new BoundingBox(
cropBox.getLowerLeftX(),
cropBox.getLowerLeftY() + 650,
cropBox.getUpperRightX(),
cropBox.getUpperRightY()));