Java 从JPanel组件生成PDF
我正在开发一个java应用程序,在scrollPanel中有一种“工作”的JLayeredPanel,我在其中添加了一些JLabel!(类似于在Word上工作)。我想从layeredPanel中获取所有组件并获取PDF文件 我所拥有的,是从layeredPanel获取一张图像,然后用该图像的iTextPdf生成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) {
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大小!)我更喜欢这一个,这样我可以避免打印最终文件时出现一些CMYK问题。欢迎使用堆栈溢出,请使用,浏览,阅读并发布一个适当的链接,显示您尝试过的内容,以及显示您的问题和预期结果的图像链接。还要指定您正在使用的
iText
的版本谢谢@Frakcool。我刚刚编辑了这个问题。您甚至没有阅读我提供的链接,请特别注意,您还没有阅读我发布的第一个链接…,但我没有得到我想要/需要的分辨率。
-当您获得组件的图像时,您就得到了您正在使用的屏幕的分辨率。我不知道iTextPDF对这个图像做了什么。@camickr例如,当程序运行时,文本非常清晰,但生成图像后,生成的文本是像素化的!结果与我在de面板上看到的大小相同。欢迎使用Stack Overflow,请使用,浏览,阅读并发布一个适当的显示您尝试过的内容的链接,以及一个显示您的问题和预期结果的图像链接。还要指定您正在使用的iText
的版本谢谢@Frakcool。我刚刚编辑了这个问题。您甚至没有阅读我提供的链接,请特别注意,您还没有阅读我发布的第一个链接…,但我没有得到我想要/需要的分辨率。
-当您获得组件的图像时,您就得到了您正在使用的屏幕的分辨率。我不知道iTextPDF对这个图像做了什么。@camickr例如,当程序运行时,文本非常清晰,但生成图像后,生成的文本是像素化的!结果和我在de面板上看到的一样大。