我已经开始使用Flying Saucer从JSF文件创建PDF,这太棒了! 现在我遇到了一个问题:我希望在我们的应用程序中使用它来创建PDF而不会阻止HTTP响应。
请查看以下代码:
ServletOutputStream outputStream = response.getOutputStream();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(new URL("http://localhost:8080/pdf2.faces").toString());
renderer.layout();
renderer.createPDF(outputStream);
outputStream.flush();
根据我的理解,ITextRenderer在第3行(在函数loadDocument中)加载整个JSF。这意味着ITextRenderer要求整个JSF将由服务器创建。
然后,ITextRenderer在第4行创建PDF布局并将其放在第5行的outputStream中。
如果创建JSF需要很长时间怎么办? 上面的代码将堆叠在第3行,直到服务器创建整个JSF。 因此,如果我想将第1-6行的代码放在servlet中,它可以阻止HTTP响应,并可能导致超时问题。 我希望Flying Saucer将开始创建输出流HTTP响应,而不必等到创建整个原始JSF。 最好的方法是什么? Flying Saucer有这方面的API支持吗? 任何帮助将不胜感激。
答案 0 :(得分:0)
我使用Flying Saucer API找到了以下解决方法:
1)我重新设计了原始的JSF并将其加载到部分
中2)我在飞碟WIKI
中描述的JSF部件中创建了单个PDF它有效,但它仍然是解决方法。如果加载JSF部分需要很长时间,它可能会导致超时问题。 如何解决问题?任何帮助将不胜感激。