基本信息
源码名称:C# 动态生成pdf文件(PDFMake)示例源码
源码大小:3.05M
文件格式:.rar
开发语言:C#
更新时间:2019-08-14
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
PDFMake生成
namespace PDFMake
{
using System;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
public class PDFITEXTSharp
{
private string _pdfSavePath;
/// <summary>
/// pdf文件保存地址
/// </summary>
public string PDFSavePath
{
get
{
if (string.IsNullOrEmpty(_pdfSavePath))
{
return AppDomain.CurrentDomain.BaseDirectory Guid.NewGuid().ToString() ".pdf";
}
return _pdfSavePath;
}
set { _pdfSavePath = value; }
}
/// <summary>
/// 通过函数深圳pdf保存地址
/// </summary>
/// <param name="pdfSavePath"></param>
public void SetPDFSavePath(string pdfSavePath) { this.PDFSavePath = pdfSavePath; }
#region Demo region
/// <summary>
/// HelloWorld示例程序
/// </summary>
public void HelloWorld()
{
Document document = new Document();
PdfWriter.GetInstance(document, new FileStream(PDFSavePath, FileMode.Create));
document.Open();
document.Add(new Paragraph("Hello World"));
document.Close();
}
/// <summary>
/// PDF生成(重载)
/// </summary>
/// <param name="pdfSavePath"></param>
public void MakePDF(string pdfSavePath) { this.PDFSavePath = pdfSavePath; MakePDF(); }
/// <summary>
/// PDF生成
/// </summary>
public void MakePDF()
{
Document document = new Document(PageSize.A4);//创建一个Document实例
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PDFSavePath, FileMode.Create));//创建Writer实例
document.Open();
#region 写入一些数据,包括:作者、标题、摘要、关键词、创建者、生产者、创建时间、头信息
document.AddAuthor("胡冬林");
document.AddCreationDate();
document.AddCreator("深圳市物联传媒有限公司");
document.AddHeader("QQ", "346163801");
document.AddHeader("Email", "hudonglin@126.com");
document.AddKeywords("物联网");
document.AddProducer();
document.AddSubject("VIP观众入场凭券!");
document.AddTitle("2010 年深圳物联网技术和应用展览会VIP观众信息");
#endregion
BaseFont baseFont = CreateChineseFont();
iTextSharp.text.Font titleFont = new iTextSharp.text.Font(baseFont, 22, Font.BOLD);
iTextSharp.text.Font fontUnderLine = new iTextSharp.text.Font(baseFont, 12, Font.UNDERLINE);
iTextSharp.text.Font normalFont = new Font(baseFont, 12);
iTextSharp.text.Font normalRedFont = new Font(baseFont, 12, Font.NORMAL | Font.BOLD, BaseColor.RED);
float titleLineHeight = 45f, normalLineHeight = 25f;
Paragraph pBlank = new Paragraph(" ", normalFont);
pBlank.Leading = normalLineHeight;
Image jpeg = Image.GetInstance(AppDomain.CurrentDomain.BaseDirectory "Data\\logo.bmp");
jpeg.Alignment = Element.ALIGN_CENTER;
document.Add(jpeg);
Paragraph titleP = new Paragraph("VIP观众入场凭券", titleFont);
titleP.Leading = titleLineHeight; titleP.Alignment = Element.ALIGN_CENTER;
document.Add(titleP);
Chunk chunk1 = new Chunk("尊敬的", normalFont), chunk2 = new Chunk(" $uName$ ", fontUnderLine)
, chunk3 = new Chunk(":", normalFont);
document.Add(GetPTxt(new Chunk[] { chunk1, chunk2, chunk3 }, normalLineHeight));
Chunk chnk4 = new Chunk(" 感谢您登记成为 2010 年深圳国际物联网技术与应用展览会的 VIP 观众,以下您的注册信息及 VIP 编号,", normalFont);
Chunk chnk5 = new Chunk("请将此表打印出来,带至展会现场,作为入场凭证:", normalRedFont);
document.Add(GetPTxt(new Chunk[] { chnk4, chnk5 }, normalLineHeight));
document.Add(pBlank);
document.Add(CreateTable());
document.Add(GetPTxt(" 2010深圳国际物联网技术与应用博览会,是一个关于物联网完整产业链、RFID(无线射频识别)技术、电子标签生产解决方案、读写器开发最新技术、中间件的精确控制技术、最新非接触的支付技术、短距离通讯技术、传感网技术、及其物联网技术在工业自动化、物流、防伪、人员、车辆、军事、资产管理、服饰、图书、家用智能化等领域的全面解决方案和成功应用展示的国际盛会。"
, normalFont, normalLineHeight));
document.Add(pBlank);//空行
document.Add(GetPTxt("其实生成PDF就是这么简单!!", normalFont, normalLineHeight));
document.Close();
}
#endregion
#region 文档元素生成区域
/// <summary>
/// 生成段落文本
/// </summary>
/// <param name="txt">文本</param>
/// <param name="txtFont">字体</param>
/// <param name="lineHeight">行高</param>
/// <returns>段落文本</returns>
static Paragraph GetPTxt(string txt, Font txtFont, float lineHeight)
{
Paragraph p = new Paragraph(lineHeight, txt, txtFont);
return p;
}
/// <summary>
/// 生成段落文本
/// </summary>
/// <param name="txt">文本</param>
/// <param name="txtFont">字体</param>
/// <param name="lineHeight">行高</param>
/// <param name="elementAlign">对齐方式</param>
/// <returns>段落文本</returns>
static Paragraph GetPTxt(string txt, Font txtFont, float lineHeight, int elementAlign)
{
Paragraph p = new Paragraph(lineHeight, txt, txtFont);
p.Alignment = elementAlign;
return p;
}
/// <summary>
/// 生成段落文本
/// </summary>
/// <param name="chnkArr">Chunk数组</param>
/// <param name="lineHeight">行高</param>
/// <returns>段落文本</returns>
static Paragraph GetPTxt(Chunk[] chnkArr, float lineHeight)
{
if (chnkArr == null || chnkArr.Length == 0) { return new Paragraph(""); }
Paragraph p = new Paragraph();
foreach (Chunk chnkTxt in chnkArr) { p.Add(chnkTxt); }
p.Leading = lineHeight;
return p;
}
/// <summary>
/// 创建Table行
/// </summary>
/// <param name="txt">文本</param>
/// <param name="txtFont">字体</param>
/// <param name="align">对齐方式</param>
/// <param name="colSpan">跨行数</param>
/// <param name="padTop">顶部padding</param>
/// <param name="padBottom">底部padding</param>
/// <returns>Table行</returns>
static PdfPCell CreateCell(string txt, Font txtFont, int align, int colSpan, float padTop, float padBottom)
{
PdfPCell cell = new PdfPCell(new Phrase(txt, txtFont));
if (padTop > 0) { cell.PaddingTop = padTop; }
if (padBottom > 0) { cell.PaddingBottom = padBottom; }
if (colSpan > 0) { cell.Colspan = colSpan; }
cell.HorizontalAlignment = align;
return cell;
}
/// <summary>
/// 创建Table行(RowSpan)
/// </summary>
/// <param name="txt">文本</param>
/// <param name="txtFont">字体</param>
/// <returns>Table行(RowSpan)</returns>
static PdfPCell CreateRowSpanCell(string txt, Font txtFont)
{
PdfPCell cell = new PdfPCell(new Phrase(60f, txt, txtFont));
cell.Rowspan = 6;
cell.PaddingTop = 6f;
cell.PaddingBottom = 6f;
cell.PaddingLeft = 10f;
cell.VerticalAlignment = Element.ALIGN_MIDDLE;
return cell;
}
/// <summary>
/// 创建Table行
/// </summary>
/// <param name="txt">文本</param>
/// <param name="txtFont">字体</param>
/// <param name="colSpan">跨行数</param>
/// <param name="padTop">顶部padding</param>
/// <param name="padBottom">底部padding</param>
/// <param name="bgColor">背景色</param>
/// <returns>Table行</returns>
static PdfPCell CreateCellHeader(string txt, Font txtFont, int colSpan, float padTop, float padBottom, BaseColor bgColor)
{
PdfPCell cell = new PdfPCell(new Phrase(txt, txtFont));
if (padTop > 0) { cell.PaddingTop = padTop; }
if (padBottom > 0) { cell.PaddingBottom = padBottom; }
if (colSpan > 0) { cell.Colspan = colSpan; }
cell.HorizontalAlignment = Element.ALIGN_CENTER; //0=Left, 1=Centre, 2=Right
cell.VerticalAlignment = Element.ALIGN_MIDDLE;
cell.BackgroundColor = bgColor;
return cell;
}
/// <summary>
/// 创建表格(PdfPTable)
/// </summary>
/// <returns></returns>
static PdfPTable CreateTable()
{
PdfPTable table = new PdfPTable(6);
table.TotalWidth = 470f;
table.LockedWidth = true;
table.HorizontalAlignment = 1;
float[] widths = new float[] { 95f, 95f, 55f, 40f, 95f, 95f };
table.SetWidths(widths);
BaseFont baseFont = CreateChineseFont();
iTextSharp.text.Font titleFont = new iTextSharp.text.Font(baseFont, 12, Font.BOLD);
iTextSharp.text.Font normalFont = new Font(baseFont, 10), normalBoldFont = new Font(baseFont, 10, Font.BOLD);
iTextSharp.text.Font normalRedFont = new Font(baseFont, 10, Font.NORMAL | Font.BOLD, BaseColor.RED);
float padding = 6f; BaseColor bgColor = new BaseColor(153, 204, 255);
table.AddCell(CreateCellHeader("2010 年深圳物联网技术和应用展览会VIP观众信息", titleFont, 6, 8f, 8f, bgColor));
table.AddCell(CreateCell("姓名", normalBoldFont, 1, 0, padding, padding));
table.AddCell(CreateCell("$uName$", normalFont, 0, 5, padding, padding));
table.AddCell(CreateCell("单位", normalBoldFont, 1, 0, padding, padding));
table.AddCell(CreateCell("$cName$", normalFont, 0, 5, padding, padding));
table.AddCell(CreateCell("联系电话", normalBoldFont, 1, 0, padding, padding));
table.AddCell(CreateCell("$uTel$", normalFont, 0, 2, padding, padding));
table.AddCell(CreateCell("职务", normalBoldFont, 1, 0, padding, padding));
table.AddCell(CreateCell("$uHeadShip$", normalFont, 0, 2, padding, padding));
table.AddCell(CreateCell("VIP编号", normalBoldFont, 1, 0, padding, padding));
table.AddCell(CreateCell("SZRFID-VIP-0001", normalRedFont, 0, 5, padding, padding));
table.AddCell(CreateRowSpanCell("其它参观人员 (如贵公司新增其它参观人员请在此栏填写姓名和联系方式,否则必须在现场排队登记)", normalFont));
table.AddCell(CreateCellHeader("姓名", normalBoldFont, 0, padding, padding, bgColor));
table.AddCell(CreateCellHeader("职务", normalBoldFont, 2, padding, padding, bgColor));
table.AddCell(CreateCellHeader("联系电话", normalBoldFont, 0, padding, padding, bgColor));
table.AddCell(CreateCellHeader("电子邮件", normalBoldFont, 0, padding, padding, bgColor));
for (int i = 0; i < 5; i )
{
table.AddCell(CreateCell(" ", normalFont, 0, 0, padding, padding));
table.AddCell(CreateCell(" ", normalFont, 0, 2, padding, padding));
table.AddCell(CreateCell(" ", normalFont, 0, 0, padding, padding));
table.AddCell(CreateCell(" ", normalFont, 0, 0, padding, padding));
}
return table;
}
#endregion
#region 公共函数区域
/// <summary>
/// 创建中文字体(实现中文)
/// </summary>
/// <returns></returns>
public static BaseFont CreateChineseFont()
{
BaseFont.AddToResourceSearch("iTextAsian.dll");
BaseFont.AddToResourceSearch("iTextAsianCmaps.dll"); //"STSong-Light", "UniGB-UCS2-H",
BaseFont baseFT = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
//iTextSharp.text.Font font = new iTextSharp.text.Font(baseFT);
return baseFT;
}
#endregion
}
}