Передо мной стоит следующая задача:
Я получаю некоторые данные (неважно, как) и должен создать отчет в формате PDF. Моя программа в целом имеет GUI, созданную с использованием JavaFX, но часть pdf работает в отдельном потоке. В общем, создание PDF не проблема. Я использую iText в качестве pdf lib.
Проблема в том, что мне нужно включить довольно сложный график в документ pdf. Сам график также не является проблемой, так как я хорошо знаком с графиками JavaFX.
В настоящее время я планирую решить проблему с графиком следующим образом:
// at first create the chart
final NumberAxis xAxis = new NumberAxis();
final NumberAxis yAxis = new NumberAxis();
final LineChart<Number, Number> chart = new LineChart<>(xAxis, yAxis);
// format the graph and add the data
...not shwon here, not important...
// now get the chart as picture to embed in the document
WritableImage chartWrtImg = chart.snapshot(new SnapshotParameters(), null);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
// convert the WritableImage from javaFX to an Image from itext
ImageIO.write(SwingFXUtils.fromFXImage(chartWrtImg, null), "png", byteArrayOutputStream);
Image graphImg = Image.getInstance(byteArrayOutputStream.toByteArray());
// scale and position the picture
graphImg.setAbsolutePosition(35, docHeight - 460);
graphImg.scaleAbsolute(docWidth - 80, 350);
// the itext pdf document
document.add(graphImg);
} catch (IOException e) {
e.printStackTrace();
}
В данный момент я получить следующее исключение при запуске создания PDF:
java.lang.ClassNotFoundException: javafx.embed.swing.SwingFXUtils
Почему я получаю показанное исключение? Я импортирую JavaFX версии 13 через Maven. Там должны быть библиотеки (и они также работают в потоке приложения).
В общем, разумно ли использовать подобную диаграмму JavaFX просто для создания графика для документа PDF?