iText7 图像透明度
iText7 Image Transparency
我想将透明的 png 图像添加到现有的 pdf 中以模糊文本的某些部分。我不明白如何应用透明度
我尝试了文档中的几个代码示例,但none 有效
// 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被注释掉时
我希望能够设置透明度并在 pdf 顶部看到这些模糊图像。
我正在使用这张图片来模糊文本:
您的"transparent image" (54-544263_face-blur-png-face-blur-overlay-png-transparent.png) 根本不透明!它可能是一个屏幕截图,显示透明图像在支持透明图像并在其下衬棋盘图案以可视化透明度的图像编辑器中的外观。
稍微调查一下示例图片的来源后:
您似乎已经从 pngix.com 下载了预览图像。这些预览图像不包含实际透明度,而是说明该透明度的效果。要从 pngix.com 获得具有当前 UI 的实际透明度的图像,您必须非常努力地寻找并在页面上找到 "free download" 按钮(对我来说它夹在 [=33] 之间=]),然后是弹出窗口中的 "Download PNG" 按钮;这允许您下载具有实际透明度的图像。
也就是说,您可以使用免费工具(例如瘸子。来自 pngix.com 的图片仅供个人使用,因此理论上,如果您在没有额外许可的情况下以专业方式使用它们,则可能需要处理法律问题。
更好的是,您实际上根本不需要位图图像,您还可以使用使用矢量图形指令的本机 PDF 机制,即无需引入大图像的结果在高分辨率下看起来不错!参见例如, that image was created using the test method testComplex
from the TestTransparency 测试 class.
底部的示例屏幕截图
我想将透明的 png 图像添加到现有的 pdf 中以模糊文本的某些部分。我不明白如何应用透明度
我尝试了文档中的几个代码示例,但none 有效
// 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被注释掉时
我希望能够设置透明度并在 pdf 顶部看到这些模糊图像。
我正在使用这张图片来模糊文本:
您的"transparent image" (54-544263_face-blur-png-face-blur-overlay-png-transparent.png) 根本不透明!它可能是一个屏幕截图,显示透明图像在支持透明图像并在其下衬棋盘图案以可视化透明度的图像编辑器中的外观。
稍微调查一下示例图片的来源后:
您似乎已经从 pngix.com 下载了预览图像。这些预览图像不包含实际透明度,而是说明该透明度的效果。要从 pngix.com 获得具有当前 UI 的实际透明度的图像,您必须非常努力地寻找并在页面上找到 "free download" 按钮(对我来说它夹在 [=33] 之间=]),然后是弹出窗口中的 "Download PNG" 按钮;这允许您下载具有实际透明度的图像。
也就是说,您可以使用免费工具(例如瘸子。来自 pngix.com 的图片仅供个人使用,因此理论上,如果您在没有额外许可的情况下以专业方式使用它们,则可能需要处理法律问题。
更好的是,您实际上根本不需要位图图像,您还可以使用使用矢量图形指令的本机 PDF 机制,即无需引入大图像的结果在高分辨率下看起来不错!参见例如testComplex
from the TestTransparency 测试 class.