我正在开发一个java应用程序,并且在scrollPanel中有一些“工作”JLayeredPanel,我在其中添加了一些JLabel! (就像在Word上工作一样)。我想从layeredPanel获取所有组件并获取PDF文件。
我所拥有的是从layeredPanel获取一个图像,然后使用该图像的iTextPdf生成PDF,但我没有得到我想要/需要的分辨率。
public void printToPDF(java.awt.Image awtImage, String fileName) {
try {
Document d = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream(fileName));
d.open();
Image iTextImage = Image.getInstance(writer, awtImage, 1);
iTextImage.setAbsolutePosition(0, 0);
iTextImage.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight());
d.add(iTextImage);
d.close();
}
}
我需要遍历layeredPane的所有组件,将它们分别添加到d
以获得JLabel文本的真实分辨率,而不是它的图像版本。
我正在使用iTextPDF v5.5.12
编辑2:
在生成PDF之前保存图像我获得与屏幕“工作区域”相同的分辨率。
使用该图像生成PDF,我有:
scaleToFit(PageSize.A4)
生成 - >它变得像素化了; scaleToFit(PageSize.A4)
的情况下生成 - >它变得过大,当调整到A4时 - >它变得像素化; (据说原始图像已经是A4尺寸!)暗示,我必须要解决方案
而不是这个:Example of PDF - image(这不是文字,它是图像,所以它像素化)
我更喜欢这个,所以我可以在打印最终文件时避免一些CMYK问题。