添加水印到pdf java iText

时间:2017-10-19 08:41:01

标签: java pdf itext watermark

我想在pdf文件中添加图片或文字水印。我在网上找到了一些例子,但我的情况有点不同。

我有一个现有的pdf模板,该模板已经填充了动态数据并转换为byte []。生成的字节稍后会导出为pdf。

我想将水印添加到生成的字节中。 类似的东西:

byte[] addWatermark(byte[] generatedBytes){
  byte[] bytesWithWatermark;

  //add watermark to bytes

  return bytesWithWatermark;
}

我似乎无法弄明白如何使用iText。

1 个答案:

答案 0 :(得分:0)

您说您已经有使用iText应用水印的示例。由于您已有PDF,因此应使用向现有 PDF添加水印的示例中的代码。这应该是适用于PdfReader / PdfStamper对的示例,例如那些here,都具有结构

PdfReader reader = new PdfReader(SOME_SOURCE);
PdfStamper stamper = new PdfStamper(reader, SOME_TARGET_STREAM);
[... add watermark to all pages in stamper ...]
stamper.close();
reader.close();

要使这些示例适合您的addWatermark方法,只需使用byte[]代替SOME_SOURCEByteArrayOutputStream代替SOME_TARGET_STREAM

byte[] addWatermark(byte[] generatedBytes) {
    try (ByteArrayOutputStream target  = new ByteArrayOutputStream()) {
        PdfReader reader = new PdfReader(generatedBytes);
        PdfStamper stamper = new PdfStamper(reader, target);
        [... add watermark to all pages in stamper ...]
        stamper.close();
        reader.close();
        return target.toByteArray();
    }
}

PS 由于您只使用了标记而非标记,我认为您正在寻找iText 5.5.x的解决方案。但是这里应用的原理相同,即使用byte[]作为源参数和ByteArrayOutputStream作为目标参数,也可以让iText 7.x示例适合您的方法框架。

相关问题