iTextPdf学习使用记录

来源:互联网 发布:比特彗星tcp端口阻塞 编辑:程序博客网 时间:2024/06/03 22:53

基本概念

  • 文本块Chunk

    文本块(Chunk)是处理文本的最小单位,有一串带格式(包括字体、颜色、大小)的字符串组成。如以下代码就是产生一个字体为HELVETICA、大小为10、带下划线的字符串:
    Chunk chunk1 = new Chunk(“This text is underlined”, FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE));

  • 短语(Phrase)

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

  • 段落(paragraph)

    由一个或多个文本块(Chunk)或短语(Phrase)组成,相当于WORD文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。另外也可以设定段落的首行缩进、对齐方式(左对齐、右对齐、居中对齐)。通过函数setAlignment可以设定段落的对齐方式,setAlignment的参数1为居中对齐、2为右对齐、3为左对齐,默认为左对齐。

  • 字体

    //BaseFont bfChinese=BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”, BaseFont.NOT_EMBEDDED);
    这种方式在我电脑上没有成功,网上有很多解释这个错误的,但是我的iTextAsian.jar是处理过的,所以就非常奇怪了,后来看到有如下直接指定字体文件的方式:
    BaseFont bfChinese = BaseFont.createFont(“d:\simsun.ttc,1”, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    (Linux下能不能行还没有实验)

Font headfont=new Font(bfChinese,10,Font.BOLD);
Font keyfont=new Font(bfChinese,8,com.itextpdf.text.Font.BOLD);
Font textfont=new Font(bfChinese,8,com.itextpdf.text.Font.NORMAL);

创建文档的基本方式

如大多数文档所说,5个步骤:

// step 1
Document document = new Document();
// step 2
PdfWriter.getInstance(document, new FileOutputStream(filename));
// step 3
document.open();
// step 4
document.add(createFirstTable());
// step 5
document.close();

Document详解


  • 指定纸张大小和页边距

Document document=new Document(PageSize.A4, 108, 108, 108, 108);
后面的4个参数对应左,右,上,下的边距,单位是磅,如下是引用其他文章的解释(http://blog.csdn.net/opzoonzhuzhengke/article/details/7268785):
当创建一个矩形或设置边距时,你可能希望知道该用什么度量单位:厘米、英寸或象素,事实上,默认的度量系统以排版单位磅为基础得出其他单位的近似值,如1英寸=72磅,如果你想在A4页面的PDF中创建一个矩形,你需要计算以下数据:
21 厘米 / 2.54 = 8.2677 英寸
8.2677英寸* 72 = 595 磅
29.7 厘米 / 2.54 = 11.6929 英寸
11.6929英寸* 72 = 842 磅
默认边距为36磅即半英寸。
如果你修改了页面尺寸,仅仅影响到下一页,如果你修改了页边距,则影响到全部,故慎用

chunk详解

//创建时指定字体
Chunk chunk = new Chunk(“this is a test”, new Font(bfChinese, 16, Font.BOLD));
//换行
document.add(Chunk.NEWLINE);
//设置块的背景色
chunk.setBackground(Color.blue);
//文字颜色
Font font = FontFactory.getFont(FontFactory.TIMES_BOLD);
font.setColor(Color.white);
chunk.setFont(font);

表格

遇到的问题


  • 加空行

cell = new PdfPCell(new Phrase(“”, textFontNormal));
cell.setColspan(11);
table.addCell(cell);
本来以为这样会显示一个空行,结果没有,被忽略了,然后把文字设置为1个空格,结果显示出来了。

#

参考文章:
官方5.5的Api 文档
JAVA生成PDF
从 Java 应用程序动态生成 PDF 文件