Я использую JFreeChart 1.0.9 для создания диаграммы и iText 1.3.1 для отображения этой диаграммы в файле PDF. Для этого я создаю JFreeChart, а затем преобразовать его в массив байтов:JFreeChart & iText: черное изображение при создании pdf
final TimeSeriesCollection dataset = new TimeSeriesCollection();
final TimeSeries s1 = new TimeSeries("Series 1", Minute.class);
s1.add(new Minute(0, 0, 7, 12, 2003), 1.2);
s1.add(new Minute(30, 12, 7, 12, 2003), 3.0); // 12h30 => value = 3
s1.add(new Minute(15, 14, 7, 12, 2003), 8.0);
final TimeSeries s2 = new TimeSeries("Series 2", Minute.class);
s2.add(new Minute(0, 3, 7, 12, 2003), 0.0);
s2.add(new Minute(30, 9, 7, 12, 2003), 0.0);
s2.add(new Minute(15, 10, 7, 12, 2003), 0.0);
dataset.addSeries(s1);
dataset.addSeries(s2);
XYDataset dataset2 = dataset;
final JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Sample Chart",
"Date",
"Value",
dataset2,
true,
true,
false
);
chart.setBackgroundPaint(Color.white);
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
BufferedImage originalImage = chart.createBufferedImage(500, 300, info);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpg", baos);
byte[] imageInByte = baos.toByteArray();
Тогда я просто положить этот массив байтов в файле PDF с использованием IText следующим образом:
Document document=new Document();
PdfWriter.getInstance(document,new FileOutputStream("hello.pdf"));
document.open();
Image image = Image.getInstance(imageInByte);
document.add(image);
document.close();
Но когда я открываю свой файл PDF, область, где должно быть мое изображение, черная.
У вас есть идея, что может быть причиной этого?
iText 1.3.1, действительно? Эта версия больше, чем [7 лет] (http://itextpdf.com/history/?branch=10&node=13)! Я не говорю, что это причина вашей проблемы, и что переход к последней версии (5.3.0) решит ее, но если бы я был вами, я бы попробовал ... –
У меня нет выбора о версии, которую я использую ... – user1484901