java使用iText 生成PDF全攻略,包括创建文档,设置字体,添加表格(PdfPTable),创建新页(newPage),设置布局,加密

主要使用的jar包: itextpdf-5.4.2.jar,itext-pdfa-5.4.2.jar,itext-xtra-5.4.2.jar,如果用到中文,需要CJK字体的扩展包:itext-asian.jar

如果用到特殊符号的,需要另一个扩展包:itext-hyph-xml.jar。所有这些使用的jar包都可以在itext 5.4.2 官方下载地址:itext-5.4.2.zip

运行环境: java version 1.6.0_18 + iText 5.4.2

创建文档

package com.pdf;

import java.io.FileOutputStream;

import com.itextpdf.text.BaseColor;

import com.itextpdf.text.Chunk;

import com.itextpdf.text.Document;

import com.itextpdf.text.Font;

import com.itextpdf.text.PageSize;

import com.itextpdf.text.Paragraph;

import com.itextpdf.text.pdf.BaseFont;

import com.itextpdf.text.pdf.PdfWriter;

public class ItextHelloword {

public static void test() {

// 常用页面大小 PageSize.A4;

Document doc = new Document(PageSize.A4);

try {

// 定义输出位置并把文档对象装入输出对象中

PdfWriter.getInstance(doc,

new FileOutputStream("f:/hello.pdf"));

// 打开文档对象

doc.open();

// 加入文字"HelloWorld"

doc.add(new Paragraph("HelloWorld"));

// 关闭文档对象,释放资源

doc.close(); } catch (Exception e) { e.printStackTrace(); } } }

设置字体

亚洲国家的字体你可以从http://itext.sourceforge.net/downloads/iTextAsian.jar下载这个包。然后把它直接放到你的ClassPath中就可以了

