??xml version="1.0" encoding="utf-8" standalone="yes"?>av电影在线免费,九色国产在线观看,色哟哟在线观看http://www.aygfsteel.com/keweibo/category/47645.html一? Java 多能 Powerbuilder,Delphi ... zh-cnTue, 18 Jan 2011 14:48:15 GMTTue, 18 Jan 2011 14:48:15 GMT60使用Javalgitext 生成pdf介绍(?http://www.aygfsteel.com/keweibo/articles/343138.htmlKEKETue, 18 Jan 2011 03:51:00 GMThttp://www.aygfsteel.com/keweibo/articles/343138.htmlhttp://www.aygfsteel.com/keweibo/comments/343138.htmlhttp://www.aygfsteel.com/keweibo/articles/343138.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/343138.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/343138.html

轉自:http://news.newhua.com/news/2011/0111/113128.shtml

iText是一个能够快速生PDF文g的javacd。iText的javacd于那些要产生包含文本Q表|囑Ş的只L档是很有用的。它的类库尤其与java Servlet有很好的l合。用iText与PDF能够使你正确的控制Servlet的输出?/p>

一、前a

在企 业的信息pȝ中,报表处理一直占比较重要的作用,Javalg——iText可以非常快速的生成PDF报表。iText是着名的开放源码的站点 sourceforge一个项目,是用于生成PDF文档的一个javacd。通过iText不仅可以生成PDF或rtf的文档,而且可以XML? Html文g转化为PDF文g。通过在服务器端用Jsp或JavaBean生成PDF报表Q客L(fng)采用q接昄或下载得到生成的报表Q这样就很好? 解决?jin)B/Spȝ的报表处理问题(sh)(jin)?/p>

二、iText?/p>

iText是着名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个javacd。通过iText不仅可以生成PDF或rtf的文档,而且可以XML、Html文g转化为PDF文g?/p>

iText 的安装非常方便,在http://www.lowagie.com/iText/download.html - download |站上下载iText.jar文g后,只需要在pȝ的CLASSPATH中加入iText.jar的\径,在程序中可以用iTextcd?jin)?/p>

三、徏立第一个PDF文档

用iText生成PDF文档需?个步骤:(x)

①徏立com.lowagie.text.Document对象的实例?/p>

Document document = new Document();

②徏立一个书写器(Writer)与document对象兌Q通过书写?Writer)可以文档写入到盘?sh)?/p>

PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));

③打开文档?/p>

document.open();

④向文档中添加内宏V?/p>

document.add(new Paragraph("Hello World"));

⑤关闭文档?/p>

document.close();

通过上面?个步骤,p产生一个Helloworld.PDF的文Ӟ文g内容?Hello World"?/p>

建立com.lowagie.text.Document对象的实?/p>

com.lowagie.text.Document对象的构建函数有三个Q分别是Q?/p>

public Document();

public Document(Rectangle pageSize);

public Document(Rectangle pageSize,

int marginLeft,

int marginRight,

int marginTop,

int marginBottom);

构徏 函数的参数pageSize是文档页面的大小Q对于第一个构建函敎ͼ面的大ؓ(f)A4Q同Document(PageSize.A4)的效果一P对于W? 三个构徏函数Q参数marginLeft、marginRight、marginTop、marginBottom分别为左、右、上、下的页边距?/p>

通过 参数pageSize可以讑֮面大小、面背景艌Ӏ以?qing)页面横?U向{属性。iText定义?jin)A0-A10、AL、LETTER? HALFLETTER、_11x17、LEDGER、NOTE、B0-B5、ARCH_A-ARCH_E、FLSA 和FLSE{纸张类型,也可以通过Rectangle pageSize = new Rectangle(144, 720);自定义纸张。通过RectangleҎ(gu)r(sh)otate()可以页面设|成横向?/p>

书写器(WriterQ对?/p>

一? 文档(document)对象建立好之后,需要徏立一个或多个书写?Writer)对象与之兌。通过书写?Writer)对象可以具体文档存盘成 需要的格式Q如com.lowagie.text.PDF.PDFWriter可以文档存成PDF文gQ? com.lowagie.text.html.HtmlWriter可以文档存成html文g?/p>

讑֮文档属?/p>

在文档打开之前Q可以设定文档的标题、主题、作者、关键字、装订方式、创、生产者、创建日期等属性,调用的方法分别是Q?/p>

public boolean addTitle(String title)

