在 iText 7 中使用图像作为水印

Use an Image as a watermark in iText 7

iText 7 just came out May 2016, and while some of the tutorials have been helpful, some of the more advanced functions have been harder to figure out. This page 有一个如何使用文本作为水印的示例(页面下方大约 90%),但我不知道如何使用图像作为水印,并且我真的不知道从哪里开始新版本。有人知道如何在 iText 7 中使用图像作为水印吗?有什么想法可以从哪里开始吗?

我不是 100% 肯定这是正确的方法,但我会说我有 95% 的信心。

利用tutorial for iText 7 that you linked to as a starting guide along with the iText 5 version我们可以用一个"graphics state"来修改当前的canvas.

(下面的代码是 C# 但你应该能够很容易地将它转换为 Java,几乎只是将属性和方法的第一个字母小写。另外,我使用完整的命名空间路径只是为了让你知道东西在哪里。)

首先,创建自定义状态并设置其透明度:

//Create a transparent state
iText.Kernel.Pdf.Extgstate.PdfExtGState tranState = new iText.Kernel.Pdf.Extgstate.PdfExtGState();
tranState.SetFillOpacity(0.5f);

其次,获取图像:

//Get your image somehow
iText.IO.Image.ImageData myImageData = ImageDataFactory.Create("D:\14.jpg", false);
iText.Layout.Element.Image myImage = new iText.Layout.Element.Image(myImageData);

第三(可选),根据需要更改图像:

//Position, rotate and scale it as needed
myImage.SetFixedPosition(100, 100);
myImage.SetRotationAngle(45);
myImage.ScaleAbsolute(200, 200);

第四,保存pdfCanvas(来自教程)状态并设置一个新状态:

pdfCanvas.SaveState().SetExtGState(tranState);

第五,将你的图像添加到更高级别canvas(再次来自教程):

canvas.Add(myImage);

第六,重置pdfCanvas状态:

pdfCanvas.RestoreState();

布鲁诺更新:

添加图像在 Chapter 3 of the "iText 7: Building Blocks" 教程中进行了说明。在 "iText 7: Jump-Start tutorial" 的第 3 章中,我们使用 PdfCanvasCanvas 对象。 "Building Blocks" 教程中缺少有关如何创建和添加图像的信息。