繁体   English   中英

iText7图像透明度

[英]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方法时。

调用setTransparency时: 在此处输入图片说明

当方法setTransparency被注释掉时 在此处输入图片说明

我希望能够setTransparency并在pdf的顶部看到这些模糊的图像。 我正在使用此图像模糊文本: 在此处输入图片说明

您的“透明图像”( 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM