首页 > 编程知识 正文

java生成报表,java打印pdf文件

时间:2023-05-04 10:18:14 阅读:20376 作者:1540

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 更多

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。