我已经成功使用了WritableImage
WritableImage 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文本时,我该怎么做?
另外,如何截取场景中某些节点的屏幕截图?
谢谢
1 回答
您已经在问题中找到了相应的工作代码 .
拍摄节点的快照类似于拍摄场景的快照,您只需在节点上使用snapshot methods而不是场景 . 首先将节点置于场景中,然后对节点进行快照 .
可以传递给
node.snapshot
调用的第一个参数是SnapshotParameters的一些配置(您可能不需要,但您可以调查它们以查看它们是否对您的案例是必需的或有用的) .我没有使用您在问题中引用的pdfbox工具包 . 可能该工具包使用基于awt的图像而不是JavaFX图像,因此您需要使用SwingFXUtils.fromFXImage将JavaFX快照图像转换为awt缓冲图像 .
要实际将awt编码图像转换为pdf文件,请参阅pdfbox工具包的文档 . Kasas对Add BufferedImage to PDFBox document的回答似乎为此操作提供了代码片段 . 看起来相关的代码(我还没试过)是: