这是一篇简单的教程,所以只涉及一些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() == "&nbsp;") ? "" : 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文件的更多相关文章

  1. C#使用itextsharp生成PDF文件

    项目需求需要生成一个PDF文档,使用的是VS2010,ASP.NET. 网络上多次搜索没有自己想要的,于是硬着头皮到itextpdf官网看英文文档,按时完成任务,以实用为主,共享一下: 使用HTML文 ...

  2. 根据PDF模板生成PDF文件(基于iTextSharp)

    根据PDF模板生成PDF文件,这里主要借助iTextSharp工具来完成.场景是这样的,假如要做一个电子协议,用过通过在线填写表单数据,然后系统根据用户填写的数据,生成电子档的协议.原理很简单,但是每 ...

  3. asp.net生成PDF文件 (1)

    asp.net生成PDF文件 (1) 这个是例子是网上淘来的,哈哈,很有用的! 首先要到网上下载itextsharp.dll,然后添加引用,主程序如下: 1 2 3 4 5 6 7 8 9 10 11 ...

  4. itextsharp生成pdf后的直接打印问题

    原文 itextsharp生成pdf后的直接打印问题 小弟这两天用itextsharp生成pdf文档,生成的pdf可以直接保存在指定路径的文件夹下,可是user不想保存,想要点一下button,就可以 ...

  5. C#生成PDF文件流

    1.设置字体 static BaseFont FontBase = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\STSONG.TTF", Ba ...

  6. 在C#.NET中,如何生成PDF文件?主要有以下几个途径

    1.使用.NET文件流技术:若通过.NET的文件流技术生成PDF文件,必须对PDF文件的语法很清楚,例如BT表示实体内容开始:ET表示实体内容结束:TD表示换行等等.我们可以从Adobe的官方网站上下 ...

  7. linux下编译bib、tex生成pdf文件

    实验: 在linux环境下,编译(英文)*.bib和*.tex文件,生成pdf文件. 环境: fedora 20(uname -a : Linux localhost.localdomain 3.19 ...

  8. ThinkPHP3.2.3扩展之生成PDF文件(MPDF)

    目前是PHP生成PDF文件最好的插件了,今天介绍下在ThinkPHP3.2.3里如何使用. 先安照路径放好如图. 下面是使用方法 public function pdf(){ //引入类库 Vendo ...

  9. [轉載]史上最强php生成pdf文件,html转pdf文件方法

    之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有 ...

随机推荐

  1. Weighted-Residual-Connections

  2. 2020重新出发,JAVA入门,关键字&保留字

    关键字 & 保留字 关键字(或者保留字)是对编译器有特殊意义的固定单词,不能在程序中做其他目的使用. 关键字具有专门的意义和用途,和自定义的标识符不同,不能当作一般的标识符来使用.例如, cl ...

  3. Revit二次开发——非模态窗口的事件处理

    一.起因    自己在写revit二开时,有一个Winform窗体按钮点击事件需要 触发调用事务进行处理,结果出现“异常“Starting a transaction from an external ...

  4. 火题小战 C. 情侣?给我烧了!

    火题小战 C. 情侣?给我烧了! 题目描述 有 \(n\) 对情侣来到电影院观看电影.在电影院,恰好留有 \(n\) 排座位,每排包含 \(2\) 个座位,共 \(2×n\) 个座位. 现在,每个人将 ...

  5. Golang Gtk+3教程:开始

    GTK+是一个控件工具包.每个通过GTK+创建的用户界面由一些控件组成. 控件是层级式的,window控件是主容器,通过在window中添加按钮.下拉菜单.输入字段等其他控件构成用户界面. 如果是复杂 ...

  6. 完了,这个硬件成精了,它竟然绕过了 CPU...

    我们之前了解过了 Linux 的进程和线程.Linux 内存管理,那么下面我们就来认识一下 Linux 中的 I/O 管理. Linux 系统和其他 UNIX 系统一样,IO 管理比较直接和简洁.所有 ...

  7. Windows 右键 照片查看器 不见了--解决办法

    桌面新建 一个文本文档,将下边复制进去,另存为命名例如为:1.reg 双击运行1.reg,点‘是’,点确认即可. Windows Registry Editor Version 5.00 ; Chan ...

  8. mysql查看死锁及解锁方法

    解除正在死锁的状态有两种方法: 第一种: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程(如果您有SUPER权限,您可以看到所有线程.否则, ...

  9. Linux环境安装Docker入门教程

    安装 下载 wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.1-ce.tgz 解压 tar -xvf ...

  10. openvswitch 流表操作

    流表组成 每条流表规则由一些列字段组成,可以分为**基础字段.匹配字段和动作字段**三部分. 在打印流表时,在流表中还存在一些显示字段,如duration,idle_age等,此处把这些字段也暂时归之 ...