10/18/2006

iText

    iText 是 Lowagie.com 站点(请参阅 参考资料)免费提供的 Java 库,支持 HTML、RTF、XML和 PDF 等文档的生成,iText可以在两个许可协议下使用:MPL 和 LGPL。iText需要的环境为:JDK1.4 以上的版本和Adobe Acrobat Reader。
    iText库主要包括以下类:
    com.lowagie.text.Document —— 是生成 PDF 的主要的类。它是需要使用的第一个类。一旦开始创建文档,将需要一个写入器向文档中写入内容。
    com.lowagie.text.pdf.PdfWriter —— 就是一个 PDF 写入器。
    com.lowagie.text.Paragraph —— 这个类表示一个缩进的段落。
    com.lowagie.text.Chapter —— 这个类表示 PDF 文档中的章节。使用 Paragraph 作为题目并使用 int 作为章节号码来创建它。
    com.lowagie.text.Font —— 这个类包含了全部的字体规范,例如字体、大小、样式和颜色。各种字体都在这个类中声明为静态常数。
    com.lowagie.text.List —— 这个类表示一个列表,按顺序包含许多 ListItems。
    com.lowagie.text.Table —— 这个类表示包含单元格的表,单元格有序地排列在矩阵中。
    com.lowagie.text.Image —— 这个类表示包含处理图片类型文件,包括PNG, GIF, JPEG, WMF等类型。

    iText将html文件转为pdf方法:
    1)在服务器文件系统上创建PDF文件。应用使用java.io.FileOutputStream把文件写到服务器文件系统上。用户通过HTTP GET方法下载该文件。
    2)使用java.io.ByteArrayOutputStream在内存中创建PDF文件。应用通过servlet的输出流将该PDF文件字节发送到客户端。由于应用不需要把文件写到文件系统上,这样能保证在集群服务环境中能正常工作,所以我更倾向于使用B技术。如果你的应用运行在集群环境中且服务器集群不提供会话亲和的功能,第一种方法可能会导致失败。

    实际应用采用第二种方法:
PDFServlet。输出流OutputStream是 java.io.ByteArryOutputStream。用ByteArrayOutputStream,PDF文档字节将存储在内存中。当 PDFServlet接收到一个HTTP请求时,它将动态地生成一个PDF文档并将该文档发送到客户端。
PDFServlet类扩展了javax.servlet.http.HttpServlet类并导入了两个iText包:com.lowagie.text和com.lowagie.text.pdf。

该网站非常有参考价值:
http://www.adobepress.com/articles/printerfriendly.asp?p=420686&rl=1
http://www.lowagie.com/iText/tutorial/index.html
http://faq.xunweb.org/itfaq/jsp3/2006-06-04/2097.html(iText怎样才能显示中文? )

没有评论: