[英]iText7 Image Transparency
我想将透明的png图像添加到现有的pdf中,以模糊文本的某些部分。 我不明白如何应用透明度
我已经尝试了文档中的几个代码示例,但没有一个起作用
// Read the pdf input
PdfReader pdfReader = new PdfReader(value);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PdfWriter pdfWriter = new PdfWriter(outputStream);
PdfDocument pdfDoc = new PdfDocument(pdfReader, pdfWriter);
Document document = new Document(pdfDoc);
// Creating an ImageData object
ImageData data = ImageDataFactory.create(fileName);
data.setTransparency(new int[] {0xF0, 0xFF });
for (int x = 1; x < 800; ) {
for (int y = 1; y < 1000; ) {
Image image = new Image(data);
image.setFixedPosition(x , y);
document.add(image);
y = y + y1 + 40;
}
x = x + x1 + 40;
}
// The content has now been modified, return it as a stream
document.close();
当我使用setTransparency方法时,屏幕上没有任何显示,好像它是完全透明的一样。 如果我注释掉setTransparency方法,则会添加模糊图像,但不会完全透明,从而使其无效。
我附上两个输出pdf的屏幕截图。 第一个是调用setTransparency方法时。 第二个是注释setTransparency方法时。
您的“透明图像”( 54-544263_face-blur-png-face-blur-overlay-png-transparent.png ) 根本不透明 ! 它可能是屏幕快照的截图 ,显示了透明图像在支持透明图像的图像编辑器中的外观,并在其下面铺有棋盘图案以可视化透明。
在调查了该示例图像的来源之后:
您似乎已从pngix.com下载了预览图像。 这些预览图像不包含实际的透明度,而是说明该透明度的效果。 要从pngix.com的当前用户界面中获得具有实际透明度的图像,您必须非常努力地寻找页面上的“免费下载”按钮(对我而言,它夹在“赞助搜索”之间),然后是“在弹出窗口中下载PNG”按钮; 这使您可以下载具有实际透明度的图像。
话虽如此,您可以使用免费工具(例如gimp)轻松地自己创建此类圆形渐变为透明的图像。 pngix.com上的图像仅供个人使用,因此从理论上讲,如果您在没有额外许可的情况下专业使用图像,则可能必须处理法律问题。
甚至更好的是,您实际上根本不需要位图图像 ,还可以使用使用矢量图形指令的本机PDF机制,即,无需引入大图像即可获得高分辨率的效果! 请参见此 答案底部的示例屏幕截图,该图像是使用TestTransparency测试类的测试方法testComplex
创建的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.