Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java itext-添加不带边框的png图像_Java_Itext - Fatal编程技术网

Java itext-添加不带边框的png图像

Java itext-添加不带边框的png图像,java,itext,Java,Itext,我想将以下png图像添加到我的pdf中: 我使用以下代码来执行此操作: Image img = PngImage.getImage(filename); img.setBorder(Image.NO_BORDER); img.setAlignment(Element.ALIGN_CENTER); img.scaleAbsolute(width,height); document.add(img); 该图像包含一个没有外部边框的条形图。当我将图像添加到pdf时,它会显示一个外边框,但仅显示底部

我想将以下png图像添加到我的pdf中:

我使用以下代码来执行此操作:

Image img = PngImage.getImage(filename);
img.setBorder(Image.NO_BORDER);
img.setAlignment(Element.ALIGN_CENTER);
img.scaleAbsolute(width,height);
document.add(img);
该图像包含一个没有外部边框的条形图。当我将图像添加到pdf时,它会显示一个外边框,但仅显示底部、左侧和顶部:

我想删除pdf中的边框,但上面的代码无法实现这一点


我正在使用iText-2.1.5。

在评论中,我声称您的原始图像确实有边框。你声称它没有边界。既然你已经分享了这张图片,我们可以检查事实,看看谁是对的

事实证明,我是对的。当我在GIMP中打开图像时,我清楚地看到一个透明的边框:

也许你看不到,因为你在看画中的形象,或者你认为“透明”和“白色”是相同的颜色。显然,这一假设是错误的

我创建了一个包含您共享的图像的PDF,当我使用打开此PDF时,我看到如下内容:

ISO-32000-1(又名PDF规范)不支持PNG,因此,想要将PNG引入PDF文件的软件需要将该PNG转换为其他格式。在iText的情况下,“正常”PNG被转换为带过滤器的位图
/flateCode

在您的例子中,您有一个带有tranparency的PNG。在ISO-32000-1中,透明图像始终存储为两个图像:不透明图像(在我的屏幕快照中,对象编号为2的
/Img1
)和图像遮罩(在我的屏幕快照中,对象编号为1的
/Img0

如果仔细观察图像遮罩(使不透明图像透明的图像),您会发现它是一个黑白图像,显示非常小的边框。此图像显示在右下面板中,其中显示“流”(这是渲染图像流的位置)。这个非常小的边框是我们在GIMP(或其他支持透明图像的图像查看器)中也可以看到的透明边框

如果这个边框是透明的,那么为什么要在PDF查看器中看到它?这个边界被当作一条零宽度的线。在PDF查看器中,使用可在用于查看PDF的设备上显示的最小宽度显示宽度为零的行。如果放大PDF,您会注意到线条的宽度保持不变

总结:您声称您的图像没有任何边框,并且边框是由iText添加的。我已经证明你错了:图像确实有一个透明边框,iText正确地将此透明边框作为遮罩引入。根据ISO-32000-1,PDF查看器将此边框显示为零宽度线

您可以通过删除原始图像中的透明边框来解决问题。例如:我使用GIMP展平了图像。结果是这样的图像:

此图像不再具有透明边框,将其引入PDF时,不会显示边框,也不会向PDF添加遮罩:


(1.)默认情况下,iText不会向图像添加任何边框。如果仍然看到边框,则该边框已存在于图像中。在另一个查看器中查看图像时,您可能看不到它,但它就在那里!(2) 您正在使用iText 2.1.5。该版本的日期为2009年3月。差不多7岁了。请升级。但这是png文件,我在paint中打开图像,但它没有显示任何外部边框,即使我尝试裁剪和复制此图像并粘贴到另一个编辑器中,但它没有显示任何外部边框,但当我在pdf中通过java添加时,它显示的是外部边框。尽管您声称图像有边框。然而:边界是透明的,这可能解释了为什么你做出了错误的假设。非常感谢布鲁诺的快速反应。这是我的错误,我没有仔细考虑。请随意接受答案(单击问题旁边的“接受”按钮)。