首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PDFBox中的特定点处分裂

在PDFBox中的特定点处分裂
EN

Stack Overflow用户
提问于 2015-06-03 09:35:18
回答 1查看 377关注 0票数 0

我想分裂生成一个新的pdf,通过连接某些单独的网页,但最后一页必须在某一点(即所有的内容以上的限制,包括和所有下面的内容被排除-我只关心他们的左上角超过一条线)。使用PDFbox可以吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 21:26:21

实现这一任务的一种方法,即在某个点拆分一个页面(即所有要包含的限制以上的内容,以及下面要排除的所有内容)将是在剪辑路径前面加上一个片段路径。

您可以使用此方法:

代码语言:javascript
复制
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)));
}

若要沿给定的clipBox裁剪给定页,请执行以下操作。(它首先创建一个定义剪辑路径的新内容流,然后将该流安排为页面的第一个。)

例如,若要沿底部上方650单位的水平线裁剪页面内容,请执行以下操作:

代码语言:javascript
复制
PDPage page = ...
PDRectangle cropBox = page.findCropBox();
clipPage(document, page, new BoundingBox(
    cropBox.getLowerLeftX(),
    cropBox.getLowerLeftY() + 650,
    cropBox.getUpperRightX(),
    cropBox.getUpperRightY()));

关于运行中的示例,请看这里:ClipPage.java

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30616220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档