zoukankan      html  css  js  c++  java
  • 利用itext生成pdf的简单例子

    一、itext简介

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

    iText的安装非常方便,在http://www.lowagie.com/iText/download.html网站上下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了

    声明:本博客用到iText版本为7.0.2版本。

    二 、生成简单的pdf文件

    1.先生成一个文档的文件

    //其中fileName为所要创建pdf文件的路径。

    public static OutputStream createFile(String fileName) {

    File file = new File(fileName);

    //创建一个文件之前判断他的父路径的文件夹是否存在,不存在需要创建

    if (!new File(file.getParent()).exists())

    new File(file.getParent()).mkdirs();

    try {

    //创建该文件夹
    file.createNewFile();
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }

    //获取所要创建pdf的文件的输出流

    OutputStream os = null;
    try {
    os = new FileOutputStream(file);
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return os;

    }

    2.创建一个document的文档对象.

     2.1 

    ②建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。  

      PdfWriter pdfWriter=new PdfWriter(createFile("你所要创建的pdf文件路径"));

    2.2创建pdfDocument的对象与Writer的对象关联

      PdfDocument pdfDocument = new PdfDocument(pdfWriter);

    2.3设定创建pdf的纸张大小

      PageSize pageSize = PageSize.A4;

    2.4创建Document的对象

      Document document = new Document(pdfDocument, pageSize);

    三、添加内容

    // 设定标题居中显示

    float w = pageSize.getWidth() - document.getLeftMargin() - document.getRightMargin();
    List<TabStop> tabstops = new ArrayList();
    tabstops.add(new TabStop(w / 2, TabAlignment.CENTER));
    tabstops.add(new TabStop(w, TabAlignment.LEFT));

    // 段落
    Paragraph p = new Paragraph();
    p.addTabStops(tabstops);
    p.add(new Tab()).add("Text in the middle").add(new Tab());
    p.add(new Tab()).add("How To Create An PDF File?").add(new Tab());

    document.add(p);

    document.flush();

    //关闭document

    document.close();

    三、对中文的处理

    1.对于中文的处理需要我添加一个itext-asian-5.2.0.jar包,可以对中文进行处理。而你可能下载不能是这个版本,可能会引起错误的。

    一下是对之前版本的处理:

    假如你加入的iTextAsian.jar的版本为5.0.6;会 出现异常 Font 'STSong-Light' with 'UniGB-UCS2-H'

      我使用的是iText 5.0.6 加入了iTextAsian.jar就报错.

      com.itextpdf.text.DocumentException: Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized.

      参考博客:x

      找的原因和解决方法:

      原因:iText5以上就改了命名空间了.是 com/itextpdf/text/pdf/fonts/

      但是iTextAsian还没有改.他的命名空间是 com/lowagie /text/pdf/fonts/

      所以报错..

      解决方法.:

      1.用winrar解压iTextAsian.jar

      2. 将com文件夹下面的lowagie 修改为itextpdf .

      3.进入cmd . 切换到iTextAsian目录.

      4.执行命令 jar cvf iTextAsian.jar com/itextpdf/text/pdf/fonts/*

      5.将生成的iTextAsian.jar文件替换原来的.

      问题解决.

     //解决中文的代码:

    PdfFont font = null;
    try {
    font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", false);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    然后在段落中设定pdf字体

    // 段落
    Paragraph p = new Paragraph();
    p.setFont(font);
    p.addTabStops(tabstops);
    p.add(new Tab()).add("我们很好的快来的").add(new Tab());
    p.add("您好!");

  • 相关阅读:
    2. Get the codes from GIT
    1. Install Git and GitExtension
    [Git]Git的常用命令
    测试用例Excel模板For Quality Center
    测试用例excel模板
    如何在win 2008 server和win 7上add web site
    Jmeter运行过程中如何让Fiddler同时可以抓获到服务器的应答报文
    Windows系统文件mshtml.dll
    Jmeter中的XPath Assertion
    AIM Tech Round (Div. 2) B
  • 原文地址:https://www.cnblogs.com/git-niu/p/6898907.html
Copyright © 2011-2022 走看看