最近公司在作一个项目,须要把数据导出成PDF格式的文件,而后再网上搜了一下发现开源的组件还挺多的,用的比较多的就是itextsharp,itextsharp由java的itext演变而来,而且提供的丰富的功能,可以制做表格、插入图片等,这是官网的下载地址:http://sourceforge.net/projects/itextsharp/,下面就来简单介绍一下使用itextsharp的心得。php
首先建立一个winform应用程序,而且添加itextsharp的引用,在按钮的单击事件写上生成pdf的代码,java
Document docPDF = new Document(PageSize.A4,0,0,0,0);//建立一个pdf文档的对象,设置纸张大小为A4,页边距为0
//PageSize.A4.Rotate();当须要把PDF纸张设置为横向时,使用PageSize.A4.Rotate()
PdfWriter write = PdfWriter.GetInstance(doc, new FileStream(@"E:\pdffile.pdf", FileMode.OpenOrCreate, FileAccess.Write));//建立一个写入PDF的对象, BaseFont bsFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font font = new Font(bsFont);//在这里须要注意的是,itextsharp不支持中文字符,想要显示中文字符的话须要本身设置字体 docPDF.Open();//打开
docPDF.Add(new Paragraph("第一个PDF文件", font));//将一句短语写入PDF中
docPDF.Close();//关闭
上面的代码只是将一个简单的字符串写入到PDF文件中,若是要用Itextsharp制做表格的话,可使用 PdfPTable、PdfPCell,PdfPTable用来建立一个表格,PdfPCell用来建立一个单元格,使用这种方法来建立表格的话有点相似于NPOI建立EXCEL的方法,也是将单元格添加到表格中。下面将作个简单的介绍字体
上面建立PDF对象的代码不变spa
而后建立一个表格 PdfPTable tablerow1 = new PdfPTable(new float[]{20,20,20});后面的参数表示表格的列宽为20,列数为3列.net
将单元格添加到表格中设计
for (int i = 0; i <= 27; i++)//表示建立一个3列9行的表格 { cell = new PdfPCell(new Paragraph(i.ToString(), font)); // tablerow1.AddCell( tablerow1.AddCell(cell);//将单元格添加到表格中 } docPDF.Add(tablerow1);//将表格添加到pdf文档中
生成的pdf文件3d
从结果能够看出以循环的方式添加表格时,添加的方向为从左到右,依次添加。可是若是咱们要设计的表格比较复杂的话,就不同了,好比须要跨行或者跨列的,以及设置表格的高度,code
docPDF.NewPage();//新的一页显示 PdfPTable tablerow2= new PdfPTable(new float[] { 20, 20, 20 }); cell = new PdfPCell(new Paragraph("表格跨行 row1 col1",font)); cell.MinimumHeight = 40F;//设置表格的高度 cell.Rowspan = 2;//单元格夸2行 tablerow2.AddCell(cell); cell = new PdfPCell(new Paragraph("表格跨行row1 col2", font)); cell.MinimumHeight = 40F;//设置表格的高度 tablerow2.AddCell(cell); cell = new PdfPCell(new Paragraph("表格跨行row1 col3", font)); cell.MinimumHeight = 40F;//设置表格的高度 tablerow2.AddCell(cell); cell = new PdfPCell(new Paragraph("表格跨行row2 col3", font)); cell.MinimumHeight = 40F;//设置表格的高度 tablerow2.AddCell(cell); cell = new PdfPCell(new Paragraph("表格跨行row2 col3", font)); cell.MinimumHeight = 40F;//设置表格的高度 tablerow2.AddCell(cell); docPDF.Add(tablerow2);
生成的表格以下:orm
从结果咱们不难发现 cell.Rowspan能够设置表格跨行相应的Colspan用来设置表格的跨列。对象
以上只是本人本身在使用Itextsharp时候的一些简单的心得,但愿可以帮助你们。
具体的例子在官网也能够找的到,很是的详细http://itextpdf.com/book/examples.php