如何使用Apache PDFBox在Java中为pdf添加文本水印?

时间:2016-09-21 07:06:50

标签: java pdfbox watermark

我没有获得在PDF文件中添加文本水印的任何教程?你能指导我吗,我对PDFBOX很新。

它没有重复,评论中的链接对我没有帮助。我想在pdf中添加文字,而不是图像。

1 个答案:

答案 0 :(得分:0)

以下是使用PDFBox 2.0.2的示例。这将加载PDF并在红色透明字体的右下角写入一些文本。如果是多页PDF,水印将出现在每页上。它可能不是生产就绪,因为我不确定是否需要检查一些额外的空条件,但它应该让你在正确的方向上运行。

请记住,此特定代码块不会修改原始PDF,但会使用Tmp_(filename)作为输出创建新的PDF。

        private static void watermarkPDF (File fileStored) {
    File tmpPDF;
    PDDocument doc;
    tmpPDF = new File(fileStored.getParent() + System.getProperty("file.separator") +"Tmp_"+fileStored.getName());
    doc = PDDocument.load(fileStored);
    for(PDPage page:doc.getPages()){
        PDPageContentStream cs = new PDPageContentStream(doc, page, AppendMode.APPEND, true, true);
        String ts = "Some sample text";
        PDFont font = PDType1Font.HELVETICA_BOLD;
        float fontSize = 14.0f;
        PDResources resources = page.getResources();
        PDExtendedGraphicsState r0 = new PDExtendedGraphicsState();
        r0.setNonStrokingAlphaConstant(0.5f);
        cs.setGraphicsStateParameters(r0);
        cs.setNonStrokingColor(255,0,0);//Red
        cs.beginText();
        cs.setFont(font, fontSize);
        cs.setTextMatrix(Matrix.getTranslateInstance(0f,0f));
        cs.showText(ts);
        cs.endText();
        }
        cs.close();
    }
    doc.save(tmpPDF);
}