PDF 马达启动(iText in action翻译第2章第1节)(2)

本文介绍了使用iText库创建PDF文档的基本步骤,包括设置页面颜色、调整页边距及选择输出流等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

你也可以这样设置奇偶页面边距的对称性:
/* chapter02/HelloWorldMirroredMargins.java */
document.setMarginMirroring(
true);
在这个例子里面,所有的奇数页面的左边距是36PT右边距是72pt,而偶数页面,刚好相反。
2.1.2获取一个 DocWriter 实例
一旦你获取了一个Document对象,你就得决定将这个文件写到一个文件里面,还是内存,还是一个Java Servlet得输出流。你也要决定你是生成PDF格式还是其他得HTML或者RTF格式.
2步里面我们做了两件事情:
 
它告诉DocWriter 那个流是用来写入和生成文件的.
它和一个DocWriter的实例协作在本书里面,我们专注于PdfWriter 实例,因为我们的兴趣点在于创建PDF文件,但是你要知道,你也可以创建一个RtfWriter2实例或者HtmlWriter实例来生成RTFHTML
 
这些Writers对象决定了你将要写入Document的内容的最后文件格式:PDF, HTML或者RTF.
这些类的图例可以从附录AA.1章获取,里面展示了他们之间的关系,在该页的左上部分,你可以看到Document对象有一个ListenersArrayList属性,这些Listener扩展了DocListener接口,作为一个实例,如果你想这些Document对象增加内容,它将把这些方法转交给Listener,而这个Listener的接口都是由DocWriter的子类来实现的。
你可以从这些类图上发现,这些类的构造函数是protected的,你只能通过getInstance()方法来获取,这个getInstance()方法创建了一个writer对象给Document同时增加了listener接口Document.例如PdfDocument RtfDocument 对象.
 
创建内容相同格式不同的文档
我们在代码中加入一下语句,来看看会发生什么:
/* chapter02/HelloWorldMultiple.java */
PdfWriter.getInstance(document,
new FileOutputStream("HelloWorldMultiple.pdf"));
RtfWriter2.getInstance(document,
new FileOutputStream("HelloWorldMultiple.rtf"));
HtmlWriter.getInstance(document,
new FileOutputStream("HelloWorldMultiple.htm"));
 
你使用PDF, RTF, HTML的格式的Writer对象,所以你可以获得3个不同格式的文件。但是注意,不是所有的内容都可以添加到这三种格式的。
 
选择一个输出流
当你向文档里面增加内容的时候,实际上是把一些PDF, RTF, HTML语法写入到输出流里面,到目前为止,你用的是java.io.FileOutputStream.,本书采用的例子之所以使用这个流,是因为这样你可以尝试PDF的操作,而又不用安装一些额外的软件,如:web服务器或者J2EE容器等等。
在实际的应用程序里面,你可能会把PDF的字节流写入到一个浏览器(ServletOutputStream)或者内存里面(ByteArrayOutputStream),iText可以写入字节到任何的java.io.OutputStream和他的子类里面。如果你想把PDF写入到System.out然后看看PDF会是什么样子,你可以这样做:
/* chapter02/HelloWorldSystemOut.java */
PdfWriter.getInstance(document, System.out);
如果你去尝试这个例子,你可以识别出“Hello World”,但是你也会发现,对象用object来表示,还有一些奇怪的2进纸代码。在18章,我们将可以看到iTextPDF的内幕,你将可以看到PDF的文件构成,这些是为想深入理解PDF格式的人准备的,你要是感兴趣如何在web应用里面创建一个PDF你可以使用javax.servlet.ServletOutputStream来作为PDFWriter的参数。java.io.OutputStream你也可以用response.getOutputStream()来作为创建PdfWriter的第2个参数,但是这样可以在一些浏览器里面运行,但是很不幸,有些是不行的。17章将告诉你如何规避在web应用中使用iText的缺陷,这些缺陷是浏览器相关的,不是和iText相关的。
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值