iText中文教程 第二章 在Web应用程序中使用iText(上)
2006-09-07 12:26
806 查看
第二节:在Web应用程序中使用iText
本节介绍如何在Web应用中使用iText。本节向导
l MyJavaServer.coml Hello World
l Workaround for timeout problem
l Silent printing
l Hello World JSP
示例文件
1. HelloWorldServletu 使用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 演示一下使用GET和POST提交数据的方式生成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
通过你传递过来的参数,你应该在你的浏览器上看到pdf、html或者rtf文档。
Java文件:com.lowagie.examples.general.webapp.HelloWorldServlet
结果:presentationtype=pdf presentationtype=html presentationtype=rtf
注意,我并没有说你将会在你的浏览器上看到pdf、html或者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
相关文章推荐
- SOAPUI中文教程---使用断言
- solr6.3与MySQL结合使用的简明教程(五)——中文分词
- phpExcel使用与中文处理教程
- Magento 2中文手册教程 - 使用性能(MAGE_PROFILER)介绍
- jquery jqPlot API 中文使用教程(非常强大的图表工具)
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 - scikit-learn 教程 | ApacheCN
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 - scikit-learn 教程 | ApacheCN
- [python3教程]第二章.使用解释器
- 使用JavaScript生成二维码教程-附qrcodejs中文文档
- scikit-learn 中文文档-使用 scikit-learn 介绍机器学习-scikit-learn教程|ApacheCN
- ASP.NET Core 中文文档 第二章 指南 (09) 使用 Swagger 生成 ASP.NET Web API 在线帮助测试文档
- java使用iText生成pdf:解决中文
- jquery jqPlot API 中文使用教程(非常强大的图表工具)
- FusionCharts Free使用文档教程第二章-FusionCharts Free安装
- spss22.0中文破解版百度云下载(附授权码+安装使用教程)
- 轻松使用调整对象@GTK+ 2.0 中文教程连载
- Mininet中文使用教程
- unity3d插件Daikon Forge GUI 中文教程-5-高级控件listbox和progress bar的使用
- 使用SpriteBuilder制作Cocos2D游戏完全中文教程(三)
- jquery jqPlot API 中文使用教程