BaseFont bfChinese = BaseFont.createFont("STSong-Light"

, "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);

表格

package com.pdf;

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.Cell;

import com.EnumTypeExampe.Color;

import com.itextpdf.awt.geom.Rectangle;

import com.itextpdf.text.BaseColor;

import com.itextpdf.text.Chunk;

import com.itextpdf.text.Document;

import com.itextpdf.text.Element;

import com.itextpdf.text.Font;

import com.itextpdf.text.PageSize;

import com.itextpdf.text.Paragraph;

import com.itextpdf.text.pdf.BaseFont;

import com.itextpdf.text.pdf.PdfPCell;

import com.itextpdf.text.pdf.PdfPTable;

import com.itextpdf.text.pdf.PdfWriter;

public class ItextHelloword {

/**

* @param args

*/

public static void main(String[] args)

throws Exception {

test() ;

}

public static void test() {

// 常用页面大小 PageSize.A4;

Document doc = new Document(PageSize.A4);

try {

// 定义输出位置并把文档对象装入输出对象中

PdfWriter writer=PdfWriter.getInstance(doc,

new FileOutputStream("f:/hello.pdf"));

// 定义中文字体

BaseFont bfChinese = BaseFont.createFont("STSong-Light",

"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

Font fontCN = new Font(bfChinese, 12,

Font.NORMAL);

// 打开文档对象

doc.open();

// 加入文字"HelloWorld"

doc.add(new Paragraph("HelloWorld"));

//定义一个表格 创建一个有3列的表格

PdfPTable table = new PdfPTable(3);

// 定义一个表格单元

PdfPCell cell = new PdfPCell(

new Paragraph("some text"));

// cell.setBorder(1);

// 把单元加到表格中

table.addCell(cell);

// 把下面这9项顺次的加入到表格中,当一行充满时候自动折行到下一行

table.addCell("1.1");

table.addCell("2.1");

table.addCell("3.1");

table.addCell("1.2");

table.addCell("2.2");

table.addCell("3.2");

table.addCell("1.3");

table.addCell("2.3");

table.addCell("3.3");

// 增加到文档中

doc.add(table);

doc.add(new Paragraph("居右 50%", fontCN));

// 设置表格大小为可用空白区域的50%

table.setWidthPercentage(50);

// 设置水平对齐方式为 居右

table.setHorizontalAlignment(Element.ALIGN_RIGHT);

doc.add(new Paragraph("居左 50%", fontCN));

// 增加到文档中3

doc.add(table);

// 设置水平对齐方式为 居左

table.setHorizontalAlignment(Element.ALIGN_LEFT);

doc.add(table);

// 关闭文档对象,释放资源

doc.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

创建新页

// 创建第2的页面

document.newPage();

document.add(new Paragraph("Hello Earth"));

document.resetHeader();

// 创建第3的页面

document.newPage();

document.add(new Paragraph("Hello Sun"));

document.add(new Paragraph("Remark: the header has vanished!"));

document.resetPageCount();

加密

public static void test() {

// 常用页面大小 PageSize.A4;

Document doc = new Document(PageSize.A4);

try {

// 定义输出位置并把文档对象装入输出对象中

PdfWriter writer=PdfWriter.getInstance(doc,

new FileOutputStream("f:/hello.pdf"));

// 打开文档对象

doc.open();

// 加入文字"HelloWorld"

doc.add(new Paragraph("HelloWorld"));

// setEncryption方法中可以设置如下内容(这样打开pdf时需要输入口令)

// PdfWriter.STRENGTH128BITS, "userpass", "ownerpass",

// PdfWriter.AllowCopy | PdfWriter.AllowPrinting

writer.setEncryption("userpassword".getBytes()

, "ownerPassword".getBytes(), PdfWriter.ALLOW_COPY

, PdfWriter.EMBEDDED_FILES_ONLY);

// writer.setEncryption(PdfWriter.STRENGTH40BITS,

//"", "", PdfWriter.AllowCopy);

// 关闭文档对象,释放资源

doc.close();

} catch (Exception e) {

e.printStackTrace();

}

}

以下图片是上面代码中生成的表格:

java生成pdf加密_java使用iText 生成PDF全攻略(表格,加密)相关推荐

  1. java 写数据到pdf模板_java利用itext填写pdf模板并导出

    1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf 会出现如下界面 下一步 点击浏览,选择刚才你转换好的pdf 下一步 4.打开后它 ...

  2. java pdf 首行缩进_java使用iText生成pdf文档的对齐方式

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  3. itext生成pdf间距_使用itext生成pdf

    在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过 在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或下载得到 ...

  4. java读pdf一行_java 用itext解析一个pdf文件, 一行数据为一个对象,怎么解析

    展开全部 一.iText介绍 iText是着名的开放源e68a843231313335323631343130323136353331333431363536码的站点sourceforge一个项目,是 ...

  5. java pdf 修改内容_生成PDF全攻略之在已有PDF上添加内容的实现方法

    项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此 ...

  6. [PDF文件全攻略]-PDF二次开发(.NET开发 C++开发 Java PHP)

    原文:http://www.cankau.cn/news/tech/2009112016.html [PDF文件全攻略]-PDF二次开发(.NET开发 C++开发 Java PHP) 2009-11- ...

  7. XCode 4.2(4.1)真机调试及生成IPA全攻略

    XCode 4.2(4.1)真机调试及生成IPA全攻略 网上有不少关于xocde3.x真机调试的文章,但鲜有xcode4.2相关的资料  .参考了一些文章,终于可以在xcode4.2上进行真机调试了, ...

  8. Linux下Makefile的automake生成全攻略(转)

    Linux下Makefile的automake生成全攻略(转)[@more@] 文/余涛 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便 ...

  9. Xcode 5 + iOS 7免证书(iDP)真机调试与生成IPA全攻略

    Xcode 5 + iOS 7免证书(iDP)真机调试与生成IPA全攻略 文章目录 1. 创建证书 2. 修改Xcode的配置文件 3. 准备自定义的生成后脚本 4. 修改工程设置 5. 旁门左道生成 ...

最新文章

  1. CentOS7.4 安装mongodb
  2. 大话android 进程通信之AIDL
  3. Linux命令之查找
  4. 插槽的使用_思维导图
  5. CSS快速学习8:圆角切图、滚动条和图片整合技术
  6. matlab中std函数怎么写,Matlab中求均值和标准差的函数分别是mean(x)和std(x)。
  7. 获取数据库值,再在其值上做修改
  8. Android学习记录(一) 重拾Activity
  9. 第一时间---Windows 7 with SP1中英文原版MSDN下载汇总---原汁原味
  10. PeckShield旗下数字资产反洗钱系统CoinHolmes亮相北京网络安全大会!
  11. 结构性用工荒也是用工荒
  12. Python绘制心型图案
  13. 如何写出好文案,不妨看看这篇(上)
  14. 广州拟放宽“双一流”高校人才入户门槛
  15. 入侵91网直到拿下服务器#并泄露150w+用户信息
  16. 深度学习寿命预测技术路线
  17. logstash的lumberjack协议解析
  18. 传播力模型的初步探讨
  19. Android编程实战——仿微信群聊-2——对象的网络传输
  20. 达到什么标准就可以上线了?

热门文章

  1. KAFKA介绍(分布式架构)
  2. 数据库SQL,技巧篇
  3. 《Linux多线程服务端编程——使用muduo C++网络库》读书笔记
  4. 怎样让防火墙跟其他网络设备实现时钟同步
  5. 2440启动代码分析
  6. 数字后端——布图规划
  7. 密码学入门1——凯撒密码和三重DES加解密
  8. biosrecovery什么意思_BIOS中的每个中文是什么意思
  9. vue 文件及描述信息一起上传_用Vue实现一个大文件上传和断点续传
  10. 华为手机如何调时间显示_华为手机照片如何出现时间地点天气,教你30秒,一学就会...