为 pdf 添加水印 java iText
Add watermark to pdf java iText
我想给 pdf 文件添加图片或文字水印。我在网上找到了一些例子,但我的情况有点不同。
我有一个现有的 pdf 模板,它已经填充了动态数据并转换为 byte[]。生成的字节稍后导出为 pdf。
我想将水印添加到生成的字节中。
类似于:
byte[] addWatermark(byte[] generatedBytes){
byte[] bytesWithWatermark;
//add watermark to bytes
return bytesWithWatermark;
}
我似乎无法弄清楚如何使用 iText 执行此操作。
您说您已经有了使用 iText 应用水印的示例。由于您已有 PDF,因此您应该使用示例中的代码将水印添加到 existing 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_SOURCE
并使用 ByteArrayOutputStream
代替 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 and not the tag itext7,我假设您正在寻找 iText 5.5.x 的解决方案。但是这里应用的相同原则,即使用 byte[]
作为源参数和 ByteArrayOutputStream
作为目标参数,也将允许您使 iText 7.x 示例适合您的方法框架。
我想给 pdf 文件添加图片或文字水印。我在网上找到了一些例子,但我的情况有点不同。
我有一个现有的 pdf 模板,它已经填充了动态数据并转换为 byte[]。生成的字节稍后导出为 pdf。
我想将水印添加到生成的字节中。 类似于:
byte[] addWatermark(byte[] generatedBytes){
byte[] bytesWithWatermark;
//add watermark to bytes
return bytesWithWatermark;
}
我似乎无法弄清楚如何使用 iText 执行此操作。
您说您已经有了使用 iText 应用水印的示例。由于您已有 PDF,因此您应该使用示例中的代码将水印添加到 existing 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_SOURCE
并使用 ByteArrayOutputStream
代替 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 and not the tag itext7,我假设您正在寻找 iText 5.5.x 的解决方案。但是这里应用的相同原则,即使用 byte[]
作为源参数和 ByteArrayOutputStream
作为目标参数,也将允许您使 iText 7.x 示例适合您的方法框架。