2011-09-06 90 views
2

我有一个java应用程序,它使用的是生成报告的文本。 我必须包含一个分辨率为150dpi的标志。 我uwrote的代码如下:Itext和PngImage

final float logoWidth = 368; 
final float logoHeigth = 182; 
float x = PageSize.A4.getWidth() - (16 * millimeters) - logoWidth; 
float y = PageSize.A4.getHeight() - logoHeigth;  

final InputStream idLogo = getClass().getResourceAsStream("/logos/ID_Module_150dpi_layoutgroesse.png"); 

Image logoTop = PngImage.getImage(idLogo); 
logoTop.setAbsolutePosition(x, y); 

的问题是,该标志是在合适的位置添加,但大小是不正确的。它是高度的两倍,宽度的两倍。我在这里做错了什么?

在此先感谢!

回答

3

您是否尝试过scaleToFit()

Image logoTop = PngImage.getImage(idLogo); 
logoTop.scaleToFit(x, y); 

然后把它定位,我个人使用scaleToFit()与iText的表格相结合,定位

+1

好了,之间我发现,如果图像被放置没有任何缩放分辨率将为72.如果放大图像的缩放比例为50%,分辨率将为144.对于较低的缩放比例,分辨率会增加,因为像素相同,但尺寸会更小。在我的情况下,我必须调整到45%,因为所需的分辨率是150 DPI。我正在使用logoTop.scalePercent(48) – Luixv

+0

噢好吧,非常有趣,很高兴你找到了答案! – epoch

+0

顺便说一句,我不得不将其缩放到48%而不是45%。我的错。 – Luixv