快速业务通道

在Web应用中动态创建PDF文件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
同,你可以让浏览器缓存或者不缓存你正在生成的PDF文件。服务器端应用可以有很多种HTTP 头来控制内容缓存。下边是一些例子:

Cache-Control: no-cache    Cache-Control: no-store    Cache-Control: must-revalidate    Cache-Control: max-age=30    Pragma: no-cache    Expires: 0

在Web应用中动态创建PDF文件(5)

时间:2010-12-23

关于Cache-Control头的全面解释见HTTP 1.1规范。

PDFServlet把Cache-Control设置为max-age=30。这个头信息告诉浏览器缓存这个文件的最长时间为30秒。

Content-length

Content-length头必须设置成PDF文件中字节的数值。如果Content-length没有设置正确,浏览器可能不能正确地显示该文件。下边是例子代码:

ByteArrayOutputStream baos = getByteArrayOutputStream();

resp.setContentLength(baos.size());

把PDF文档送到Web浏览器

PDFServlet通过把字节流写到servlet的输出流的方式把PDF文档送到客户端。它通过调用HttpServletResponse对象的getOutputStream方法来获得输出流。getOutputStream方法返回一个javax.servlet.ServletOutputStream类型的对象。

ServletOutputStream sos; sos = resp.getOutputStream(); baos.writeTo(sos); sos.flush();

在把所有的数据写到流之后,调用flush()方法把所有的字节发送到客户端。

打包和部署

为了在Tomcat中运行PDFServlet,你需要把应用打包在WAR文件中。iText JAR文件(itext-0.99.jar)必须放在WAR文件的lib目录下边。如果你忘了把iText JAR文件打包进去,servlet会报一个java.lang.NoClassDefFoundError的错误并停止运行。

运行应用

在WAR文件部署之后,你已经准备好了测试servlet了。Jakarta Tomcat在8080端口上监听请求。

在浏览器中请求http://hostname:8080/pdfservlet/createpdf。servlet将会执行并返回浏览器一个PDF文档。

4.iText之外的方案

iText提供了许多产生PDF文档的底层API。然而,它不是对任何应用都有效。

在我的日常工作中,我结合Microsoft Word和Adobe Acrobat使用iText。首先,我们的团队使用Microsoft Word设计了一个出货表单。之后,我们用Acrobat把Word文档转换成PDF文档。然后,我们使用iText的模板的功能,我们把PDF文件装入到我们的应用中。从这里,把数据填入表格和输出最终的PDF文档是相当容易的。

对基于报表的Web应用,像JasperReports这样的工具,它提供了比iText更高层次的抽象。

5.总结

当你的应用需要动态地创建PDF文档的时,iText类库是一个不错的方案。你可以通过增强和扩展本文中的代码来体验iText的能力。很快,由于提供了完善的PDF文档,你将会给你的同事和客户留下深刻的印象。

6.其他资源

http://www.lowagie.com/iText/

http://www.jpedal.org/

http://www.pdfbox.org/

xml.apache.org/fop

HTTP 1.1 protocol specification

RFC 2183

dmoz.org/Computers/Data_Formats/Document/Publishing/PDF

http://www.planetpdf.com/

http://www.pdfzone.com/

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号