public boolean addSubject(String subject)

public boolean addKeywords(String keywords)

public boolean addAuthor(String author)

public boolean addCreator(String creator)

public boolean addProducer()

public boolean addCreationDate()

public boolean addHeader(String name, String content)

其中Ҏ(gu)addHeader对于PDF文档无效QaddHeader仅对html文档有效Q用于添加文档的头信息?/p>

当新的页面生之前,可以讑֮面的大、书{、脚注(HeaderFooterQ等信息Q调用的Ҏ(gu)是:(x)

public boolean setPageSize(Rectangle pageSize)

public boolean add(Watermark watermark)

public void removeWatermark()

public void setHeader(HeaderFooter header)

public void resetHeader()

public void setFooter(HeaderFooter footer)

public void resetFooter()

public void resetPageCount()

public void setPageCount(int pageN)

如果要设定第一늚面属性,q些Ҏ(gu)必须在文档打开之前调用?/p>

对于PDF文档QiTextq提供了(jin)文档的显C属性,通过调用书写器的setViewerPreferencesҎ(gu)可以控制文档打开时Acrobat Reader的显C属性,如是否单|C、是否全屏显C、是否隐藏状态条{属性?/p>

另外QiText也提供了(jin)对PDF文g的安全保护,通过书写器(WriterQ的setEncryptionҎ(gu)Q可以设定文档的用户口o(h)、只诅R可打印{属性?/p>

d文档内容

所有向文档d的内定w是以对象为单位的Q如Phrase、Paragraph、Table、Graphic对象{。比较常用的是段?Paragraph)对象Q用于向文档中添加一D|字?/p>

四、文本处?/p>

iText中用文本?Chunk)、短?Phrase)和段?paragraph)处理文本?/p>

文本?Chunk)是处理文本的最单位,有一串带格式Q包括字体、颜艌Ӏ大)(j)的字W串l成。如以下代码是产生一个字体ؓ(f)HELVETICA、大ؓ(f)10、带下划U的字符Ԍ(x)

Chunk chunk1 = new Chunk("This text is underlined", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE));

短语 (Phrase)׃个或多个文本?Chunk)l成Q短?Phrase)也可以设定字体,但对于其中以讑֮q字体的文本? (Chunk)无效。通过短语(Phrase)成员函数add可以一个文本块(Chunk)加到短语(Phrase)中, 如:(x)phrase6.add(chunk);

D落 (paragraph)׃个或多个文本?Chunk)或短?Phrase)l成Q相当于WORD文档中的D落概念Q同样可以设定段落的字体大小、颜 色等属性。另外也可以讑֮D落的首行羃q、对齐方式(左对齐、右寚w、居中对齐)(j)。通过函数setAlignment可以讑֮D落的对齐方式, setAlignment的参?为居中对齐?为右寚w?为左寚wQ默认ؓ(f)左对齐?/p>

五、表格处?/p>

iText 中处理表格的cMؓ(f)Qcom.lowagie.text.Table和com.lowagie.text.PDF.PDFPTableQ对于比较简单的表格 处理可以用com.lowagie.text.TableQ但是如果要处理复杂的表|q就需? com.lowagie.text.PDF.PDFPTableq行处理。这里就ccom.lowagie.text.Tableq行说明?/p>

ccom.lowagie.text.Table的构造函数有三个Q?/p>

①Table (int columns)

②Table(int columns, int rows)

③Table(Properties attributes)

参数columns、rows、attributes分别格的列数、行数、表格属性。创格时必须指定表格的列敎ͼ而对于行数可以不用指定?/p>

