iText中文教程 第二章 在Web应用程序中使用iText(上)

第二节:在Web应用程序中使用iText

       本节介绍如何在Web应用中使用iText

本节向导

l         MyJavaServer.com

l         Hello World

l         Workaround for timeout problem

l         Silent printing

l         Hello World JSP

示例文件

1.         HelloWorldServlet

u       使用servlet生成一个简单的”Hello World”文件(PDF, HTML or RTF)

l         需要的jar

n         servlet.jar(一般安装了tomcat后就有这个包)

l         Servlets/JSP:

n         presentationtype=pdf

n         presentationtype=html

n         presentationtype=rtf

2.         OutSimplePdf

u       使用servler生成一个pdf文件,文件输出到extension .pdf

l         需要的jar

n         servlet.jar(一般安装了tomcat后就有这个包)

l         Servlets/JSP:

n         without message

n         with message

3.         UserAgent.jsp

u       查看User-Agent(表面意思是:用户代理。应该指的是用户上网的时候所用的浏览器,操作系统等参数)。如果用户使用MSIE,则插入PDf,否则转到Servlet

l         Servlets/JSP:

n         try this with different browsers

4.         GetPost.jsp

u       演示一下使用GETPOST提交数据的方式生成PDF文件

l         Servlets/JSP:

n         GET

n         POST

5.         ProgressServlet

u       演示在接收比较大的PdF文件的时候浏览器超时的问题。

l         需要的jav

n         Servlet.jar

l         Servlets/JSP:

n         show progress

6.         SilentPrintServlet

u       显示一下如何通过servler/browser实现silently(安静的,也就是说不提示)打印。

l         需要的jar

n         Servlet.jar

l         Servlets/JSP:

n         try it!

7.         HelloWorld.jsp

u       使用Jsp生成一个PDF文档。

正文

       MyJavaServer.com

       本节所有的例子都在主机MyJavaServer.com上,MyJavaServer.com是一个免费的J2EE主机服务,他是一个java开发者网站javalobby的一部分。作为一个Java程序员,你可以免费获得一个javalobby会员,这可以使你获得很多的好处,例如:免费的图书,下载,包含最新java消息和文档的新闻周刊,并且可以访问网上最大的java文档网站:Jdocs.com,另外你也可以在JRoller.com上免费创建你自己的java blog

       HelloWorld:

       在上一章的Hello World中,我们使用一个Java应用程序来创建一个PDF文档。现在我们仍然做相同的事情,不过这次我们不是在FileOutputStream上输出文档,而是在HttpServletResponse对象的OutputStream上输出内容。

PdfWriter.getInstance(document, response.getOutputStream());

在这个例子中,我们接收了一个名叫presentationtype的参数,这个参数的值可以是下面几个中的一个:

l         Pdf

l         Html

l         Rtf

通过你传递过来的参数,你应该在你的浏览器上看到pdfhtml或者rtf文档。

Java文件:com.lowagie.examples.general.webapp.HelloWorldServlet

结果:presentationtype=pdf presentationtype=html presentationtype=rtf

注意,我并没有说你会在你的浏览器上看到pdfhtml或者rtf文档,它应该在所有的浏览器上运行,但是我们知道,在有些浏览器上不行。例如,我们将ContentType设置成PDF:

        response.setContentType("application/pdf");

但是有的浏览器会认为文件的扩展名比contenttype优先(不要问我为什么),这就是我们为什么要在web.xml文件里面把servlet配置成看起来像一个pdf文件的url样式。

<servlet-mapping>
  <servlet-name>OutSimplePdf</servlet-name>
  <url-pattern>/servlet/simple.pdf</url-pattern>
</servlet-mapping>

但是有的浏览器需要预先知道pdf文件的content-length(否则他们只会给你显示一个空白页),能够这样运行的唯一方法就是将一个完成的pdf文件缓冲到ByteArrayOutputStream中。但是这样做有个问题,如果你需要传送一个非常大的或者非常耗时的pdf文件,那么你将可能冒着服务器连接超时的危险。

        Document document = new Document();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PdfWriter.getInstance(document, baos);
        document.open();
        document.add(new Paragraph(msg));
        document.close();
        response.setContentType("application/pdf");
        response.setContentLength(baos.size());
        ServletOutputStream out = response.getOutputStream();
        baos.writeTo(out);
        out.flush();

Nicolas Guichard(人名)建议我们在向ServletOutputStream中输出pdf文件之前设置一下Cache Header,这些headers决定了被客户端或者代理缓冲的规则。使用这些Cache Header或许会帮你解决一些问题。

        response.setHeader("Expires", "0");
        response.setHeader("Cache-Control",
        "must-revalidate, post-check=0, pre-check=0");
        response.setHeader("Pragma", "public");

所以,忘了那个HelloWorldServlet,然后用这个来代替

示例文件:com.lowagie.examples.general.webapp.OutSimplePdf

输出结果:without message with message

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值