Java 使用PDFBox工具处理pdf-向pdf中添加内容时原pdf内容被覆盖问题解决

本文介绍了在使用PDFBox 2.0.15版本时,如何避免在向PDF添加内容时覆盖原有的页面内容。关键在于使用PDPageContentStream的AppendMode.APPEND模式,而不是OVERWRITE模式。提供了一个工具类方法,用于根据关键字段查找其在PDF中的起始页码。
摘要由CSDN通过智能技术生成

记录一下:使用PDFBox向pdf中添加内容时,覆盖了pdf中原先的内容问题解决。

创建 PDPageContentStream 对象时使用

public PDPageContentStream(PDDocument document, PDPage sourcePage, PDPageContentStream.AppendMode appendContent, boolean compress, boolean resetContext)

示例:

PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false, false);

该构造器,原先使用的

public PDPageContentStream(PDDocument document, PDPage sourcePage) throws IOException {
    this(document, sourcePage, PDPageContentStream.AppendMode.OVERWRITE, true, false);
}

这个构造器会覆盖原先pdf中的内容

注:pdfbox的版本是:2.0.15 

附上一个小工具类:

    /**
     * 根据关键字段获取其所在开始页码
     *
     * @param total:pdf总页码数
     * @param str:需要匹配的字段
     * @param document
     * @return
     * @throws IOException
     */
    public static Integer getStartPageNum(Integer total, String str, PDDocument document) throws IOException {
        int i;
        PDFTextStripper pdfStripper = new PDFTextStripper();
        Integer getStartPageNum = null;
        for (i = 0; i <= total; i++) {
            pdfStripper.setStartPage(i);
            pdfStripper.setEndPage(i);
            String text = pdfStripper.getText(document);
            if (text.contains(str)) {
                getStartPageNum = i - 1;
                break;
            }
        }
        return getStartPageNum;
    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值