iTextSharp生成PDF文件
这是一篇简单的教程,所以只涉及一些iTextSharp生成pdf的简单应用,详细教程请搜索iTextSharp进入官网看官方文档(英文版)。
iTextSharp官方文档:https://itextpdf.com/sites/default/files/2019-10/DITO%20Whitepaper%20v12-2_1.pdf
Demo下载地址(附iTextSharp.dll文件):https://download.csdn.net/download/callmejeans/12068398
Demo主要代码如下:
protected void ExportPDF(object sender, EventArgs e) {
DataTable PDFDataTable = GetDataTable();
PDFObj pdf = new PDFObj();
pdf.PDFRemark = DateTime.Now.ToShortDateString();
ConvertGrdiViewToPdf(PDFDataTable, pdf); } //初始值设定
class PDFObj{
//string fondpath = "C:\\Windows\\Fonts\\simsun.ttc,0";
public string fondpath = @System.Web.HttpContext.Current.Server.MapPath("./Source/Fonts/simsun.ttc") + ",0";//字体设置
public string PDFFilename = "TheSearchData";//文件标题
public float fontsize = ;//主要内容字体大小
public string PDFHeader = "员工信息表";//标题文字
public float PDFHeaderFontSize = ;//标题字体大小
public string PDFRemark;//备注文字
public float PDFRemarkFontSize = ;//备注文字大小
} //得到数据表
private DataTable GetDataTable(){
//新建PDFDemo DataTable
DataTable dt=new DataTable("PDFDemo");
DataColumn dc1=new DataColumn("UserID",Type.GetType("System.String"));
DataColumn dc2=new DataColumn("UserName",Type.GetType("System.String"));
DataColumn dc3=new DataColumn("Sex",Type.GetType("System.String"));
DataColumn dc4=new DataColumn("Birth",Type.GetType("System.DateTime"));
DataColumn dc5=new DataColumn("Nation",Type.GetType("System.String"));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);
for(int i=;i<;i++)
{
DataRow dr=dt.NewRow();
dr["UserID"]="No"+(+i).ToString();
dr["UserName"]="张三"+i;
dr["Sex"]="男";
dr["Birth"] = System.DateTime.Now.ToString("yyyy-MM-dd");
dr["Nation"]="China";
dt.Rows.Add(dr);
}
return dt;
} #region convertToPDF
/// <summary>
/// Demo1
/// </summary>
/// <param name="sourcedate"></param>
/// <param name="PDFFileName"></param>
/// <param name="FontPath"></param>
/// <param name="FontSize"></param>
/// <param name="PDFObj"></param>
private static void ConvertGrdiViewToPdf(DataTable sourcedate, PDFObj PDFObj)
{
if (sourcedate != null)
{
string strFileName = PDFObj.PDFFilename + ".pdf";
DataTable dtrn = new DataTable();
int countColumns = sourcedate.Columns.Count;
int countRows = sourcedate.Rows.Count;
if (countColumns != && countRows != )
{
Document document = new Document(PageSize.A4, , , , );
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(HttpContext.Current.Server.MapPath(strFileName), FileMode.Create));
try
{
BaseFont baseFont = BaseFont.CreateFont(PDFObj.fondpath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, PDFObj.fontsize);
document.Open();
writer.Open();
//添加表名
if (PDFObj.PDFHeader != null)
{
iTextSharp.text.Font headfont = new iTextSharp.text.Font(baseFont, PDFObj.PDFHeaderFontSize, Font.BOLD | Font.UNDERLINE, new iTextSharp.text.BaseColor(, , ));
Paragraph head = new Paragraph(PDFObj.PDFHeader, headfont);
head.SpacingAfter = ;//设置段后距离
head.Alignment = iTextSharp.text.Rectangle.ALIGN_CENTER;
document.Add(head);
}
//添加备注
if (PDFObj.PDFRemark != null)
{
iTextSharp.text.Font Remarkfont = new iTextSharp.text.Font(baseFont, PDFObj.PDFRemarkFontSize);
Paragraph Remark = new Paragraph(PDFObj.PDFRemark, Remarkfont);
Remark.SpacingAfter = ;//设置段后距离
Remark.IndentationRight = ;//设置右缩进
Remark.Alignment = iTextSharp.text.Rectangle.ALIGN_RIGHT;
document.Add(Remark); }
PdfPTable table = new PdfPTable(countColumns);
table.DefaultCell.BackgroundColor = iTextSharp.text.BaseColor.LIGHT_GRAY;
for (int j = ; j < countColumns; j++)
{
table.AddCell(new Phrase(sourcedate.Columns[j].ColumnName, font)); // OK
}
table.HeaderRows = ; table.DefaultCell.BackgroundColor = iTextSharp.text.BaseColor.WHITE;
for (int i = ; i < countRows; i++)
{
for (int j = ; j < countColumns; j++)
{
table.AddCell(new Phrase((sourcedate.Rows[i][j].ToString() == null || sourcedate.Rows[i][j].ToString() == " ") ? "" : sourcedate.Rows[i][j].ToString(), font));
}
}
document.Add(table);
}
catch (Exception)
{
throw;
}
finally
{
document.Close();
writer.Close();
}
try
{
String FullFileName = System.Web.HttpContext.Current.Server.MapPath(strFileName);
FileInfo DownloadFile = new FileInfo(FullFileName);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename="
+ System.Web.HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
}
catch (Exception)
{
throw;
}
finally
{
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
}
}
else
{
System.Web.HttpContext.Current.Response.Write
("<script type='text/javascript'>alert('数据为空,不值得导出pdf!');</script>");
}
}
else
{
System.Web.HttpContext.Current.Response.Write
("<script type='text/javascript'>alert('数据为空,请查询后再导出!');</script>");
}
}
iTextSharp生成PDF文件的更多相关文章
- C#使用itextsharp生成PDF文件
项目需求需要生成一个PDF文档,使用的是VS2010,ASP.NET. 网络上多次搜索没有自己想要的,于是硬着头皮到itextpdf官网看英文文档,按时完成任务,以实用为主,共享一下: 使用HTML文 ...
- 根据PDF模板生成PDF文件(基于iTextSharp)
根据PDF模板生成PDF文件,这里主要借助iTextSharp工具来完成.场景是这样的,假如要做一个电子协议,用过通过在线填写表单数据,然后系统根据用户填写的数据,生成电子档的协议.原理很简单,但是每 ...
- asp.net生成PDF文件 (1)
asp.net生成PDF文件 (1) 这个是例子是网上淘来的,哈哈,很有用的! 首先要到网上下载itextsharp.dll,然后添加引用,主程序如下: 1 2 3 4 5 6 7 8 9 10 11 ...
- itextsharp生成pdf后的直接打印问题
原文 itextsharp生成pdf后的直接打印问题 小弟这两天用itextsharp生成pdf文档,生成的pdf可以直接保存在指定路径的文件夹下,可是user不想保存,想要点一下button,就可以 ...
- C#生成PDF文件流
1.设置字体 static BaseFont FontBase = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\STSONG.TTF", Ba ...
- 在C#.NET中,如何生成PDF文件?主要有以下几个途径
1.使用.NET文件流技术:若通过.NET的文件流技术生成PDF文件,必须对PDF文件的语法很清楚,例如BT表示实体内容开始:ET表示实体内容结束:TD表示换行等等.我们可以从Adobe的官方网站上下 ...
- linux下编译bib、tex生成pdf文件
实验: 在linux环境下,编译(英文)*.bib和*.tex文件,生成pdf文件. 环境: fedora 20(uname -a : Linux localhost.localdomain 3.19 ...
- ThinkPHP3.2.3扩展之生成PDF文件(MPDF)
目前是PHP生成PDF文件最好的插件了,今天介绍下在ThinkPHP3.2.3里如何使用. 先安照路径放好如图. 下面是使用方法 public function pdf(){ //引入类库 Vendo ...
- [轉載]史上最强php生成pdf文件,html转pdf文件方法
之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有 ...
随机推荐
- Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...
- Mybatis——ResultMap(结果集映射)的使用
ResultMap的使用 在Mybatis中,可以使用resultMap(结果集映射)作为sql的返回类型 一般用来解决如下问题: 数据库表字段名和实体类属性名不一致的问题: 多对一问题: 例如:多个 ...
- 用前端姿势玩docker【五】快速构建中类Unix系统与Windows系统的差异化处理
目录 用前端姿势玩docker[一]Docker通俗理解常用功能汇总与操作埋坑 用前端姿势玩docker[二]dockerfile定制镜像初体验 用前端姿势玩docker[三]基于nvm的前端环境构建 ...
- 【算法•日更•第四十二期】离散傅里叶变换(DFT)
▎前言 小编相当的菜,这篇博客难度稍高,所以有些可能不会带有证明,博客中更多的是定义. 我们将要学到的东西: 复数 暴力多项式乘法 DFT 当然,小编之前就已经写过一篇博客了,主要讲的就是基础多项式, ...
- 理解正向代理&反向代理
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中.由于外部网络上的主机并不会配置并使用这个 ...
- Java中枚举的常见用法
在JDK1.5以后引入了一种新的类型,就是枚举(enum).enum是用来声明枚举类型数据,它可以像数组一样存储许多的元素,但是不同于数组的是,它除了数字不能存储以外, 其他类型的如字母.特殊符号.汉 ...
- springboot整合websocket后打包报错:javax.websocket.server.ServerContainer not available
项目整合了websocket以后,打包多次都没有成功,原来是报错了,报错内容如下: Error starting ApplicationContext. To display the conditio ...
- Exploring Adversarial Attack in Spiking Neural Networks with Spike-Compatible Gradient
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:2001.01587v1 [cs.NE] 1 Jan 2020 Abstract 脉冲神经网络(SNN)被广泛应用于神经形态设 ...
- 洛谷p1052过河 路径压缩+dp
洛谷 P1052 过河 思路部分可以看这篇博客 我将在这里对其进行一些解释与补充 首先我们先看题 乍一看 这不是模板题吗 然后开开心心的敲了一个简单dp上去 #include<iostream& ...
- Windows Server 2012 两台服务器文件同步
下载cwRsyncServer软件安装(这是Windows下的文件同步软件) 一.(1)在文件客户端服务器安装该软件,找到安装位置下的rsyncd.conf,修改配置文件(注意在Windows下输入位 ...