建立表格之后Q可以设定表格的属性,如:(x)Ҏ(gu)宽度、边框颜艌Ӏ衬距(padding space 卛_元格之间的间距)(j)大小{属性。下面通过一个简单的例子说明如何使用表格Q代码如下:(x)

1:Table table = new Table(3);

2:table.setBorderWidth(1);

3:table.setBorderColor(new Color(0, 0, 255));

4:table.setPadding(5);

5:table.setSpacing(5);

6:Cell cell = new Cell("header");

7:cell.setHeader(true);

8:cell.setColspan(3);

9:table.addCell(cell);

10:table.endHeaders();

11:cell = new Cell("example cell with colspan 1 and rowspan 2");

12:cell.setRowspan(2);

13:cell.setBorderColor(new Color(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("cell test1");

20:cell = new Cell("big cell");

21:cell.setRowspan(2);

22:cell.setColspan(2);

23:table.addCell(cell);

24:table.addCell("cell test2");

q行l果如下Q?/p>

header

example cell with colspan 1 and rowspan 2 1.1 2.1

1.2 2.2

cell test1 big cell

cell test2

代码1-5行用于新Z个表|如代码所C,建立?jin)一个列Cؓ(f)3的表|q将Ҏ(gu)宽度设ؓ(f)1Q颜色ؓ(f)蓝色Q衬距ؓ(f)5?/p>

代码 6-10行用于设定表格的表头Q第7行cell.setHeader(true);是将该单元格作ؓ(f)表头信息昄Q第8? cell.setColspan(3);指定?jin)该单元格?列;格添加表头信息时Q要注意的是一旦表头信息添加完?jin)之后,必须调? endHeaders()Ҏ(gu)Q如W?0行,否则当表D后Q表头信息不?x)再昄?/p>

代码11-14行是向表gd一个宽度占一列,长度占二行的单元根{?/p>

往表格中添加单元格(cell)Ӟ按自左向叟뀁从上而下的次序添加。如执行?1行代码后Q表格的右下方出??列的I白Q这是再往表格d单元格时Q先填满q个I白Q然后再另v一行,15-24行代码说明了(jin)q种d序?/p>

六、图像处?/p>

iText 中处理表格的cMؓ(f)com.lowagie.text.ImageQ目前iText支持的图像格式有QGIF, Jpeg, PNG, wmf{格式,对于不同的图像格式,iText用同L(fng)构造函数自动识别图像格式。通过下面的代码分别获得gif、jpg、png囑փ的实例?/p>

Image gif = Image.getInstance("vonnegut.gif");

Image jpeg = Image.getInstance("myKids.jpg");

Image png = Image.getInstance("hitchcock.png");

囑փ的位|?/p>

囑փ 的位|主要是指图像在文档中的寚w方式、图像和文本的位|关pRIText中通过函数public void setAlignment(int alignment)q行处理Q参数alignment为Image.RIGHT、Image.MIDDLE、Image.LEFT分别指右寚w、居中? 左对齐;当参数alignment为Image.TEXTWRAP、Image.UNDERLYING分别指文字绕囑Ş昄、图形作为文字的背景昄。这 两种参数可以l合以达到预期的效果Q如setAlignment(Image.RIGHT|Image.TEXTWRAP)昄的效果ؓ(f)囑փ叛_齐,文字 围绕囑փ昄?/p>

囑փ的尺寸和旋{

如果囑փ在文档中不按原尺寸显C,可以通过下面的函数进行设定:(x)

public void scaleAbsolute(int newWidth, int newHeight)

public void scalePercent(int percent)

public void scalePercent(int percentX, int percentY)

函数 public void scaleAbsolute(int newWidth, int newHeight)直接讑֮昄寸Q函数public void scalePercent(int percent)讑֮昄比例Q如scalePercent(50)表示昄的大ؓ(f)原尺寸的50%Q而函数scalePercent(int percentX, int percentY)则图像高宽的昄比例?/p>

如果囑փ需要旋转一定角度之后在文档中显C,可以通过函数public void setRotation(double r)讑֮Q参数r为弧度,如果旋{角度?0度,则参数r= Math.PI / 6?/p>

七、中文处?/p>

默认的iText字体讄不支持中文字体,需要下载远东字体包iTextAsian.jarQ否则不能往PDF文档中输Z文字体。通过下面的代码就可以在文档中使用中文?jin)?x)

BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL);

Paragraph pragraph=new Paragraph("你好", FontChinese);

八、后?/p>

iText q有很多高的功能,q里׃一一介绍?jin),具体开发时可参考发布的文档。ȝ来说QiText是一套java环境下不错的制作PDF的组件。因? iText支持jsp/javabean下的开发,q得B/S应用中的报表问题能得到很好的解决。由于iText毕竟不是专门为制作报表设计,所有报? 中的内容、格式都需要通过写代码实玎ͼ相对于那些专业的支持可视化设计的报表软g来说Q编E的工作量就有一定程度的增加?/p>

KE 2011-01-18 11:51 发表评论
]]>
վ֩ģ壺 | ζ| | | ֱ| ˿| | | | | ػ| ̨| | | | | | | | | | ٲ| | | | | | | ƺ| ʲ| | Զ| | | | | ޭ| İ| | ¹| ǭ|