2012-02-13 37 views
0

我想为PDF文件生成使用iText,并且我有一个关于这一代的问题。我想将PDF提供给浏览器,以便浏览器显示它,而无需真正创建文件。iText - 在不需要PDF文件的情况下即时生成文件

什么是最好的方法来实现这一目标?

一个限制是我需要从JSP页面使用它 - 这会绕过“getOutputStream已被调用过一次”的错误,这是我正在寻找的错误。

回答

3

我想的PDF服务至浏览器,浏览器显示它,而不实际创建文件。

只是通过responsegetOutputStream()而不是new FileOutputStreamPdfWriter

PdfWriter pdfWriter = PdfWriter.getInstance(document, response.getOutputStream()); 
// ... 

一个限制是,我需要从一个JSP页面中使用它 - 这将规避“的getOutputStream已经被称为一次”错误是我所期待的。

只是删除任何空白外<% %>在JSP中,包括换行。它们被回应作者隐式发送给回复。

I.e.不

<% page import="foo" %> 
<% page import="bar" %> 

<% 
    for (int i = 0; i < 1000; i++) { 
     out.println("I should not use scriptlets."); 
    } 
%> 

(newline here) 

但更

<% page import="foo" %><% page import="bar" %><% 
    for (int i = 0; i < 1000; i++) { 
     out.println("I should use servlets."); 
    } 
%> 

或者更好的,不要把Java代码在JSP文件。 JSP文件旨在呈现像HTML这样的模板文本,而不是做完全不同的事情。在一个普通的Java类中像servlet那样做。

+0

BalusC - 非常感谢你的努力来回答我的问题。对此,我真的非常感激。 – oneiros 2012-02-15 16:03:36

2

它写入servlet输出流,记住编码设置为正确的值

+0

这里是我试图运行的代码: ===================== Document document = new Document(); //第2步 PdfWriter.getInstance(document,response.getOutputStream()); //第3步 document.open(); // step 4 document.add(new Paragraph(“Hello World”)); =============================================== =============== itext getOutputStream()已被调用此响应 – oneiros 2012-02-13 21:21:47

+1

我有一些代码,这样做,但我不会得到后t直到早上 - 生病做到这一点,然后 – TrueDub 2012-02-13 23:09:32

+1

还没有忘记这一点 - 我仍然试图找到相关的代码 – TrueDub 2012-02-15 08:22:00

相关问题