工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 3415|回复: 4

用iText生成PDF文件

[复制链接]
发表于 2006-12-6 19:10 | 显示全部楼层 |阅读模式
来自:http://blog.csdn.net/Windy83/archive/2006/12/06/1432423.aspx

这几天比较无聊,就上网到处逛逛,发现iText是个不错的生成PDF文件的JAVA开源包,就拿来学学。
发现网上有两个不错的初级教程。iText使用指南Itext教程翻译。
英文网站会有不少好教程,但应该很少会有关于中文的。因为对中文操作,必须另外下载一个包:iTextAsian.zip。这个包里面并不包含任何class文件,而是这样的:


其中两个文件关于编码和字体(下面例子会用到)。
cjkencodings.properties
UniGB-UCS2-H=UniGB-UCS2-H
UniGB-UCS2-V=UniGB-UCS2-HUniGB-UCS2-V
cjkfonts.properties
STSong-Light=Adobe-GB1-UCS2_UniGB-UCS2-H_UniGB-UCS2-V_
STSongStd-Light=Adobe-GB1-UCS2_UniGB-UCS2-H_UniGB-UCS2-V_

我下载的是目前最新的包——itext-1.4.7.jar 一个简单的示例代码如下:
package powerwind;

import java.io.*;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;

// 功能:把文本文件的文字读出来,然后写到PDF文件
publicclass TxtToPdf {

    publicstaticvoid main(String[] args) {

       Document doc = null;
       BufferedReader br = null;

       final String pdfFilename = "PdfFile.pdf";
       final String txtFilename = "TxtFile.txt";

       try {
           doc = new Document();
       // 设置纸张为A5
         doc.setPageSize(PageSize.A5);

           PdfWriter.getInstance(doc, new FileOutputStream(pdfFilename));

           // 设置字体和编码:
           BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
           Font font = new Font(baseFont, 8, Font.NORMAL);
           doc.open();

           br = new BufferedReader(new FileReader(txtFilename));
           String str = null;
           // 从txt文件读出一行,加入到Document的段落
           while ((str = br.readLine()) != null) {
              doc.add(new Paragraph(str, font));
           }
       } catch (DocumentException de) {
           System.out.println(de);
       } catch (IOException ioe) {
           System.out.println(ioe);

       } finally {
           if (doc != null)
              doc.close();
           try {
              if (br != null)
                  br.close();
           } catch (IOException ioe) {
              System.out.println(ioe);
           }
       }
       System.out.println("done");
    }
}


如果把程序做成有图形界面操作,可以自由选择源文件和目标文件,并且可以随意设置段落格式和字体,就是一个简单的PDF转换工具了。

[ 本帖最后由 powerwind 于 2006-12-6 19:21 编辑 ]
 楼主| 发表于 2006-12-7 00:34 | 显示全部楼层
刚才看 iText in action 才知道,原来iText包里已经有上述功能。
运行 java -jar itext-1.4.7.jar 就有图形界面操作。
刚才试了下,发觉那个 txt2Pdf 功能不支持中文
回复

使用道具 举报

发表于 2006-12-7 09:43 | 显示全部楼层
Apache组织下的Jakarta项目下的子项目POI也提供一组操纵Windows文档的JAVA API。
回复

使用道具 举报

发表于 2006-12-12 22:35 | 显示全部楼层
POI 是 对 Word,Excel 进行操作的

目前对PDF操作的开源项目主要有
PDFBOX
ITEXT
XPDF
三种

其中 ITEXT 和 XPDF 都有中文支持的补丁(虽然比较烂)
PDFBOX 只支持英文

貌似PDFBOX的功能是当中最强大的..
回复

使用道具 举报

发表于 2006-12-14 22:22 | 显示全部楼层
pdfcreator可以参考一下,开源的,在sf.net
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-31 07:58

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表