Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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 从JPanel组件生成PDF_Java_Swing_Pdf_Itext - Fatal编程技术网

Java 从JPanel组件生成PDF

Java 从JPanel组件生成PDF,java,swing,pdf,itext,Java,Swing,Pdf,Itext,我正在开发一个java应用程序,在scrollPanel中有一种“工作”的JLayeredPanel,我在其中添加了一些JLabel!(类似于在Word上工作)。我想从layeredPanel中获取所有组件并获取PDF文件 我所拥有的,是从layeredPanel获取一张图像,然后用该图像的iTextPdf生成PDF,但我没有得到我想要/需要的分辨率 public void printToPDF(java.awt.Image awtImage, String fileName) {

我正在开发一个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大小!)
  • 令人困惑的是,我必须找到可能的解决办法

  • 仅保留原始图像文件
  • 尝试以其他方式生成PDF。 类似这样的东西:(这是文本,所以它保持分辨率) 而不是这样:(这不是文本,它是图像,所以它是像素化的)


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

    欢迎使用堆栈溢出,请使用,浏览,阅读并发布一个适当的链接,显示您尝试过的内容,以及显示您的问题和预期结果的图像链接。还要指定您正在使用的
    iText
    的版本谢谢@Frakcool。我刚刚编辑了这个问题。您甚至没有阅读我提供的链接,请特别注意,您还没有阅读我发布的第一个链接…
    ,但我没有得到我想要/需要的分辨率。
    -当您获得组件的图像时,您就得到了您正在使用的屏幕的分辨率。我不知道iTextPDF对这个图像做了什么。@camickr例如,当程序运行时,文本非常清晰,但生成图像后,生成的文本是像素化的!结果与我在de面板上看到的大小相同。欢迎使用Stack Overflow,请使用,浏览,阅读并发布一个适当的显示您尝试过的内容的链接,以及一个显示您的问题和预期结果的图像链接。还要指定您正在使用的
    iText
    的版本谢谢@Frakcool。我刚刚编辑了这个问题。您甚至没有阅读我提供的链接,请特别注意,您还没有阅读我发布的第一个链接…
    ,但我没有得到我想要/需要的分辨率。
    -当您获得组件的图像时,您就得到了您正在使用的屏幕的分辨率。我不知道iTextPDF对这个图像做了什么。@camickr例如,当程序运行时,文本非常清晰,但生成图像后,生成的文本是像素化的!结果和我在de面板上看到的一样大。