这章包含:
Hello World, Hello iText
5步创建一个PDF
操作 PDF: 基础
如果你是一个iText的新用户,读这章的意义如同你获得一个新的工作的第一天,有人会和你说这个建筑, 和你不认识的人握手,你视图记住每个人的名字.在这天结束的时候你会发现你根本没有做任何事情, 但是你确实做了一些事情, 你和每一个人说了:hello.
在这个章节, 你将利用5个步骤来创建一个PDF,你也会学习如何扩展每一步:增加一些内容,你也会学到如何使用一些iText classes去获得和操作PDF文件.
尽管前一个章节我用一些PDF的截屏给你234章的的一个总览,这个章节将呈现一些iText的真是的案例, 每个例子你都将得到一些PDF“装置”。2.1 5 步创建一个 PDF 文件
按照没有学会走不能学飞的道理,我们将由一个简单的PDF文件开始,图2.1 展现了一个“hello world”的pdf文件。
这些产生“Hello World” PDF 的代码如下所示
Document document = new Document();
try ... {
PdfWriter.getInstance(document,
new FileOutputStream("HelloWorld.pdf"));
document.open();
document.add(
new Paragraph("Hello World"));
} catch (Exception e) ... {
// handle exception
}
document.close();
我们来将这个代码划分一些
l Step 1 创建一个Document对象
l Step 2 获得一个 DocWriter 实例 (这个例子是一个 PdfWriter 实例)
l Step 3 打开那个Docment对象
l Step 4 增加Document的内容.
l Step 5 关闭 Document.对象
在每一个小节, 我们将讨论重点放在一个不同的步骤上,我们针对每一步做一些改动,你将创建一些微小的改动的PDF文件
你现在可以处理不同版本的Hello World的PDF文件了, 你可以变换字体, 是否粗体(是否斜体), 然后去发现这些源码的相似和不同之处,在最后一个小节, 我们将着重讲解如何按照MVC模式来使用iText。
2.1.1 创建一个新的Document对象
Document 对象是你用它来增加内容:包含文字和元数据的, 在document对象上, 你可以定义页面大小,页面的颜色, 页边距等等。在上述的例子里面, 那个Document是一个包含缺省属性的对象, 你可以使用com.lowagie.text.Rectangle 这个类来定义页面的尺寸,
Rectangle pageSize = new Rectangle(216f, 720f);
Document document = new Document(pageSize);
在这个代码中的那两个实数表示了未来页面的宽和高,这个实数的单位可以由用户自己定义, 默认的单位是象素点, 一英寸 包含72个点, 上文中我们定义了一个宽 3 英寸 , 高 10 英寸 的页面, 你运行这个代码, 再打开这个PDF文件, 点击文件>文件属性>描述,你会发现这个文件的尺寸确实是3X 10 英寸 的。
页面尺寸
理论上, 你可以创建任何尺寸的文件, 但是不同版本的PDF文件对文件大小是有约定的, 在PDF1.3里面, 最小的文件尺寸是72X72象素点, 最大是3,240 x 3,240象素点,最新的版本的PDF规范里面, 这个尺寸的限制为:3 x 3到14,400 x 14,400.
我们也在第3章讨论PDF其他的一些限制
FAQ:是否Itext包含了一些方法, 可以让英寸和象素之间, 象素和米制单位的转换方法呢?
没有,你会发现在iText里面都是用象素点为单位的, 极少的情况页会用到千象素点。如果你要做这些转换, 你得自己写一些程序, 记住 1 in = 2.54 cm = 72 points.
大部分时间, 你可以使用标准尺寸, 譬如你写信, 你可以使用标准信纸得尺寸。你可以这样调用这写标准
Document document = new Document(PageSize.LETTER);
这样得话, 你创建出来得PDF将是8.5 x 11 in ,而默认的第一个程序是采用A4大小作为文档的页面大小的(8.26 x 11.69 in or 210 x 297 mm ).
PageSize对象是为了您写程序方便而创建的一个对象,它里面只有一些标准的尺寸,从A0 到
A10, B0 到 B5, 信件,, _11x17, 便条, ARCH_A 到 ARCH_E等
默认的文档是竖排的, 当然你可以o改变成横排的方式
Document document = new Document( new Rectangle( 792 , 612 ));
Document document = new Document(PageSize.LETTER.rotate());
尽管这两个方法在你打开PDF文件的时候, 看起来是一样的, 但是他们是有细微区别的:
■第一个文件, 第一个文件的宽是小于高的, 但是旋转了90度
■ 第二个文件是没有旋转的。
当你处理这些文件的时候, 你会发现这些不同点会给你带来一丝的麻烦。
Rectangle pagesize = new Rectangle( 612 , 792 );
pagesize.setBackgroundColor( new Color( 0x64 , 0x95 , 0xed ));
Document document = new Document(pagesize);
Document document = new Document(PageSize.A5, 36 , 72 , 108 , 180 );
样PDF文档的左边距是36PT,右边距是72PT,上边距是108PT,下边距是180PT
document.setMarginMirroring( true );