Я пытаюсь экспортировать линейку строк XY для таймсеров в документ pptx с использованием векторной графики JFreechart-FreeHEP-apache poi XSLF. Логика я следую, как показано нижеЭкспортировать jfreechart в pptx как изображение EMF - рендеринг строки неправильный
- использование JFreeChart создать диаграмму
- экспорта диаграмму как э.д.с. изображения с помощью freehep апите
- добавить это изображение в PPTX слайд с помощью Apache POI XSLF LIB.
Проблема заключается в способе визуализации линий в изображении EMF. см. изображение ниже. Выстроенные линии не совсем прямые, они выглядят как зигзагообразные. Горизонтальные линии оказываются прямыми, но вертикальные линии не отображаются как прямые, они похожи на ->/\/\/\/\/\/\/\/\/\. Оцените любые предложения о том, чтобы линии отображались как прямые.
Эта проблема только в формате EMF, я пробовал то же самое с PNG, JPG-форматом, и линии отображаются как прямые. Причина, по которой я использую EMF, заключается в том, что после экспорта в pptx другие форматы изображений (JPEG/PNG/TIF/BMP), похоже, теряют качество - четкость и яркость.
код я использую как ниже
chart = createChart(createDataset());
ChartPanel panel = new ChartPanel(chart);
EMFGraphics2D emffile = new EMFGraphics2D(new File(
"C:\\Users\\out\\chart.emf"),
new Dimension(1500, 600));
emffile.setDeviceIndependent(true);
emffile.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
emffile.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
RenderingHints.VALUE_STROKE_NORMALIZE);
emffile.startExport();
chart.draw((Graphics2D) emffile.create(), new Rectangle(1500, 600));
emffile.endExport();
emffile.closeStream();
XMLSlideShow pptx = new XMLSlideShow();
XSLFSlide slide = pptx.createSlide();
byte[] pptxpic = IOUtils.toByteArray(new FileInputStream(
"C:\\Users\\out\\chart.emf"));
int idx = pptx.addPicture(pptxpic, XSLFPictureData.PICTURE_TYPE_EMF);
XSLFPictureShape pic = slide.createPicture(idx);
pic.setAnchor(new java.awt.Rectangle(0, 25, 720, 500));
pptx.write(new FileOutputStream(
"C:\\Users\\out\\poitest002.pptx"));
Я не любил blury изображения при экспорте JFreeChart изображений в JasperReports тоже, так что я приспособил Graphics2D контекст из апача пои экспортировать в Powerpoint формы непосредственно. Я играл с FreeHep в начале, но также не понравился результат. Возможно, это помогает кому-то с той же проблемой: https://code.google.com/p/pptx-shape-exporter/ – kiwiwings