用C#创建PDF表格:iTextSharp的应用
来源:互联网 发布:工业网络交换机厂家 编辑:程序博客网 时间:2024/05/21 09:49
最近学校有项目需要用C#创建PDF文件,输出程序中的表格。在网上搜索后发现C#确实没有原生的解决办法,大多都是用到了一个第三方的库:iTextSharp。这个库的核心组件可以在http://sourceforge.net/projects/itextsharp/这里下载,压缩文件itextsharp-all-core.zip中的iTestSharp.dll便是我们要用到的组件,我下载的时候组件更新到了版本5.5.0,其中删除了之前版本中的table类,但网上流传最广的iTextSharp使用手册中仍然使用的是Table来创建表格,这个方法只适用于之前的版本。因此这里使用另一个类PdfPTable来创建表格:
首先在visual studio 2010中引用iTextSharp.dll库,右键单击“解决方案资源管理器”中的“引用”,选择“添加引用”,用“浏览”找到你存放iTestSharp.dll的文件夹,点击确定便将iTextSharp添加到了你的解决方案中。
接下来在代码中添加命名空间如下:
using System.IO;using iTextSharp.text;using iTextSharp.text.pdf;
其中IO用来保存文件,后面两个是要用来创建和编辑PDF文档的类。
以下代码是在点击一个按钮之后,让用户选择保存的位置,创建一个PDF文档,将tablelayoutpanel控件中的内容做成一个表格保存到PDF文件中:
private void button3_Click(object sender, EventArgs e) //“保存数据”按钮,保存为PDF文件{Stream myStream; //文件流SaveFileDialog savefile = new SaveFileDialog(); savefile.Filter = "pdf files (*.pdf)|*.pdf|All files (*.*)|*.*"; //保存文件的格式 savefile.FilterIndex = 1; //默认保存文件格式索引,默认为第一种pdf格式 savefile.RestoreDirectory = true; //记忆上次打开目录 if (savefile.ShowDialog() == DialogResult.OK) //点保存之后 {string localFilePath = savefile.FileName.ToString(); //获得保存文件路径 string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1); //获取文件名,不带路径 myStream = savefile.OpenFile(); //打开文件并赋给IO流myStream Document document = new Document(PageSize.A4.Rotate()); //创建A4纸、横向PDF文档 PdfWriter writer = PdfWriter.GetInstance(document,myStream);//将PDF文档写入创建的文件中 document.Open(); //要在PDF文档中写入中文必须指定中文字体,否则无法写入中文 BaseFont bftitle = BaseFont.CreateFont("C:\\Windows\\Fonts\\SIMHEI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //用系统中的字体文件SimHei.ttf创建文件字体 iTextSharp.text.Font fonttitle = new iTextSharp.text.Font(bftitle, 30); //标题字体,大小30 BaseFont bf1 = BaseFont.CreateFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //用系统中的字体文件SimSun.ttc创建文件字体 iTextSharp.text.Font CellFont = new iTextSharp.text.Font(bf1, 12); //单元格中的字体,大小12 iTextSharp.text.Font fonttitle2 = new iTextSharp.text.Font(bf1, 15); //副标题字体,大小15 //添加标题 Paragraph Title = new Paragraph("示例文件", fonttitle);//添加段落,第二个参数指定使用fonttitle格式的字体,写入中文必须指定字体否则无法显示中文 Title.Alignment = iTextSharp.text.Rectangle.ALIGN_CENTER;//设置居中 document.Add(Title);//将标题段加入PDF文档中 //空一行 Paragraph nullp = new Paragraph(" ", fonttitle2); nullp.Leading = 10; document.Add(nullp); PdfPTable table = new PdfPTable(int)numericUpDown2.Value); //numericUpDown2为用户设置的列数,创建Value列的表格,行会根据写入数据自动扩展//不同单元格对应tablelayoutpanel添加不同文本for (int j = 0; j < tableLayoutPanel1.RowCount; j++)//j为行标 { for (int i = 0; i < tableLayoutPanel1.ColumnCount; i++)//i为列表 { if (i == 0 && j == 0) //左上角为空 { table.AddCell(" ");//向表格的单元格添加数据,此处为空白 continue; } if (j == 0) //第一行标号 { table.AddCell(i + "#"); continue; } if (i == 0 && j > 0) //tablelayoutpanel第一列为textbox控件,读取用户输入的文本 { Control c = tableLayoutPanel1.GetControlFromPosition(i, j);//获取tablelayoutpannel容器中第i列、第j行的控件 if (c is TextBox)//判定控件的类型如果为textbox则将文本内容写入PDF文档 { table.AddCell(new Paragraph(c.Text, CellFont));//用CellFont字体将textbox中的内容写入PDF文档的单元格中 } continue; } if (i > 0 && j > 0) //单元格数据 { Control c = tableLayoutPanel1.GetControlFromPosition(i, j); if (c is Label) { table.AddCell(c.Text); } else { table.AddCell(" "); } continue; } table.AddCell(" "); //如果tablelayoutpanel单元格中不存在控件则写入空单元格 } } document.Add(table); //将表格加入PDF文档中 document.Close(); myStream.Close(); }}
代码都有注释,应该都看得懂,有问题请提出~
0 0
- 用C#创建PDF表格:iTextSharp的应用
- Silverlight 创建 PDF iTextSharp
- C# 用 iTextSharp 将 PDF 转成文本
- C#用iTextSharp导出PDF到页面
- C# PDF ITextSharp
- 使用 iTextSharp 生成 PDF 表格
- iTextSharp 创建无边框表格
- C#使用iTextSharp打印PDF
- C# pdf 缩放纸型-iTextSharp
- C#利用iTextSharp 将jpg转换为pdf的方法
- C# 基于iTextSharp封装的PDF操作类
- 用C# itextsharp.dll制作PDF文件全攻略
- 用C# itextsharp.dll制作PDF文件全攻略
- 用itextsharp实现Pdf生成 (C#代码)
- 用itextsharp进行PDF报表
- 基于iTextSharp(C#)创建PDF文件
- C#调用iTextSharp组件生成PDF文件
- c#调用itextsharp进行Pdf报表设计
- 内核态下基于动态感染技术的应用程序执行保护(五 动态感染)
- Qt Creator + opencv2.4.6
- 小白linux bash 学习一 变量定义
- 高速数据采集记录存储回放系统—记录存储带宽6GB/S!
- priority_queue
- 用C#创建PDF表格:iTextSharp的应用
- 辽宁义县第一运输公司魏奇 多年如一日踏实做事BqaSwNK
- Zend framework开发前期准备2
- 详细揭秘相爱25年的梁朝伟刘嘉玲被传婚变内幕Xve34EC
- Bash String Manipulation Examples – Length, Substring, Find and Replace
- C语言中volatile关键字的作用
- 2014哈商大ICPC/ACM校赛解题报告
- java.io.NotSerializableException错误解决方法
- wireshared-protobuf:proto.c:1765: failed assertion \"(guint)hfindex < gpa_hfinfo.len\"