zoukankan      html  css  js  c++  java
  • 使用ITextSharp生成PDF文件心得

      最近公司在做一个项目,需要把数据导出成PDF格式的文件,然后再网上搜了一下发现开源的组件还挺多的,用的比较多的就是itextsharp,itextsharp由java的itext演变而来,并且提供的丰富的功能,能够制作表格、插入图片等,这是官网的下载地址:http://sourceforge.net/projects/itextsharp/,下面就来简单介绍一下使用itextsharp的心得。

      首先创建一个winform应用程序,并且添加itextsharp的引用,在按钮的单击事件写上生成pdf的代码,

          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:WindowsFontssimsun.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对象的代码不变

    然后创建一个表格   PdfPTable tablerow1 = new PdfPTable(new float[]{20,20,20});后面的参数表示表格的列宽为20,列数为3列

    将单元格添加到表格中

     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文件

     从结果可以看出以循环的方式添加表格时,添加的方向为从左到右,依次添加。但是如果我们要设计的表格比较复杂的话,就不一样了,比如需要跨行或者跨列的,以及设置表格的高度,

     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);

    生成的表格如下:

    从结果我们不难发现 cell.Rowspan可以设置表格跨行相应的Colspan用来设置表格的跨列。

    以上只是本人自己在使用Itextsharp时候的一些简单的心得,希望能够帮助大家。

    具体的例子在官网也可以找的到,非常的详细http://itextpdf.com/book/examples.php

  • 相关阅读:
    调试SQL Server的存储过程及用户定义函数
    寻找 vb.net 事务处理高级编程 的代码!!
    解析Java类和对象的初始化过程
    SQL 安装进程被挂起!
    教你成为一个受欢迎的人
    final class作用
    微软反跨站脚本库
    pdf解析
    ce'shi测试微博
    淘宝架构变化
  • 原文地址:https://www.cnblogs.com/Opiece/p/4758723.html
Copyright © 2011-2022 走看看