iText生成pdf文件基本使用

使用的版本是目前最新的5.0.3,可以在http://itextpdf.com/index.php下载,中文语言包下的可能不是最新的,导致调试出了问题,最后用了个笨方法解决的。

//1.建立Document实例
Document document = new Document();
//2.建立一个书写器与Document对象关联,通过书写器将文档写入磁盘
PdfWriter.getInstance(document, new FileOutputStream("f:/test.pdf"));
//3.打开文档
document.open();
//4.向文档中添加内容
//a)添加一个图片
Image img = Image.getInstance("f:/pdf.jpg");
img.setAlignment(Image.LEFT|Image.TEXTWRAP);
img.scalePercent(30f);
//document.add(img);
//b)添加一个段落
document.add(new Paragraph("iText HelloWorld"));
//c)添加一个块
document.add(new Chunk("Text is underline", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 12, Font.UNDERLINE)));
//d)添加中文,需要引入iTextAsian.jar
BaseFont bfChi = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChi = new Font(bfChi, 12, Font.NORMAL);
document.add(new Paragraph("中文测试", fontChi));
//e)添加一个表格
//表格内部格式和html中的格式差不多
PdfPTable table = new PdfPTable(4);
table.setWidthPercentage(100);
table.setWidthPercentage(100);
table.addCell (new Paragraph ("学号",fontChi));
PdfPCell cell = new PdfPCell (new Paragraph ("00000001",fontChi));
cell.setColspan (3);
table.addCell (cell);
table.addCell (new Paragraph ("姓名",fontChi));
table.addCell (new Paragraph ("张三",fontChi));
table.addCell (new Paragraph ("总成绩",fontChi));
table.addCell (new Paragraph ("160",fontChi));

table.addCell (new Paragraph ("学号",fontChi));
PdfPCell cell2 = new PdfPCell (new Paragraph ("00000002",fontChi));
cell2.setColspan (3);
table.addCell (cell2);
table.addCell (new Paragraph ("姓名",fontChi));
table.addCell (new Paragraph ("李四",fontChi));
table.addCell (new Paragraph ("总成绩",fontChi));
table.addCell (new Paragraph ("167", fontChi));
document.add(table);
//5.关闭文档
document.close();

注释已经很详细了,说一下中文包的问题,按照正常的流程走下来,会报:Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.我理解的大概是语言包没找到吧。因为iText5.X之前,引用iTextAsian.jar中的语言包是在com/lowagie/text/pdf/fonts,而现在是从com/itextpdf/text/pdf/fonts加载的,但是我又不知道最新的包在哪下,所以直接在包中将lowagie改成itextpdf,运行OK。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值