Javafx 2 在JavaFX2.2中拍摄场景或部分场景的屏幕截图

Javafx 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

我已经成功地使用

WritableImage snapshot=obj.getScene().snapshot(空)

现在我想把这个截图输出到一个pdf文件中。我已经使用以下代码使用Apache pdfbox库将文本输出到pdf:

PDDocument=null; PDPage=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而不是使用基本字符串文本时,我如何做到这一点

另外,如何拍摄场景中某些节点的屏幕快照

谢谢

拍摄一个场景的截图

在您的问题中,您已经有了这方面的工作代码

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);