Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PDFBox中的特定点拆分_Pdf_Split_Pdfbox - Fatal编程技术网

在PDFBox中的特定点拆分

在PDFBox中的特定点拆分,pdf,split,pdfbox,Pdf,Split,Pdfbox,我希望通过连接某些单独的页面来拆分生成新的pdf,但最后一页必须在某个点拆分(即,所有超出限制的内容都要包含,下面的内容都要排除-我只关心左上角在一行上方的内容)。是否可以使用PDFbox?实现该任务的一种方法是,在某个点拆分页面(即,所有超出限制的内容都将被包括,而所有低于限制的内容都将被排除),这将是预先设置剪辑路径 您可以使用以下方法: void clipPage(PDDocument document, PDPage page, BoundingBox clipBox) throws I

我希望通过连接某些单独的页面来拆分生成新的pdf,但最后一页必须在某个点拆分(即,所有超出限制的内容都要包含,下面的内容都要排除-我只关心左上角在一行上方的内容)。是否可以使用PDFbox?

实现该任务的一种方法是,在某个点拆分页面(即,所有超出限制的内容都将被包括,而所有低于限制的内容都将被排除),这将是预先设置剪辑路径

您可以使用以下方法:

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()));