实例介绍
【实例简介】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 } }
标签: pdf
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论