iText学习(一)
来源:互联网 发布:西部数码域名转移管理 编辑:程序博客网 时间:2024/05/02 04:31
一、使用iText五步创建pdf文档
1、 在项目中导入iText5.0.6.jar以及iTextAsian.jar(亚洲字符处理包),然后通过五步既可以创建我们的第一个pdf文档
public class First {public static void main(String[] args)throws Exception {Document doc = new Document();PdfWriter.getInstance(doc, new FileOutputStream("d:\\first.pdf"));doc.open();doc.add(new Phrase("hello world"));doc.close();}}
2、 使用iText构建pdf首当其冲的类就是Document类, Document类我们可以理解为一个容器。
3、Document 有三个构造函数:
public Document();public Document(Rectangle pageSize);public Document(Rectangle pageSize, float marginLeft, float marginRight, float marginTop, float marginBottom);
如果调用的Document的无参构造器创建的页面大小就是A4,页边距全是36pt。默认的字体为Helvetica,字体大小12pt,但还是建议显示的设置页面大小和页边距。
当然,当你设定好了pdf文档的边距对于页面尺寸后,可以对文档的边距与页面大小进行改变,但是他不会影响当前页,而是从下一个新页面开始起作用。
注意:
页边距在文档双面打印的时候要注意一些细节:如果文档要装订成册,那么我们就会希望在装订的一边设置大一点的页边距,
比如说平常的书左边装订,那么第一页的左边距要大一点,而第二页的右边距要和第一页的左边距一样。总而言之页边距要对称。
这些在iText中可以这样设置:
document.SetPageSize(PageSize.A5);document.SetMargins(36, 72, 108, 180);document.SetMarginMirroring(true);//设置外边距的反射效果为true这样设置页面的左边距和右边距就对称了。
但还有一些书是在页面的上部或者下部装订,因此就需要页面的上边距和下边距对称
document.setMargins(180, 72, 108, 72);document.setMarginMirroringTopBottom(true);
4、关于pdf中度量单位的问题
在pdf中度量单位是用户单位(user unit)。换算的公式是 1英寸=25.4mm=72 user units≈72pt(磅);
在iText中,默认的度量单位是pt不是user uint。因为pt和user unit基本上是相等的;
一般来讲,我们生成pdf文档是都会选用一些标准页面大小。为了方便生成标准页面大小,iText中提供一个PageSize类,
其中包含了大量标准页面大小,有B0到B10,A0到A10还有美国的标准页面:LETTER,LEGAL等。因此我们可以使用他来设置Document的页面大小。
如果你不喜欢来在不同单位中进行计算的话,iText中提供了一个Utilities静态类中的一些帮助我们在不同单位间切换(英寸、毫米)
static float millimetersToInches(float value) ;....5、向Document中添加内容的方式:
一种是:添加高级类,如:Chunk Pharse Paragraph类等,添加使用document.add(Element ele);
二种是:直接使用PdfWriter实例进行低级操作来添加数据。
获取PdfWriter的实例
PdfWriter weriter = PdfWriter.getInstance(document, new FileStream(fileName, FileMode.Create));
6、 关闭Document
在关闭Document的时候,设置的输出流也会被自动关闭,但有时候我们希望输出流不被自动关闭。
如,我们需要将多个生成的pdf进行打包成zip文件,那要如何做呢?
只要设置PdfWriter的ClosedStream属性为true即可。
ZipOutputStream zip = new ZipOutputStream(new FileStream(fileName, FileMode.Create));for (int i = 0; i < 4; i++){ ZipEntry entry = new ZipEntry("hello_" + i + ".pdf"); zip.PutNextEntry(entry); Document document= new Document(); PdfWriter writer = PdfWriter.getInstance(document, zip); writer.setCloseStream(false); document.open(); document.add(new Paragraph("Hello " + i)); document.close(); zip.closeEntry();} zip.close();
- iText学习(一)
- iText操作PDF学习(一)
- ITEXT实例学习与研究(一) 之 HELLOWORLD的实现,解决中文问题,ITEXT框架
- Adroid Itext学习文档(一)创建PDF
- iText制作PDF文件 学习笔记 (一)
- iText 学习(二)
- iText学习(三)
- iText 学习(四)
- iText学习(五)
- iText 学习(六)
- iText页脚的使用(一)
- PDF笔记(三):Itext学习
- iText操作PDF学习(二)
- iText操作PDF学习(三)
- iText操作PDF学习(四)
- iText操作PDF学习(五)
- iText系列(一) Itext简单介绍
- itext学习笔记
- hdu1533 KM算法
- 回调函数多次调用就出错
- Flex JAVA Map BlazeDS 参数的传递
- java简单的FTP客户端
- 获取当前用户
- iText学习(一)
- 面向对象三大特性---封装性
- Android 获取WIFI MAC地址的方法
- 背包again
- sql 提取不重复记录
- JavaScript 数据类型
- MySQL使用
- 读书感悟
- 【C语言】01-C语言概述