将 JavaFX ScrollPane 内容保存到 PDF 文件
Save JavaFX ScrollPane content to PDF file
我正在使用以下代码将我的 JavaFx 应用程序中的 ScrollPane 内容保存到 PDF 文件。
button.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
File pdfFile = fileChooser.showSaveDialog(primaryStage);
try {
BufferedImage bufImage = SwingFXUtils.fromFXImage(scrollPane.snapshot(new SnapshotParameters(), null), null);
FileOutputStream out = new FileOutputStream(new File("../temp.jpg"));
javax.imageio.ImageIO.write(bufImage, "jpg", out);
out.flush();
out.close();
com.itextpdf.text.Image image =com.itextpdf.text.Image.getInstance("../temp.jpg");
Document doc = new Document(new com.itextpdf.text.Rectangle(image.getScaledWidth(), image.getScaledHeight()));
FileOutputStream fos = new FileOutputStream(pdfFile);
PdfWriter.getInstance(doc, fos);
doc.open();
doc.newPage();
image.setAbsolutePosition(0, 0);
doc.add(image);
fos.flush();
doc.close();
fos.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
});
在滚动窗格中,我有一个很长的 VBox,其中包含将近 40-50 个标签。因此,这段代码最初将其保存为 jpg 文件,然后将其添加到 pdf 文件。
最初创建temp.jpg时,由于其长度,jpg文件看起来很薄。应该放大才能看到实际内容。
pdf文件写出来的时候,除了冗长之外,其他都是空白的,就像真正将jpg转成PDF文件一样。
谁能帮我解决这个问题?使用实际 size/scale ?
将 ScrollPane 的快照转换为 PDF
我首先缩放了图像,然后使用缩放后的 PageSize 创建了文档。这解决了问题
com.itextpdf.text.Image image =com.itextpdf.text.Image.getInstance("../temp.jpg");
image.scalePercent(1);
Document doc = new Document(new com.itextpdf.text.Rectangle(image.getScaledWidth(), image.getScaledHeight()));
doc.open();
doc.add(image);
我正在使用以下代码将我的 JavaFx 应用程序中的 ScrollPane 内容保存到 PDF 文件。
button.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
File pdfFile = fileChooser.showSaveDialog(primaryStage);
try {
BufferedImage bufImage = SwingFXUtils.fromFXImage(scrollPane.snapshot(new SnapshotParameters(), null), null);
FileOutputStream out = new FileOutputStream(new File("../temp.jpg"));
javax.imageio.ImageIO.write(bufImage, "jpg", out);
out.flush();
out.close();
com.itextpdf.text.Image image =com.itextpdf.text.Image.getInstance("../temp.jpg");
Document doc = new Document(new com.itextpdf.text.Rectangle(image.getScaledWidth(), image.getScaledHeight()));
FileOutputStream fos = new FileOutputStream(pdfFile);
PdfWriter.getInstance(doc, fos);
doc.open();
doc.newPage();
image.setAbsolutePosition(0, 0);
doc.add(image);
fos.flush();
doc.close();
fos.close();
}
catch(Exception e)
{
e.printStackTrace();
}
} });
在滚动窗格中,我有一个很长的 VBox,其中包含将近 40-50 个标签。因此,这段代码最初将其保存为 jpg 文件,然后将其添加到 pdf 文件。
最初创建temp.jpg时,由于其长度,jpg文件看起来很薄。应该放大才能看到实际内容。
pdf文件写出来的时候,除了冗长之外,其他都是空白的,就像真正将jpg转成PDF文件一样。
谁能帮我解决这个问题?使用实际 size/scale ?
将 ScrollPane 的快照转换为 PDF我首先缩放了图像,然后使用缩放后的 PageSize 创建了文档。这解决了问题
com.itextpdf.text.Image image =com.itextpdf.text.Image.getInstance("../temp.jpg");
image.scalePercent(1);
Document doc = new Document(new com.itextpdf.text.Rectangle(image.getScaledWidth(), image.getScaledHeight()));
doc.open();
doc.add(image);