我已设法使用
创建WritableImageWritableImage snapshot = obj.getScene()。snapshot(null);
现在我想在pdf文件中输出这个截图。我已经设法使用Apache pdfbox库使用以下代码将文本输出到pdf:
PDDocument doc = null; PDPage page = null;
try{
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream content = new PDPageContentStream(doc, page);
content.beginText();
content.setFont( font, 12 );
content.moveTextPositionByAmount( 100, 700 );
content.drawString("Hello World");
content.endText();
content.close();
doc.save("PDFWithText.pdf");
doc.close();
} catch (Exception e){
System.out.println(e);
}
使用WritableImage而不是使用基本的String文本时,我该怎么做?
另外,如何拍摄场景中某些节点的屏幕截图?
由于
答案 0 :(得分:1)
拍摄场景的截图
您的问题中已经有了相应的工作代码。
WritableImage snapshot = stage.getScene().snapshot(null);
截取一张。 。 。 JavaFx 2.2中场景的一部分
拍摄节点的快照类似于拍摄场景的快照,您只需使用节点上的snapshot methods而不是场景。首先将节点置于场景中,然后对节点进行快照。
WritableImage snapshot = node.snapshot(null, null);
可以传递给node.snapshot
调用的第一个参数是SnapshotParameters的一些配置(您可能不需要,但您可以调查它们以查看它们是否是必需的或有用的你的情况)。
现在我想在pdf文件中输出这个截图。如何使用WritableImage而不是使用基本的String文本?
我没有使用您在问题中引用的pdfbox工具包。可能该工具包使用基于awt的图像而不是JavaFX图像,因此您需要使用SwingFXUtils.fromFXImage将JavaFX快照图像转换为awt缓冲图像。
要实际将awt编码图像转换为pdf文件,请参阅pdfbox工具包的文档。 Kasas对Add BufferedImage to PDFBox document的回答似乎为此操作提供了代码段。看起来相关的代码(我没试过这个)是:
PDPageContentStream content = new PDPageContentStream(doc, page);
PDXObjectImage ximage = new PDJpeg(doc, bufferedImage);
content.drawImage(ximage, x, y);