itext 生成pdf ----hello world

 

iTextJava中用于创建和操作PDF文件的开源。它是由Bruno Lowagie、Paulo Soares等人编写的。Ohloh报告称2001年以来[2],26个不同的贡献者进行了1万多次提交,超过100多万行代码。[3]iText具有一个由大型开发团队维护的完善的、成熟的、活跃度同比持平的代码库。[4]利用COCOMO模型,花了大约250人年的努力后,2000年11月iText项目开始了第一次提交。[5]

5.0.0版(2009年12月7日发布)后的iText是在Affero通用公共许可证第3版下分发的。之前版本的iText(Java版的至4.2.1版,和C#版的至4.1.6版)是在Mozilla公共许可证LGPL下分发的。iText同时由iText软件公司通过一个专有许可证进行分发。iText®是1T3XT BVBA的注册商标

iText已经以iTextSharp的名义移植到.NET Framework下。iTextSharp是用C#编写的,它有一个独立于iText的代码库,但与iText的版本同步。

在2013年中,iText(Java)和iTextSharp(.NET)仅在SourceForge就有超过500万次的下载量。2013年10月,iText在SourceForge上每周约有3000次下载[6],而iTextSharp每周约有4000次下载[7]

开发者可以用iText来:

  • 从XML文件或数据库来动态生成PDF文档
  • 为浏览器生成PDF文档
  • 利用PDF的许多互动功能
  • 添加书签、页码、水印、条形码等
  • 分割、拼接和处理PDF页面
  • 自动填写PDF表单
  • 给PDF文件添加数字签名

通常情况下,在具有下列情况之一的项目中会使用iText:

  • 内容不是提前准备好的:它基于用户输入或数据库的实时信息来计算、处理。
  • 内容太多,PDF文件无法手动生成。
  • 在批处理过程中,文档需要在无人值守模式下创建。
  • 需要对内容进行定制或个性化。例如,最终用户的名字需要被印在多个页面上。

iText是一个非常著名的能够快速产生PDF文件的Java类库。支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合

iText的更新变化很大,早期版本在PDF样式上可能会有瑕疵,所有我使用的最新的5.5.12包,文字包用的5.2.0版本

 

了解了Itext能干什么,我们第一步来用itext写一个Hello world。

1.添加Maven依赖

itext核心包 和xmlworder字体包

            <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>itextpdf</artifactId>
                <version>5.5.12</version>
            </dependency>
            <dependency>
                <groupId>com.itextpdf.tool</groupId>
                <artifactId>xmlworker</artifactId>
                <version>5.5.12</version>
            </dependency>
            <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>itext-asian</artifactId>
                <version>5.2.0</version>
            </dependency>

2.创建main方法测试,用itext生成pdf的Hello world

import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;
/**
 * PDF工具类
 */
public class PdfUtils {

    public static void main(String[] args) throws DocumentException, IOException {
        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream("D:/iTextDemo/hello_word.pdf"));
        // 打开文档
        document.open();
        // 写入内容
        document.add(new Paragraph("Hello World"));
        // 写入结束
        document.close();
    }
}

 

 

3.有很多人试过了上面demo,把文字换成中文,哎哟,发现中文没有写入成功,下面用一种最简单的设置中文的方式,IText设置中文的方式很多,因为时间原因,我就只展示最简单的一种。

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * PDF工具类
 */
public class Pdf1Utils {

    public static void main(String[] args) throws DocumentException, IOException {
        // 新建文档
        Document document = new Document(PageSize.A4);
        // 如果输出中文,需要设置中文字体
        BaseFont chineseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        Font font = new Font(chineseFont, 12, Font.NORMAL);
        PdfWriter.getInstance(document, new FileOutputStream("D:/iTextDemo/hello.pdf"));
        // 打开文档
        document.open();
        // 写入内容
        Paragraph paragraph = new Paragraph("你好,JAVA蓝猫。", font);
        document.add(paragraph);
        // 关闭文档
        document.close();
    }
}

 

 如果想进一步了解学习IText,建议还是看官方文档。

官方链接:https://itextpdf.com/en

官方文档链接:https://itextpdf.com/en/resources/api-documentation/itext-7-java

 

posted @ 2022-04-18 17:00  是白杨  阅读(604)  评论(0编辑  收藏  举报