iText是一个有名的开源站点sourceforge项目,是用于生成PDF文档的java类库。 iText不仅可以生成PDF或rtf文档,还可以将XML、Html文件转换为PDF文件。
iText安装非常方便,在网站上下载iText.jar文件后,只需在系统的CLASSPATH中输入iText.jar的路径,即可在程序中使用iText类库。
二.制作第一个PDF文档
在iText中生成PDF文档需要五个步骤:
创建com.lowagie.text.Document对象的实例。
文档文档=new document (;
将“写入器”(Writer )与文档对象相关联,以便“写入器”(Writer )可以将文档写入磁盘。
pdfwriter.getinstance(Document,new file output stream (' hello world.pdf ' );
打开文档。
document.open (;
向文档中添加内容。
文档. add (new paragraph (hello world ) );
关闭文档。
document.close (;
在上面的五个步骤中,可以创建Helloworld.PDF文件。 文件的内容是“Hello World”。
创建com.lowagie.text.Document对象的实例
com.lowagie.text.Document对象的构造函数有以下三种:
公共文档(;
公共文档(恢复页面;
公共文档(rectangle pagesize,
int marginLeft,
int marginRight,
int marginTop,
int marginBottom;
构造函数的参数pageSize是文档页面的大小,在第一个构造函数中,页面大小为A4,效果与文档(pagesize.a4 )相同。 在第三个构造函数中,参数marginLeft、marginRight、marginTop和marginBottom分别为左、右、上、下页边距。
参数pageSize允许您设置页面大小、页面背景颜色和页面水平/垂直等属性。 iText是A0-A10、AL、LETTER、HALFLETTER、_11x17、LEDGER、NOTE、B0-B5、ARCH_A-ARCH_E、FLSA、FLSE等纸张类型可以使用Rectangle方法rotate ()将页面设置为横向。
写入器对象
创建文档对象后,必须将一个或多个Writer对象关联起来。 Writer对象允许您将特定文档(如com.lowagie.text.PDF.PDFWriter和com.low agie.text.html.html writer )存储为所需的格式
设置文档属性
在打开文档之前,可以设置文档的属性,如标题、主题、作者、关键字、装订方法、作者、生产者和创建日期。 调用的方法分别如下
publicbooleanaddtitle (字符串标题) )。
publicbooleanaddsubject (字符串子ject ) )。
公共蓝牙密钥(string keywords )。
publicbooleanaddauthor (字符串author ) )。
publicbooleanaddcreator (字符串创建器) )。
公共布尔添加生产程序(
公共布尔附加创建日期(
publicbooleanaddheader (字符串名称,字符串内容) )。
其中,方法addHeader对PDF文档无效。 addHeader仅对html文档有效,用于添加文档的标题信息。
在生成新页面之前,可以设定页面大小、书签和脚注等信息。 调用的方法如下。
publicbooleansetpagesize (返回页面) ) )。
公共标志水印(水印水印)。
公共语音移除水印(
公共语音设置头(头
rFooter header)public void resetHeader()
public void setFooter(HeaderFooter footer)
public void resetFooter()
public void resetPageCount()
public void setPageCount(int pageN)
如果要设定第一页的页面属性,这些方法必须在文档打开之前调用。
对于PDF文档,iText还提供了文档的显示属性,通过调用书写器的setViewerPreferences方法可以控制文档打开时Acrobat Reader的显示属性,如是否单页显示、是否全屏显示、是否隐藏状态条等属性。
另外,iText也提供了对PDF文件的安全保护,通过书写器(Writer)的setEncryption方法,可以设定文档的用户口令、只读、可打印等属性。
添加文档内容
所有向文档添加的内容都是以对象为单位的,如Phrase、Paragraph、Table、Graphic对象等。比较常用的是wydst(Paragraph)对象,用于向文档中添加一段文字。
四、文本处理
iText中用文本块(Chunk)、短语(Phrase)和wydst(paragraph)处理文本。
文本块(Chunk)是处理文本的最小单位,有一串带格式(包括字体、颜色、大小)的字符串组成。如以下代码就是产生一个字体为HELVETICA、大小为10、带下划线的字符串:
Chunk chunk1 = new Chunk("This text is underlined", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE));
短语(Phrase)由一个或多个文本块(Chunk)组成,短语(Phrase)也可以设定字体,但对于其中以设定过字体的文本块(Chunk)无效。通过短语(Phrase)成员函数add可以将一个文本块(Chunk)加到短语(Phrase)中,如:phrase6.add(chunk);
wydst(paragraph)由一个或多个文本块(Chunk)或短语(Phrase)组成,相当于WORD文档中的wydst概念,同样可以设定wydst的字体大小、颜色等属性。另外也可以设定wydst的首行缩进、对齐方式(左对齐、右对齐、居中对齐)。通过函数setAlignment可以设定wydst的对齐方式,setAlignment的参数1为居中对齐、2为右对齐、3为左对齐,默认为左对齐。
五、表格处理
iText中处理表格的类为:com.lowagie.text.Table和com.lowagie.text.PDF.PDFPTable,对于比较简单的表格处理可以用com.lowagie.text.Table,但是如果要处理复杂的表格,这就需要com.lowagie.text.PDF.PDFPTable进行处理。这里就类com.lowagie.text.Table进行说明。
类com.lowagie.text.Table的构造函数有三个:
①Table (int columns)
②Table(int columns, int rows)
③Table(Properties attributes)
参数columns、rows、attributes分别为表格的列数、行数、表格属性。创建表格时必须指定表格的列数,而对于行数可以不用指定。
建立表格之后,可以设定表格的属性,如:边框宽度、边框颜色、衬距(padding space 即lhzdhf之间的间距)大小等属性。下面通过一个简单的例子说明如何使用表格,代码如下:
Table table = new Table(3);
table.setBorderWidth(1);
table.setBorderColor(new Color(0, 0, 255));
table.setPadding(5);
table.setSpacing(5);
Cell cell = new Cell("header");
cell.setHeader(true);
cell.setColspan(3);
table.addCell(cell);
table.endHeaders();
cell = new Cell("example cell with colspan 1 and rowspan 2");
cell.setRowspan(2);
cell.setBorderColor(new Color(255, 0, 0));
table.addCell(cell);
table.addCell("1.1");
table.addCell("2.1");
table.addCell("1.2");
table.addCell("2.2");
table.addCell("cell test1");
cell = new Cell("big cell");
cell.setRowspan(2);
cell.setColspan(2);
table.addCell(cell);
table.addCell("cell test2");
运行结果如下:
header cell test2
代码1-5行用于新建一个表格,如代码所示,建立了一个列数为3的表格,并将边框宽度设为1,颜色为蓝色,衬距为5。
相关报道:
越来越多的电商站点抱怨现在的电商站点不好做,特别是对于一些产品电商站点而言更是如此,一些开设卖衣服、卖礼物的电商站点运营推广也好像陷入了停滞状态,关靠每天的发帖、广告投放在吸引更多消费者上也是发挥不出大的效果,很多电商站点也面临了发展的瓶 更多
[javascript] /** * 提交表单 */ function $postForm(a) { if (a.formPanel.getForm().isValid()) { var b = a.scope ? a.scope: this; a.formPanel.getForm().submit({ scope: b, url: a.url, method: post, params: a.params, waitMsg: 正在提交数据..., s 更多