FOP 1.1中的AWT预览

时间:2013-07-28 00:47:19

标签: java xslt awt apache-fop

我在我的应用程序中使用Apache FOP进行报告。它曾经与FOP 1.0一起正常工作,但由于与java webstart结合的bug,我不得不升级到1.1。转换工作,我可以直接输出PDF或RTF没有问题,但预览不再工作。

转换代码:

TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(Loader.loadResource("Export/" + daten.getFO()).openStream()));
Source src = new DOMSource(daten.createXML());
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(src, res);

旧打印预览代码(使用1.0):

Fop fop = fopFactory.newFop(MimeConstants.MIME_FOP_AWT_PREVIEW);

使用1.1这段代码无法打开预览窗口,没有任何反应,没有例外。 我试着像这样重写预览:

AWTRenderer renderer = new AWTRenderer(foUserAgent);
foUserAgent.setRendererOverride(renderer);
PreviewDialog dlg = PreviewDialog.createPreviewDialog(foUserAgent, null, false);
renderer.setStatusListener(dlg);                
dlg.setVisible(true);
fop = fopFactory.newFop(foUserAgent);

通过此更改,我可以看到预览窗口并获得正确数量的页面。页眉和页脚也会显示,但页面内容为空。

有没有人知道1.0和1.1之间有什么变化?我找不到关于AWTRenderer的任何信息。我认为问题不在于.fo文件或数据,就像我说直接转换为PDF文件完全正常。

1 个答案:

答案 0 :(得分:1)

经过几个小时的搜索,我发现了一个bug report。这在FOP的主干版本中得到修复。