iText入门基础教程
- 格式:docx
- 大小:238.42 KB
- 文档页数:18
目录
一、iText简介 (4)
1)What is iText®? (4)
二、搭建iText环境 (6)
1)环境准备 (6)
2)几个基础的类的含义 (6)
三、用iText进行PDF操作 (7)
1)经典的hello word. (7)
2)给pdf来点颜色 (9)
3)设置阅读器参数 (10)
4)给文档设置密码和权限 (13)
5)解决中文的问题 (16)
6)总结: (18)
一、iText简介
1)What is iText®?
如果你在需要创建PDF的一系列操作,你将使用像Adobe Acrobat 或者Adobe InDesign 这样的桌面图形设计工具去手动或者半自动的创建一个文档。
另一种情况, PDF文档是利用软件应用提供的API自动创建的、不需要或者最小化地依赖人工介入。
有一些场景是文档先被创建成一些其他的格式、例如:html、xml,然后再转换成PDF.这些不同方式的需求可能需要不同的软件工具。
类似的情况发生在操作PDF,你可能用Adobe Acrobat更新PDF,但是也有工具可以使你将数据库形式的数据去增加内容。
iText 就是一个专注于自动化方面的工具。
iText是一个PDF的类库
iText是提供了一组API,允许开发人员做一下的事情:(不仅仅局限以下、还有更多可以做的)
•从xml或者数据库生成文档或者报表。
•制作绘图和书籍,开拓很多PDF中的交互特性
•在现有的PDF中增加书签,页码,水印,和其他特性
•切分或者整合存在的PDF文件
•填写互动表格
•在WEB浏览器中提供动态生成和操作PDF的服务
iText 不是最终用户的工具.你必须将iText搭建在你自己的应用中,这样你可以进行PDF 的一系列操作了.
功能预览
下图罗列出了你可以用iText进行的操作:
iText支持的功能
iText部分支持的功能
iText主要的作用是创建和操作PDF文档
当前最新版本:5.1.0
项目官方网站:/
下载地址:
/project/itext/iText/iText5.1.0/itext-5.1.0.z ip
二、搭建iText环境
1)环境准备
•MyEclipse8.5
•下载iText最新jar包
•新建一个javaProject、将iText.jar导入classPath、这样就可以用iText进行PDF 开发了。
2)几个基础的类的含义
三、用iText进行PDF操作
1)经典的hello word.
运行-输出:
在D盘可看见生成了一个helloworld.pdf文件:
打开helloworld.pdf、可看见里面显示了文字hello world! (局部截图)
2)给pdf来点颜色
说明: 基于第一个例子代码基础上、给文档设置背景颜色、边框、外边距
Code:
1.新建Class ColorItext、在main方法中:
------------------------------------------------------------------------------------------ //定义一个A4大小的矩形组件
Rectangle rect = new Rectangle(PageSize.A4);
//设置背景色为浅灰色
rect.setBackgroundColor(BaseColor.LIGHT_GRAY);
//设置border类型为box(四周都有)
rect.setBorder(Rectangle.BOX);
//设置border颜色为深灰色
rect.setBorderColor(BaseColor.DARK_GRAY);
//设置border宽度为5
rect.setBorderWidth(5);
//创建一个文档,将rect作为预设的样式传入,后面的10,10,10,10是文档的外边距
Document document = new Document(rect,10,10,10,10);
try {
PdfWriter.getInstance(document,new
FileOutputStream("D:\\helloworld.pdf"));
document.open();
document.add(new Paragraph("hello world!"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}finally{
document.close();
}
运行-输出:
打开helloworld.pdf-有颜色了吧
3)设置阅读器参数
说明: 基于第一个例子代码基础上、设置阅读器的参数
Code:
1.新建Class WriterItext、在main方法中:
------------------------------------------------------------------------------------------ Document document = new Document();
try {
PdfWriter pdf = PdfWriter.getInstance(document,new FileOutputStream("D:\\helloworld.pdf"));
/**
* PdfWriter.PageModeUseThumbs:显示缩略图
* PdfWriter.PageLayoutTwoColumnLeft:双列显示,奇数页在左
* PdfWriter.HideMenubar:隐藏阅读程序的菜单
*/
pdf.setViewerPreferences(PdfWriter.PageModeUseThumbs|PdfWriter .PageLayoutTwoColumnLeft|PdfWriter.HideMenubar);
document.open();
document.add(new Paragraph("hello world!"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}finally{
document.close();
}
运行-输出:
打开helloworld.pdf
4)给文档设置密码和权限
打开PDF后、查看文
档属性:
可以看出
只有打印
和内容复
制是被允
许操作的
设置文档权限相关静态变量含义
下列表列出了文档许可参数设置的含义,不过要注意,如果你用40bit进行加密,那么标注为128bit
的会自动的被禁止,如果你想要取消这些许可,你必须用128bit进行加密,显而易见,用128bit进
行加密提供了更高的安全级别。
静态变量名作用标注PdfWriter. ALLOW_ASSEMBLY 插入、删除、旋转页面、加入书签的允
128bit
许。
内容不能被改变、除非PdfWrite
r. ALLOW_MODIFY_CONTENTS设
FAQ:如果你想取消拷贝或者保存PDF文件的许可,这样是很难做到的,你不能使abode reader的Save(Save as)命令取消,这不是iText的bug,而是PDF本身带来的安全问题,如果你真想这么做的话,你必须利用digital rights management(数字版权加密保护技术)作为解决方案,有许多这样的技术提供者,但是这些工具是相当昂贵的。
5)解决中文的问题
lowagie/text/pdf/fonts/”变成了”com/itextpdf/text/pdf/fonts/”而老版的
itext-asian.jar路径是” com/ lowagie/text/pdf/fonts/”(我没有找到最新版本的语言包、可能最新的语言包已经修复了这个问题)
更改iTextAsian.jar包名的方法如下:
1)将iTextAsian.jar解压,目录结构如下
com/ lowagie/text/pdf/fonts/
2)将加压后com目录下的包名lowagie更改为itextpdf
3)在命令行转至iTextAsian目录,重新打包为iTextAsian.jar文件
命令如下:
jar cvf iTextAsian.jar cm/itextpdf/text/pdf/fonts/*
执行后,将新的iTextAsian.jar加入到classpath路径
再次运行-输出:
打开helloworld.pdf
此时可以正常显示中文了
6)总结:
iText功能非常强大、此教程仅仅作为入门理解级别的教程、后续有时间还会增加一些高级例子、有基础的同学可以参考<<itext in action>>这本书。