从JPanel组件生成PDF

时间:2017-10-06 17:25:55

标签: java swing pdf itext

我正在开发一个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,我有:

  1. 使用scaleToFit(PageSize.A4)生成 - >它变得像素化了;
  2. 在没有scaleToFit(PageSize.A4)的情况下生成 - >它变得过大,当调整到A4时 - >它变得像素化; (据说原始图像已经是A4尺寸!)
  3. 暗示,我必须要解决方案

    1. 仅保留原始图像文件;
    2. 尝试以其他方式生成PDF。 这样的事情:Example of PDF - text(这是文字所以它保持分辨率);
    3. 而不是这个:Example of PDF - image(这不是文字,它是图像,所以它像素化)

      我更喜欢这个,所以我可以在打印最终文件时避免一些CMYK问题。

0 个答案:

没有答案