ITextSharp Table使用 (转)

原文:http://www.cnblogs.com/LifelongLearning/archive/2011/05/16/2048116.html

表格是我们在制作文档时,经常使用的一个元素。对布局的控制非常精确。在ITextSharp中表格对象是下面两个元素:

PdfTable,PdfCell

下面从ITextSharp In Action截取一段代码:

从代码中,可以看出,PdfTable的构造函数,传入一个列数为参数,表示这个表格有多少列,往表格中加入PdfCell,如果加入的单元格超过一行,自动会进行换行。单元格中有一个setColspan函数(注:C#版本中,是属性Colspan),用于设置一个单元格跨多列。同样,如果要跨越多行,也有一个属性(C#)RolSpan,上面的演示代码执行结果如下:

PdfTable对象有一个设置表格区域和每列宽度的函数,如下:

public void SetTotalWidth(float[] columnWidth);            public void SetWidthPercentage(float[] columnWidth, Rectangle pageSize);

属性:HorizontalAlignment 设置表格的对齐方式

HeaderRows 表示第几行作为表格头

FooterRows  表示第几行作为表格尾

SplitLate      表示单元格是否跨页显示

SplitRows     表示行是否跨页显示

示例代码如下:

   1: public class PdfPTableDemo : TestBase 
   2:     { 
   3:         protected override void Opening(Document document, PdfWriter writer) 
   4:         { 
   5:             document.SetPageSize(PageSize.A4.Rotate()); 
   6:             base.Opening(document, writer); 
   7:         } 
   8:         protected override void WriteDocument(Document document, PdfWriter writer) 
   9:         { 
  10:             PdfPTable table = CreateTable(); 
  11:             //table.WidthPercentage = 80;//设置表格占的宽度,百分比 
  12:             //table.TotalWidth = 200;//设置表格占的宽度,单位点数 
  13:             //table.SetTotalWidth(); 
  14:             //table.SetWidthPercentage(); 
  15:             table.HorizontalAlignment = Element.ALIGN_LEFT; 
  16:             document.Add(table);
  17:  
  18:             table = CreateTable(); 
  19:             table.HorizontalAlignment = Element.ALIGN_RIGHT; 
  20:             table.SpacingBefore = (5); 
  21:             table.SpacingAfter = (5); 
  22:             Rectangle rect = new Rectangle(523, 770); 
  23:             table.SetWidthPercentage( 
  24:               new float[] { 50, 25, 25 }, rect); 
  25:             document.Add(table); 
  26:             table = CreateTable(); 
  27:             table.HorizontalAlignment = Element.ALIGN_CENTER; 
  28:             table.SetTotalWidth(new float[] { 144, 72, 72 }); 
  29:             table.LockedWidth = (true); 
  30:             document.Add(table); 
  31:             table = CreateTable(); 
  32:             table.SpacingBefore = (15); 
  33:             table.SpacingAfter = (15); 
  34:             document.Add(table);
  35:  
  36:             table = new PdfPTable(3); 
  37:             PdfPCell cell 
  38:   = new PdfPCell(new Phrase("表头测试", Normal)); 
  39:             cell.BackgroundColor = (BaseColor.YELLOW); 
  40:             cell.HorizontalAlignment = (Element.ALIGN_CENTER); 
  41:             cell.Colspan = (7); 
  42:             table.AddCell(cell);
  43:  
  44:             cell 
  45:   = new PdfPCell(new Phrase("表尾测试", Normal)); 
  46:             cell.BackgroundColor = (BaseColor.YELLOW); 
  47:             cell.HorizontalAlignment = (Element.ALIGN_CENTER); 
  48:             cell.Colspan = (7); 
  49:             table.AddCell(cell);
  50:  
  51:             table.DefaultCell.BackgroundColor = (BaseColor.LIGHT_GRAY); 
  52:             for (int i = 0; i < 100; i++) 
  53:             { 
  54:                 table.AddCell("Location"); 
  55:                 table.AddCell("Time"); 
  56:                 table.AddCell("Run Length"); 
  57:                 table.AddCell("Title"); 
  58:                 table.AddCell("Year"); 
  59:                 table.AddCell("Directors"); 
  60:                 table.AddCell("Countries"); 
  61:             } 
  62:             table.DefaultCell.BackgroundColor = (null); 
  63:             table.HeaderRows = (2); 
  64:             table.FooterRows = (1); 
  65:             document.Add(table);
  66:  
  67:         }
  68:  
  69:         private PdfPTable CreateTable() 
  70:         { 
  71:             PdfPTable table = new PdfPTable(3); 
  72:             table.TableEvent = new AlternatingBackground(); 
  73:             //table.WidthPercentage = 80;//设置表格占的宽度,百分比 
  74:             //table.TotalWidth = 200;//设置表格占的宽度,单位点数 
  75:             //table.SetTotalWidth(); 
  76:             //table.SetWidthPercentage(); 
  77:             PdfPCell cell; 
  78:             cell = new PdfPCell(new Phrase("Cell with colspan 3")); 
  79:             cell.Colspan = (3); 
  80:             table.AddCell(cell); 
  81:             cell = new PdfPCell(new Phrase("Cell with rowspan 2")); 
  82:             cell.Rowspan = (2); 
  83:             table.AddCell(cell); 
  84:             table.AddCell("row 1; cell 1"); 
  85:             table.AddCell("row 1; cell 2"); 
  86:             table.AddCell("row 2; cell 1"); 
  87:             table.AddCell("row 2; cell 2");
  88:  
  89:             return table; 
  90:         } 
  91:     }
  92:  

补充一点:在设置单元格的对齐方式时,应该选设置对齐方式,再来添加内容。

   1: cell = new PdfPCell(new Chunk("中国人民",Normal));
   2:                 cell.UseAscender = (true);
   3:                 cell.UseDescender = (true);
   4:                 cell.VerticalAlignment = Element.ALIGN_MIDDLE;
   5:                 cell.HorizontalAlignment = Element.ALIGN_CENTER;
   7:                 table.AddCell(cell);
时间: 2024-10-11 18:21:56

ITextSharp Table使用 (转)的相关文章

基于iTextSharp的PDF操作(PDF打印,PDF下载)

准备 1. iTextSharp的简介 iTextSharp是一个移植于java平台的iText项目,被封装成c#的组件来用于C#生成PDF文档,目前,也有不少操作PDF的类库,(国产的有福盺的,免费试用,用于商业用途收费)但是功能普遍没有iText强大,而且使用没有iText广泛.还有他就是开源的.目前比较新的是5.5版本的. 2. 使用工具 硬件: PC机:一台 软件: Windows操作系统 Isual studio 2013  (可以是任意版本) .Net frameWork 4.5  

iTextSharp生成pdf的一个简单例子

效果图: 代码: /// <summary> /// Compare页面生成pdf功能. /// </summary> /// <param name="country">国家</param> /// <param name="pns">pn</param> /// <param name="language">语言</param> /// <r

iTextSharp 使用详解(转)

PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法,代码片断如下: StreamWriter pPDF=new StreamWriter(filePath); ArrayList xRefs=new ArrayList(); float yPos =0f; long streamStart=0; long streamEnd=0; long streamLen

PDF ITextSharp

示例源码 //Document:(文档)生成pdf必备的一个对象,生成一个Document示例 Document document = new Document(PageSize.A4, 30, 30, 5, 5); //为该Document创建一个Writer实例: PdfWriter.GetInstance(document, new FileStream(Server.MapPath("/upload/"+"Chap0101.pdf"), FileMode.C

create pdf file using Spire.Pdf or iTextSharp or PdfSharp

Spire.Pdf: 注:pdf 显示中文一定要设置相应的中文字体,其他外文类似.否则显示为乱码 安装配置:PM> Install-Package Spire.PDF https://stackoverflow.com/questions/5566186/print-pdf-in-c-sharp /// <summary> /// https://stackoverflow.com/questions/5566186/print-pdf-in-c-sharp /// </summa

Export pdf file using ITextSharp

最近项目中需要到处PDF文件,最后上网搜索了一下,发现ITextSharp比较好用,所以做了一个例子: public string ExportPDF() { //ITextSharp Usage //Steps:1. Add content to cell;2. Add cell to table;3. Add table to document;4. Add document to rectangle; string sAbsolutePath = ControllerContext.Htt

C#使用ITextSharp操作pdf

在.NET中没有很好操作pdf的类库,如果你需要对pdf进行编辑,加密,模板打印等等都可以选择使用ITextSharp来实现. 第一步:可以点击这里下载,新版本的插件升级和之前对比主要做了这几项重大改变 1.初始化对汉字的支持 2.对页眉页脚的加载形式 第二步:制作pdf模板 可以下载Adobe Acrobat DC等任意一款pdf编辑工具,视图--工具--准备表单,可以在需要赋值的地方放上一个文本框,可以把名称修改为有意义的名称,后面在赋值时要用到. 第三步:建项目引入各个操作类 介于前段时间

C# html生成PDF遇到的问题,从iTextSharp到wkhtmltopdf

我们的网站业务会生成一个报告,用网页展示出来,要有生成pdf并下载的功能,关键是生成pdf. 用内容一段段去拼pdf,想想就很崩溃,所以就去网上找直接把html生成pdf的方法. 网上资料大部分都是用的iTextSharp的XMLWorkerHelper做的(代码我贴在后面),遇到的问题是,它对css样式的支持比较古老或者说简单,所以重新改了一下我的html样式,div大部分都换成了table等,搞定后运行了一段时间没出什么问题. 但是,最近发现它有一种情况会报错.我的html内容是一个订单,包

iTextSharp 使用详解(转)

PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法,代码片断如下: StreamWriter pPDF=new StreamWriter(filePath); ArrayList xRefs=new ArrayList(); float yPos =0f; long streamStart=0; long streamEnd=0; long streamLen