iText 7刚刚于2016年5月问世,虽然有些教程很有帮助,但一些更高级的功能却难以理解。 This page有一个如何使用文本作为水印的示例(约占页面的90%),但我无法弄清楚如何使用图像作为水印,我真的不知道从新版本开始。任何人都知道如何在iText 7中使用图像作为水印?任何想法从哪里开始?
答案 0 :(得分:4)
我不是100%肯定这是正确的做法,但我说我有95%的自信。
使用tutorial for iText 7 that you linked to作为入门指南和iText 5 version我们可以使用"图形状态"修改当前画布。
(下面的代码是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.Add(myImage);
第六,重置pdfCanvas状态:
pdfCanvas.RestoreState();
布鲁诺更新:
在Chapter 3 of the "iText 7: Building Blocks"教程中解释了添加图像。在" iText 7:Jump-Start教程"的第3章中,我们使用PdfCanvas
和Canvas
对象。有关如何创建和添加图像的缺失信息位于" Building Blocks"教程。