Javafx 2 在JavaFX2.2中拍摄场景或部分场景的屏幕截图
我已经成功地使用 WritableImage snapshot=obj.getScene().snapshot(空) 现在我想把这个截图输出到一个pdf文件中。我已经使用以下代码使用Apache pdfbox库将文本输出到pdf: PDDocument=null; PDPage=nullJavafx 2 在JavaFX2.2中拍摄场景或部分场景的屏幕截图,javafx-2,converter,pdfbox,Javafx 2,Converter,Pdfbox,我已经成功地使用 WritableImage snapshot=obj.getScene().snapshot(空) 现在我想把这个截图输出到一个pdf文件中。我已经使用以下代码使用Apache pdfbox库将文本输出到pdf: PDDocument=null; PDPage=null try{ doc = new PDDocument(); page = new PDPage(); doc.addPage(page); PDFo
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而不是使用基本字符串文本时,我如何做到这一点
另外,如何拍摄场景中某些节点的屏幕快照
谢谢
拍摄一个场景的截图
在您的问题中,您已经有了这方面的工作代码
WritableImage snapshot = stage.getScene().snapshot(null);
拍摄一个。JavaFX2.2中的场景部分 对节点进行快照类似于对场景进行快照,您只需在节点上而不是在场景上使用。首先将节点放置在场景中,然后对节点进行快照
WritableImage snapshot = node.snapshot(null, null);
可以传递给node.snapshot
调用的第一个参数是一些配置(您可能不需要这些配置,但您可以对它们进行调查,以确定它们是否对您的案例是必需的或有用的)
现在我想把这个截图输出到一个pdf文件中。当使用WritableImage而不是使用基本字符串文本时,我如何做到这一点 我没有使用您在问题中引用的pdfbox工具包。该工具包可能使用基于awt的图像,而不是JavaFX图像,因此您需要使用将JavaFX快照图像转换为awt缓冲图像 要将awt编码的图像实际转换为pdf文件,请参阅pdfbox工具包的文档。Kasas对的回答似乎为这个操作提供了一个代码片段。看起来相关代码(我没有尝试过)是:
仅供参考:当你有多个问题时,通常最好用不同的问题问他们。谢谢你的回答!这确实有帮助。我离将图像放在pdf上更近了一步,但当我使用代码时,pdf不会出现,但当我添加由您提供的同一线程显示的InputStream和OutputStream时,文档已创建,但我从Adobe程序收到一条错误消息,说Acrobat无法正确显示页面。一旦我回到使用BuffereImage类,文档就不会被创建,我也不知道为什么。代码对我来说很有意义。
PDPageContentStream content = new PDPageContentStream(doc, page);
PDXObjectImage ximage = new PDJpeg(doc, bufferedImage);
content.drawImage(ximage, x, y);