我正在做一些应用程序,它制作了LineChart的屏幕截图并将其保存到 pdf 文件中。因此,我不知道将WritableImage(JavaFX 2.2)转换为Image(iText lib)的简便方法。
我的临时解决方案是:

  • 制作快照,然后
  • 从快照
  • 中获取WritableImage
  • 将图像写入png文件
  • 打开图像,并使iText对象成为Image

  • 我想做一些更改:我不想将png文件写入光盘,我只想将快照写入pdf文件。
    我的临时解决方案是:
     WritableImage wim = new WritableImage((int) lineChart.getWidth(),(int) lineChart.getHeight());
     Scene scena = primaryStage.getScene();
     scena.snapshot(wim);
    
     File fileA = new File("C://Graphs/chart.png");
     try {
          ImageIO.write(SwingFXUtils.fromFXImage(wim, null), "png", fileA);
     }
     catch (Exception s) {
     }
     pdfDocument.add(preface3);
     com.itextpdf.text.Image graph =com.itextpdf.text.Image.getInstance("C://Graphs/chart.png");
     pdfDocument.add((com.itextpdf.text.Element) graph);
    

    最佳答案

    用:

    ByteArrayOutputStream  byteOutput = new ByteArrayOutputStream();
    
    ImageIO.write( SwingFXUtils.fromFXImage( wim, null ), "png", byteOutput );
    
    com.itextpdf.text.Image  graph;
    graph = com.itextpdf.text.Image.getInstance( byteOutput.toByteArray() );
    

    关于image - JavaFX将WritableImage转换为Image,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20676858/

    10-09 02:10