iText学习笔记

iText学习笔记

最近有一个项目需要将内容生成PDF文档,于是去找了一下有关生成PDF的Java库,经过一番比较就选择了比较流行的iText.(iText官网)

iText简介

iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。

使用版本:

itextpdf-5.5.6.jar

itext-asian.jar

  • 首先是要获得文档根对象Document:

    Document document = new Document(PageSize.A4);

  • 然后获得PDFWriter对象(定义一个输出流和指定需要生成的PDF文件名)

    PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(new File(fileName)));

  • 之后就可以在:

    document.open();
    
    /**
     * something generate here
     * 比如文章内容、段落等
     */
    
    document.close();`
    

大体的框架就是这样子,生成具体的文章内容时则需要在open()和close()之间实现

下面简单列举一个demo:

public void generate(String fileName) throws Exception{
    /**
    *获取根对象
    */
    Document document = new Document(PageSize.A4);

    /**
    *获得PDFWriter
    *@param document
    *@param OutputStream 
    */
    PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(new File(fileName)));

    /**
    *打开PDF文档
    */
    document.open();

    /**
    *定义一个文章段落
    */
    Paragraph p1 = new Paragraph("Hello iText");

    /**
    *添加到PDF根对象ducument中
    */
    document.add(p1);

    /**
    *关闭PDF文档
    */
    document.close();
}

但是当文章中有中文时如果按照上述demo实现的话会出现乱码的情况,找了一下资料,发现有两种方式可以解决中文显示的问题:

方式一:

    /**
     * 显示中文的方式一:使用Windows系统字体(TrueType)
     * 可以在C:/Windows/Fonts/下找到系统中的字体
     */
    BaseFont baseFont = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
    Font font = new Font(baseFont);
    document.add(new Paragraph("显示中文-方式一", font));

方式二:

    /**
     * 显示中文的方式二:使用iTextAsian.jar中的字体
     */
    FontSelector fontSelector = new FontSelector();
    fontSelector.addFont(FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
    fontSelector.addFont(FontFactory.getFont("STSongStd-Light",  
            "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED));

    Phrase phrase = fontSelector.process("显示中文-方式二");
    Paragraph p1 = new Paragraph(phrase);
    document.add(p1);

好吧,暂时就先总结这么多了,之后还会用到iText的相关函数实现更多的功能,下一阶段再做总结吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值