天天看点

第二章 PDF 马达启动-2.1.1

这章包含:

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 的代码如下所示

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

Document document  =   new  Document();

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

try  ... ... {

第二章 PDF 马达启动-2.1.1

PdfWriter.getInstance(document,

第二章 PDF 马达启动-2.1.1

new FileOutputStream("HelloWorld.pdf"));

第二章 PDF 马达启动-2.1.1

document.open();

第二章 PDF 马达启动-2.1.1

document.add(

第二章 PDF 马达启动-2.1.1

new Paragraph("Hello World"));

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

}   catch  (Exception e) ... ... {

第二章 PDF 马达启动-2.1.1

// handle exception

第二章 PDF 马达启动-2.1.1

}

第二章 PDF 马达启动-2.1.1

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 这个类来定义页面的尺寸,

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

Rectangle pageSize  =   new  Rectangle(216f, 720f);

第二章 PDF 马达启动-2.1.1

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.

大部分时间, 你可以使用标准尺寸, 譬如你写信, 你可以使用标准信纸得尺寸。你可以这样调用这写标准

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

Document document  =   new  Document(PageSize.LETTER);

第二章 PDF 马达启动-2.1.1

这样得话, 你创建出来得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改变成横排的方式

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

Document document  =   new  Document( new  Rectangle( 792 ,  612 )); 也可以直接定义长大于高的方式来实现横排

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

Document document  =   new  Document(PageSize.LETTER.rotate());

尽管这两个方法在你打开PDF文件的时候, 看起来是一样的, 但是他们是有细微区别的:

■第一个文件, 第一个文件的宽是小于高的, 但是旋转了90度

■ 第二个文件是没有旋转的。

当你处理这些文件的时候, 你会发现这些不同点会给你带来一丝的麻烦。

页面颜色 如果你使用一个Rectangle作为PageSize的参数,你也可以改变这个页面的背景颜色 在接下来的例子里面,你可以调用Rectangle的setBackgroundColor()方法来将背景改成浅蓝色:

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

Rectangle pagesize  =   new  Rectangle( 612 ,  792 );

第二章 PDF 马达启动-2.1.1

pagesize.setBackgroundColor( new  Color( 0x64 ,  0x95 ,  0xed ));

第二章 PDF 马达启动-2.1.1

Document document  =   new  Document(pagesize); 在这个例子里面,你使用的是java.awt.Color,这个颜色是用RGB的方式来设置的,如果你习惯于使用CMYK的颜色来设置,你可以使用com.lowagie.text.pdf.ExtendedColor对象。你可以在附录A的第8节了解iText的类结构,在11章你可以阅读有关颜色的内容, iText的API包含了第3种的Document对象的构建函数,不仅包含了一个Rectangle, 是4个Float的参数,我们在这里不再详述了。 页边距 在例子的第4步,我们让Document对象增加了一个段落:Paragraph,这个段落包含一段文字:hello world,但是,iText怎么知道把这个文字放在页面的那个地方呢?这个答案相当简单:当我们增加段落,短语或者区块到Document对象的时候,iText设定相同的上下左右空间,这个就是页边距,你之前创建的“Hello World”例子里面,iText使用默认的页边距,半英寸,让我们来改变这个数字:

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

Document document  =   new  Document(PageSize.A5,  36 ,  72 ,  108 ,  180 );

样PDF文档的左边距是36PT,右边距是72PT,上边距是108PT,下边距是180PT

你也可以这样设置奇偶页面边距的对称性:

第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1
第二章 PDF 马达启动-2.1.1

document.setMarginMirroring( true );

在这个例子里面,所有的奇数页面的左边距是36PT,右边距是72pt,而偶数页面,刚好相反。

继续阅读