一、iText介绍iText是驰名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不只能够生成PDF或rtf的文档,并且能够将XML、Html文件转化为PDF文件。iText的安拆十分便利,在网站上下载iText.jar文件后,只需要在系统的CLASSPATH中加进 iText.jar的途径,在法式中就能够利用iText类库了。二、成立第一个PDF文档用iText生成PDF文档需要5个步调:①成立com.lowagie.text.Document对象的实例。Documentdocument=newDocument();②成立一个书写器(Writer)与document对象联系关系,通过书写器(Writer)能够将文档写进 到磁盘中。PDFWriter.getInstance(document,newFileOutputStream("Helloworld.PDF"));③翻开文档。document.open();④向文档中添加内容。document.add(newParagraph("HelloWorld"));⑤封闭文档。document.close();通过上面的5个步调,就能产生一个Helloworld.PDF的文件,文件内容为"HelloWorld"。成立com.lowagie.text.Document对象的实例com.lowagie.text.Document对象的构建函数有三个,别离 是:publicDocument();publicDocument(RectanglepageSize);publicDocument(RectanglepageSize,intmarginLeft,intmarginRight,intmarginTop,intmarginBottom);构建函数的参数pageSize是文档页面的大小,关于第一个构建函数,页面的大小为A4,同Document(PageSize.A4)的效果一样;关于第三个构建函数,参数marginLeft、marginRight、marginTop、marginBottom别离 为左、右、上、下的页边距。通过参数pageSize能够设定页面大小、面布景色、以及页面横向/纵向等属性。iText定义了A0-A10、AL、LETTER、HALFLETTER、_11x17、LEDGER、NOTE、B0-B5、ARCH_A-ARCH_E、FLSA和FLSE等纸张类型,也能够通过RectanglepageSize=newRectangle(144,720);自定义纸张。通过Rectangle办法rotate()能够将页面设置成横向。书写器(Writer)对象一旦文档(document)对象成立好之后,需要成立一个或多个书写器(Writer)对象与之联系关系。通过书写器(Writer)对象能够将详细文档存盘成需要的格局,如com.lowagie.text.PDF.PDFWriter能够将文档存成PDF文件,com.lowagie.text.html.HtmlWriter能够将文档存成html文件。设定文档属性在文档翻开之前,能够设定文档的题目、主题、做者、关键 字、拆订体例、创建者、消费者、创建日期等属性,挪用的办法别离 是:publicbooleanaddTitle(Stringtitle)publicbooleanaddSubject(Stringsubject)publicbooleanaddKeywords(Stringkeywords)publicbooleanaddAuthor(Stringauthor)publicbooleanaddCreator(Stringcreator)publicbooleanaddProducer()publicbooleanaddCreationDate()publicbooleanaddHeader(Stringname,Stringcontent)此中办法addHeader关于PDF文档无效,addHeader仅对html文档有效,用于添加文档的头信息。当新的页面产生之前,能够设定页面的大小、书签、脚注(HeaderFooter)等信息,挪用的办法是:publicbooleansetPageSize(RectanglepageSize)publicbooleanadd(Watermarkwatermark)publicvoidremoveWatermark()publicvoidsetHeader(HeaderFooterheader)publicvoidresetHeader()publicvoidsetFooter(HeaderFooterfooter)publicvoidresetFooter()publicvoidresetPageCount()publicvoidsetPageCount(intpageN)假设 要设定第一页的页面属性,那些办法必需在文档翻开之前挪用。关于PDF文档,iText还供给了文档的展现 属性,通过挪用书写器的setViewerPreferences办法能够掌握 文档翻开时AcrobatReader的展现 属性,如能否单页展现 、能否全屏展现 、能否隐躲 形态条等属性。别的,iText也供给了对PDF文件的平安庇护,通过书写器(Writer)的setEncryption办法,能够设定文档的用户口令、只读、可打印等属性。添加文档内容所有向文档添加的内容都是以对象为单元的,如Phrase、Paragraph、Table、Graphic对象等。比力常用的是段落(Paragraph)对象,用于向文档中添加一段文字。三、文本处置iText顶用文本块(Chunk)、短语(Phrase)和段落(paragraph)处置文本。文本块(Chunk)是处置文本的最小单元,有一串带格局(包罗字体、颜色、大小)的字符串构成。如以下代码就是产生一个字体为HELVETICA、大小为10、带下划线的字符串:Chunkchunk1=newChunk("Thistextisunderlined",FontFactory.getFont(FontFactory.HELVETICA,12,Font.UNDERLINE));短语(Phrase)由一个或多个文本块(Chunk)构成,短语(Phrase)也能够设定字体,但关于此中以设定过字体的文本块(Chunk)无效。通过短语(Phrase)成员函数add能够将一个文本块(Chunk)加到短语(Phrase)中,如:phrase6.add(chunk);段落(paragraph)由一个或多个文本块(Chunk)或短语(Phrase)构成,相当 于WORD文档中的段落概念,同样能够设定段落的字体大小、颜色等属性。别的也能够设定段落的首行缩进、对齐体例(左对齐、右对齐、居中对齐)。通过函数setAlignment能够设定段落的对齐体例,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(intcolumns)②Table(intcolumns,introws)③Table(Propertiesattributes)参数columns、rows、attributes别离 为表格的列数、行数、表格属性。创建表格时必需指定表格的列数,而关于行数能够不消指定。成立表格之后,能够设定表格的属性,如:边框宽度、边框颜色、衬距(paddingspace即单位格之间的间距)大小等属性。下面通过一个简单的例子阐明 若何利用表格,代码如下:1:Tabletable=newTable(3);2:table.setBorderWidth(1);3:table.setBorderColor(newColor(0,0,255));4:table.setPadding(5);5:table.setSpacing(5);6:Cellcell=newCell("header");7:cell.setHeader(true);8:cell.setColspan(3);9:table.addCell(cell);10:table.endHeaders();11:cell=newCell("examplecellwithcolspan1androwspan2");12:cell.setRowspan(2);13:cell.setBorderColor(newColor(255,0,0));14:table.addCell(cell);15:table.addCell("1.1");16:table.addCell("2.1");17:table.addCell("1.2");18:table.addCell("2.2");19:table.addCell("celltest1");20:cell=newCell("bigcell");21:cell.setRowspan(2);22:cell.setColspan(2);23:table.addCell(cell);24:table.addCell("celltest2");运行成果如下:headerexamplecellwithcolspan1androwspan21.12.11.22.2celltest1bigcellcelltest2代码1-5行用于新建一个表格,如代码所示,成立了一个列数为3的表格,并将边框宽度设为1,颜色为蓝色,衬距为5。代码6-10行用于设定表格的表头,第7行cell.setHeader(true);是将该单位格做为表头信息展现 ;第8行cell.setColspan(3);指定了该单位格占3列;为表格添加表头信息时,要重视 的是一旦表头信息添加完了之后,必需挪用endHeaders()办法,如第10行,不然当表格跨页后,表头信息不会再展现 。代码11-14行是向表格中添加一个宽度占一列,长度占二行的单位格。往表格中添加单位格(cell)时,按自左向右、从上而下的次序添加。如施行完11行代码后,表格的右下方呈现2行2列的空白,那是再往表格添加单位格时,先填满那个空白,然后再另起一行,15-24行代码阐明 了那种添加挨次。五、图像处置iText中处置表格的类为com.lowagie.text.Image,目前iText撑持的图像格局有:GIF,Jpeg,PNG,wmf等格局,关于差别的图像格局,iText用同样的构造函数主动识别图像格局。通过下面的代码别离 获得gif、jpg、png图像的实例。Imagegif=Image.getInstance("vonnegut.gif");Imagejpeg=Image.getInstance("myKids.jpg");Imagepng=Image.getInstance("hitchcock.png");图像的位置图像的位置次要是指图像在文档中的对齐体例、图像和文本的位置关系。IText中通过函数publicvoidsetAlignment(intalignment)停止处置,参数alignment为Image.RIGHT、Image.MIDDLE、Image.LEFT别离 指右对齐、居中、左对齐;当参数alignment为Image.TEXTWRAP、Image.UNDERLYING别离 指文字绕图形展现 、图形做为文字的布景展现 。那两种参数能够连系以到达预期的效果,如setAlignment(Image.RIGHT|Image.TEXTWRAP)展现 的效果为图像右对齐,文字围绕图像展现 。图像的尺寸和扭转假设 图像在文档中不按原尺寸展现 ,能够通过下面的函数停止设定:publicvoidscaleAbsolute(intnewWidth,intnewHeight)publicvoidscalePercent(intpercent)publicvoidscalePercent(intpercentX,intpercentY)函数publicvoidscaleAbsolute(intnewWidth,intnewHeight)间接设定展现 尺寸;函数publicvoidscalePercent(intpercent)设定展现 比例,如scalePercent(50)表达 展现 的大小为原尺寸的50%;而函数scalePercent(intpercentX,intpercentY)则图像高宽的展现 比例。假设 图像需要扭转必然角度之后在文档中展现 ,能够通过函数publicvoidsetRotation(doubler)设定,参数r为弧度,假设 扭转角度为30度,则参数r=Math.PI/6。六、中文处置默认的iText字体设置不撑持中文字体,需要下载远东字体包iTextAsian.jar,不然不克不及往PDF文档中输出中文字体。通过下面的代码就能够在文档中利用中文了:BaseFontbfChinese=BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);com.lowagie.text.FontFontChinese=newcom.lowagie.text.Font(bfChinese,12,com.lowagie.text.Font.NORMAL);Paragraphpragraph=newParagraph("你好",FontChinese);小结iText还有良多高级的功用,那里就纷歧一介绍了,详细开发时可参考发布的文档。总的来说,iText是一套java情况下不错的造造 PDF的组件。因为iText撑持jsp/javabean下的开发,那使得B/S利用 中的报表问题能得到很好的处理。因为iText事实 不是专门为造造 报表设想,所有报表中的内容、格局都需要通过写代码实现,相关于那些专业的撑持可视化设想的报表软件来说,编程的工做量就有必然水平的增加。
MyEclipse中怎么没有com.lowagie.text.rtf.RtfWriter2
com.lowagie.text.rtf.RtfWriter2 不在com.lowagie.text包下,需要添加 itext-rtf
maven依靠 如下:
dependency
groupIdcom.lowagie/groupId
artifactIditext-rtf/artifactId
version2.1.7/version
/dependency
重视 :2.1.7版本以上的com.lowagie.text 因为合并问题,maven会主动下载itextpdf包,招致import错误,那就只能改代码了,或者只利用2.1.7版本
java 如何给相对途径下的pdf文件加水印3、在文档选项页面,抉择 水印--添加;
4、起首输进 文本即水印内容,以及文本大小,颜色和字体信息;
5、接着设置文本放置的标的目的,能够自定义肆意角度,为了不影响阅读,能够设置通明度;
Eclipse中编写java法式,出错 com.lowagie cannot be resolved,是什么问题?可能是导进 的途径不合错误,楼上所说 import javax.swing.event.DocumentListener;那些包底子就不是你需要的。
java itext5.0.6怎么设置页脚java itext5.0.6怎么设置页脚
/**
* ITextTest
* iText生成PDF加进 列表,正文等内容,同时设置页眉和页脚及页码等。
*/
package com.labci.itext.test;
import a href="" class='replace_word' title="Java EE常识库" target='_blank' style='color:#df3434; font-weight:bold;'Java/a.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.Annotation;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.List;
import com.lowagie.text.ListItem;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
/**
* @author Bill Tu(tujiyue/iwtxokhtd)
* Jun 6, 2011[4:10:35 PM]
*
*/
public class ITextList {
private final static String RESULT_FILE="itext_list.pdf";
public static void main(String []args){
Document doc=new Document();
try {
PdfWriter.getInstance(doc, new FileOutputStream(RESULT_FILE));
BaseFont fontChinese=null;
try {
fontChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//设置中文字体
} catch (IOException e) {
e.printStackTrace();
}
Font chinese = new Font(fontChinese, 10, Font.NORMAL);
/**
* HeaderFooter的第2个参数为非false时代表打印页码
* 页眉页脚中也能够加进 图片,并不是只能是文字
*/
HeaderFooter header=new HeaderFooter(new Phrase("那仅仅是个页眉,页码在页脚处",chinese),false);
//设置能否有边框等
// header.setBorder(Rectangle.NO_BORDER);
header.setBorder(Rectangle.BOTTOM);
header.setAlignment(1);
header.setBorderColor(Color.red);
doc.setHeader(header);
HeaderFooter footer=new HeaderFooter(new Phrase("-",chinese),new Phrase("-",chinese));
/**
* 0是靠左
* 1是居中
* 2是居右
*/
footer.setAlignment(1);
footer.setBorderColor(Color.red);
footer.setBorder(Rectangle.BOX);
doc.setFooter(footer);
/**
* 页眉页脚的设置必然要在open前设置好
*/
doc.open();
/**
* true:代表要排序,10代表序号与文字之间的间距
* false:代表不排序,则文字前的符号为"-"
*/
List itextList=new List(true,10);
/**
* 也能够改动列表的符号[可选]
* $$$$$$$$$$$
* 要改动列表符号时,上面的List构造办法第一参数值必需为false
* $$$$$$$$$$$
* 能够利用字符串,Chunk,Image等做列表符号,如下
*/
//itextList.setListSymbol("*");
ListItem firstItem=new ListItem("first paragraph");
ListItem secondItem=new ListItem("second paragraph");
ListItem thirdItem=new ListItem("third paragraph");
itextList.add(firstItem);
itextList.add(secondItem);
itextList.add(thirdItem);
doc.add(itextList);
//添加正文,正文有题目和内容,正文能够是文本,内部链接,外部链接,图片等
Annotation annotation=new Annotation("what's this?","it's a tree and it is not a big");
doc.add(annotation);
doc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
}