iTextSharp 5 已经取消了 Table 类,我对照着一份 iTextSharp 4 的帮助文档,使用 VS 的智能提示找遍了所有的命名空间,都找不到 Table 类,幸好最终看到一个 PdfPTable 类,抱着死马当做活马医的心态,居然成了。所以,切记在 iTextSharp 5 中,操作表格只能通过 PdfTable,全称是 iTextSharp.text.pdf.PdfPTable 。
iTextSharp 对表格的操作相对 Word 来说,显得有些笨拙,似乎无法做到单元格跨行或跨列。所以若要创建这一类型的表格,只能通过在单元格中嵌入一个表格来实现。
iTextSharp 对表格的操作通常分为两级:表格-->单元格,通常在新建一个表格时,即需要设定表格的列数,然后再通过 AddCell 方法添加已有的单元格,这个步骤涉及到的类别有 PdfPTable 和 PdfPCell,两者位于同一命名空间中。基本的程序如下:
[c-sharp] view plaincopy
iTextSharp.text.pdf.PdfPTable table = new iTextSharp.text.pdf.PdfPTable(2); // 表格有 2 列  
iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell(); // 创建单元格  
cell.AddElement(element); // 在单元格中添加数据  
table.AddCell(cell); // 将单元格加入到表格中  
注意,往表格中添加单元格时有一个陷阱,如果添加的单元格数不是列数的整数倍,将会抛出异常 。通过循环添加单元格时,往往会忽略掉这个问题。
如果要将上述的单元格 cell 拆分为两列,则需要在 cell 中嵌入另一个表格,如下:
[c-sharp] view plaincopy
iTextSharp.text.pdf.PdfPTable innerTable = new iTextSharp.text.pdf.PdfPTable(2);  
iTextSharp.text.pdf.PdfPCell innerCell1 = ...;  
innerTable.AddCell(innerCell1);  
iTextSharp.text.pdf.PdfPCell innerCell2 = ...;  
innerTable.AddCell(innerCell2);  
cell.AddElement(innerTable);  
这时如果查看生成的 PDF 文件会发现有很多问题,一是单元格的边框线和内嵌的表格的边框线都会显示出来,二是内嵌的表格并未填满整个单元格,四周都会有留白,左右两边尤甚。对于问题一,可以将外围单元格的边框宽度设为 0,只显示内嵌表格的边框线即可。问题二的话,则需要设置外围单元格的 Padding 属性,也可单独针对某一边设置,这与 CSS 类似。程序如下:
cell.BorderWidth = 0;
cell.Padding = 0;
再查看生成的文档,发现上下两边正确了,但左右两边仍然有很宽的留白。看来 iTextSharp 对于内嵌表格会有一个默认的宽度百分比,从而导致两边出现空白。这需要我们设定表格的宽度,如下:
innerTable.WidthPercentage = 100; // 设定表格的宽度百分比,百分比是相对父元素宽度而言的
再查看文档,这回正确了。但最后还有是有一个问题,不可能每个单元格都是均分的吧,那么如何设定单元格的宽度呢?如下:
innerTable.SetWidths(new int[] { 10, 90 });    // 设置各列宽度,单位是百分比
到这里,基本的表格就完成了。

使用 iTextSharp 生成 PDF 表格相关推荐

  1. ITextSharp导出PDF表格和图片(C#)

    文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3g ...

  2. Java—将数据生成pdf表格

    由于时间问题,所以粗略的封装了一个生成pdf表格的工具包(不喜欢讲废话,直接上代码!!!) package com.sgcc.dlsc.jibei.commons.utils;import com.i ...

  3. C# Json数据转DataTable并生成PDF在线下载--iTextSharp生成PDF实例(文件下载,json数据转换,PDF排版一步到位)

    前言 本文将重点介绍iTextSharp的使用方法和易踩的一些坑,顺便介绍了json转DataTable的简单快捷高效的方法及二进制流转换文件在线即时下载的方法.经测试生成40页的pdf仅需要1秒,大 ...

  4. java生成pdf表格_java在pdf中生成表格的方法

    1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储 ...

  5. ITextSharp生成PDF

    ITextSharp就不多介绍了,下面就把遇到的坑一一记录下来,希望能够帮助到正在使用它的开发者们.操作pdf的方法都被作者封装好了,只是没有注释和说明,不过大部分的方法属性还是能看懂的,看不懂的可以 ...

  6. html生成pdf表格线加粗,iText 用 HTMLWorker 转换 HTML 为 PDF 时可设置表格列宽度

    生成 pdf 的方式有多种,直接用 iText 编码控制产生,fop 转换,不过我觉得很方便的一种方法就是用 iText 的 HTMLWorker 类直接把 HTML 转换成相应的 PDF 文档,HT ...

  7. java生成pdf表格示例代码

    使用itext代码直接生成pdf文件 用到jar包       itextpdf-5.2.1.jar   itext-asian-5.2.0.jar 优缺点 优点:生成快,代码直接能用 缺点:代码要写 ...

  8. Java生成PDF表格

    PdfBox读取PDF加载pdf文件出错 下载相关Jar包(pdfbox和fontbox为主) 网址http://pdfbox.apache.org/download.cgi 准备pdf格式文件(代码 ...

  9. java 生成PDF表格,添加页码,加盖水印(包括图片水印和文字水印)

    最近公司要求后端实现PDF导出功能,并且还要要求能够加盖水印.网上搜寻了一下,大多帖子比较老旧,并且随着开发包的版本更新,都不能用,所以有了这篇博客. 生成PDF所用到的jar包主要是itext,现在 ...

最新文章

  1. 2012年度IT博客大赛50强报道:张世锋
  2. 别让双手闲下来,来做一些练手项目吧
  3. SAP 外币金额 汇率 转换
  4. JSP项目报错在build path里找不到javax.servlet.http.HttpServlet的解决方法
  5. 《金领简历》精华 创业公司 面试机会 简历
  6. [LeetCode]题解(python):016-3Sum Closest
  7. proj编译linux,安装OpenProj配置中文显示
  8. MacM1 安装python库文件
  9. 安卓系统 samba服务器搭建,介绍在电脑上建samba服务器的方法 安卓samba服务器的安装方法...
  10. 9 输入输出设备题库
  11. mybatis报错 Invalid bound statement (not found)
  12. IBM X系列服务器装机全过程,RAID磁盘阵列制作与安装ESXI
  13. mybatis-Springboot配置多数据源出现错误记录
  14. 爬虫基本原理与实战---1、爬虫实战概述
  15. 产业分析:抖音三农行业分析
  16. 英特尔投资部宣布增投10家新创公司,他们都有哪些能耐?---ESM
  17. ProxySettings代理设置
  18. Kotlin学习(6)-类和对象之类成员介绍
  19. 关于base64转码
  20. 品高云生态video:爱数备份系统+品高云=云备份服务

热门文章

  1. 基于python的分类模型_python SVM 线性分类模型的实现
  2. java 001 002_69期-Java SE-019-实用类-2-001-002
  3. c++语言表白超炫图形_R语言统计与绘图:组合图形布局
  4. 2007年8月25日华为的几个面试题
  5. javah命令 C Header and Stub File Generator
  6. Vue3学习笔记01:使用NPM方法安装Vue3
  7. Spring Boot基础学习笔记23:用户自定义授权管理
  8. Java实训项目13:GUI学生信息管理系统 - 实现步骤 - 创建应用程序类
  9. Flask学习笔记02:实现用户登录功能
  10. Python学习笔记:创建分数类