一、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("您好!");

利用itext生成pdf的简单例子的更多相关文章

  1. 利用itext导出PDF的小例子

    我这边使用的jar包: itext-2.1.7.jar itextasian-1.5.2.jar 代码,简单的小例子,导出pdf: PdfService.java: package com.cy.se ...

  2. 关于java poi itext生成pdf文件的例子以及方法

    最近正在做导出pdf文件的功能,所以查了了一些相关资料,发现不是很完善,这里做一些小小的感想,欢迎各位“猿”童鞋批评指正. poi+itext,所需要的jar包有itext-2.1.7.jar,poi ...

  3. 新知识:Java 利用itext填写pdf模板并导出(昨天奋战到深夜四点,知道今天两点终于弄懂)

    废话少说,不懂itext干啥用的直接去百度吧. ***************制作模板******************* 1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acr ...

  4. 在linux环境下使用itext生成pdf

    转载请注明出处 https://www.cnblogs.com/majianming/p/9537173.html 项目中需要对订单生成pdf文件,在不断的尝试之后,终于生成了比较满意的pdf文档. ...

  5. Java Itext 生成PDF文件

    利用Java Itext生成PDF文件并导出,实现效果如下: PDFUtil.java package com.jeeplus.modules.order.util; import java.io.O ...

  6. Java利用模板生成pdf并导出

    1.准备工作 (1)Adobe Acrobat pro软件:用来制作导出模板 (2)itext的jar包 2.开始制作pdf模板 (1)先用word做出模板界面 (2)文件另存为pdf格式文件 (3) ...

  7. java利用iTextWorker生成pdf

    使用itext生成pdf,在linux环境下,中文全部失踪,因为itext要在linux下支持中文字体需要引入itext-asian, 并添加一个字体类. public static class Pd ...

  8. 用itext生成PDF报错:Font 'STSong-Light1' with 'UniGB-UCS2-H' is not recognized.

    用itext生成PDF报错,加上try catch捕获到异常是 BaseFont bFont = BaseFont.createFont("STSong-Light1", &quo ...

  9. Itext生成pdf文件

    来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...

随机推荐

  1. Win10更改CMD控制台的代码页和字体和字号

    注意:936(简体中文)时,指定Consolas等英文字体将无效,会自动变为“新宋体”. 代码页:若是UTF8(65001)应改为:0000fde9 字号:000e0000 -> 12 cmd_ ...

  2. Version Control System

    Version  Control System(版本控制系统),是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型 ...

  3. 小程序setData修改数组某一项的值

    官方文档是这样的: changeItemInArray: function() { // you can use this way to modify a danamic data path this ...

  4. windows 系统使用 git 和码云管理代码(本地已有项目)

    1. 为本地项目创建本地仓 找到项目所在的根目录(目录下有解决方案那个),右击目录,点击右键菜单中的“Git Bash Here”(前提是你的电脑已经装了Git,我用的是TortoiseGit) 然后 ...

  5. Sorting Algorithms

    Merge sort by using recursive strategy, i.e. divide and conquer. def merge(left,right): result = [] ...

  6. Oracle X$Tables

    前言 最早从Yong Huang那里看到关于比较详细的X$表的介绍,后来陆续从其他Oracle专家那里得到了不少信息.在Steve Adams 的书中对X$表多有提及,而且他的站点也是个资源比较丰富的 ...

  7. ActiveMQ queue 分页

    分页:即获取部分数据,queue按页从message cursor读取消息,然后分发给consumer. 页大小: public abstract class BaseDestination impl ...

  8. nginx支持HTTP2的配置过程

    一.获取安装包 http://zlib.net/zlib-1.2.11.tar.gz https://www.openssl.org/source/openssl-1.0.2e.tar.gz (ope ...

  9. Qt样式表都有哪些属性可以设置

    我们可以在Qt助手中输入Qt Style Sheets Reference然后选择List of Pseudo-States 项查看Qt控件支持的所有状态. 附几个参考学习的博客: https://b ...

  10. 分析图第二讲导出图片和后期PS5.12

    导出渲染的白模加上EXTRATEX.再导出一张“消隐”样式的模型图片.就是线稿图. 再导出一张着色显示图,并去掉边线.,用于后期PS选择范围用. 把这几张图全都导入ps. 渲染图的阴影面是灰色的,示例 ...