利用iTextSharp画PDF

友情提示:以下画PDF的代码是先创建PDF文件,然后往PDF里填充数据,如果不符合业务需求的,可以滑过

1、首先,添加iTextSharp包

2、添加PDF基类,供添加页脚、页眉、水印等

 /// <summary>/// Pdf处理基类/// </summary>public class PDFBase : PdfPageEventHelper{#region 属性private String _fontFilePathForHeaderFooter = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "SIMHEI.TTF");/// <summary>/// 页眉/页脚所用的字体/// </summary>public String FontFilePathForHeaderFooter{get{return _fontFilePathForHeaderFooter;}set{_fontFilePathForHeaderFooter = value;}}private String _fontFilePathForBody = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "SIMSUN.TTC,1");/// <summary>/// 正文内容所用的字体/// </summary>public String FontFilePathForBody{get { return _fontFilePathForBody; }set { _fontFilePathForBody = value; }}private PdfPTable _header;/// <summary>/// 页眉/// </summary>public PdfPTable Header{get { return _header; }private set { _header = value; }}private PdfPTable _footer;/// <summary>/// 页脚/// </summary>public PdfPTable Footer{get { return _footer; }private set { _footer = value; }}private BaseFont _baseFontForHeaderFooter;/// <summary>/// 页眉页脚所用的字体/// </summary>public BaseFont BaseFontForHeaderFooter{get { return _baseFontForHeaderFooter; }set { _baseFontForHeaderFooter = value; }}private BaseFont _baseFontForBody;/// <summary>/// 正文所用的字体/// </summary>public BaseFont BaseFontForBody{get { return _baseFontForBody; }set { _baseFontForBody = value; }}private Document _document;/// <summary>/// PDF的Document/// </summary>public Document Document{get { return _document; }private set { _document = value; }}#endregionpublic override void OnOpenDocument(PdfWriter writer, Document document){try{BaseFontForHeaderFooter = BaseFont.CreateFont(FontFilePathForHeaderFooter, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);BaseFontForBody = BaseFont.CreateFont(FontFilePathForBody, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Document = document;}catch (DocumentException de){}catch (System.IO.IOException ioe){}}#region GenerateHeader/// <summary>/// 生成页眉/// </summary>/// <param name="writer"></param>/// <returns></returns>public virtual PdfPTable GenerateHeader(iTextSharp.text.pdf.PdfWriter writer){return null;}#endregion#region GenerateFooter/// <summary>/// 生成页脚/// </summary>/// <param name="writer"></param>/// <returns></returns>public virtual PdfPTable GenerateFooter(iTextSharp.text.pdf.PdfWriter writer){BaseFont baseFont = BaseFontForHeaderFooter;iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, 10, iTextSharp.text.Font.NORMAL);PdfPTable footer = new PdfPTable(3);AddFooterCell(footer, "甲方项目经理:", font);AddFooterCell(footer, "乙方代表::", font);AddFooterCell(footer, "日期:", font);return footer;}private void AddFooterCell(PdfPTable foot, String text, iTextSharp.text.Font font){PdfPCell cell = new PdfPCell();cell.BorderWidthTop = 2;cell.BorderWidthRight = 0;cell.BorderWidthBottom = 0;cell.BorderWidthLeft = 0;cell.Phrase = new Phrase(text, font);cell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;foot.AddCell(cell);}#endregionpublic override void OnEndPage(iTextSharp.text.pdf.PdfWriter writer, iTextSharp.text.Document document){base.OnEndPage(writer, document);输出页眉//Header = GenerateHeader(writer);//Header.TotalWidth = document.PageSize.Width - 20f;/调用PdfTable的WriteSelectedRows方法。该方法以第一个参数作为开始行写入。/第二个参数-1表示没有结束行,并且包含所写的所有行。/第三个参数和第四个参数是开始写入的坐标x和y.//Header.WriteSelectedRows(0, -1, 10, document.PageSize.Height - 20, writer.DirectContent);//输出页脚Footer = GenerateFooter(writer);Footer.TotalWidth = document.PageSize.Width - 20f;Footer.WriteSelectedRows(0, -1, 10, document.PageSize.GetBottom(60), writer.DirectContent);}}

3、根据后台查出的数据画出PDF

 ///友情提示:在代码画PDF之前,最好自己先手动做一个范本(Excel),然后根据对应的行和列,代码画出[AllowAnonymous]public string BuildPdf(int srqrID){//获取数据var srqr = SRQR.getInfoByID(srqrID);var errMSG = "";try{if (srqr != null && srqr.ID > 0){//文件保存路径为当前程序的路径+日期+文件名称var urlHelper = new UrlHelper(this.Request.RequestContext);string hostPath = urlHelper.Content("~/");var dt = DateTime.Now;string fileHost = Server.MapPath("/") + "doc\\SRQRAttachments\\" + dt.ToString("yyyyMMdd") + "\\";if (!Directory.Exists(fileHost)){Directory.CreateDirectory(fileHost);}string fileName = string.Format("{0}-{1}.pdf", "收入确认单审批表", srqr.DJBH);//文件名称string filePath = fileHost + fileName;//文件路径string title = string.Format("收入确认单审批表");BaseFont bf = BaseFont.CreateFont(@"C:\Windows\Fonts\SIMHEI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);BaseFont fs = BaseFont.CreateFont(@"C:\Windows\Fonts\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Font fonta = new Font(bf, 20, Font.BOLD, BaseColor.BLACK);Font fontb = new Font(bf, 12, Font.NORMAL, BaseColor.BLACK);Font fontc = new Font(fs, 20, Font.BOLD, BaseColor.BLACK);Rectangle pageSize = new Rectangle(1600, 1000);Document document = new Document(pageSize, 20, 20, 50, 80);PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(filePath, FileMode.Create));writer.PageEvent = new PDFBase();document.Open();Paragraph p1 = new Paragraph(title, fontc);p1.Alignment = Element.ALIGN_CENTER;document.Add(p1);Paragraph p2 = new Paragraph(" ", fontc);p2.Alignment = Element.ALIGN_CENTER;document.Add(p2);document.AddTitle(title);//设置列的宽度,要画的PDF有多少列,就写多少个PdfPTable table = new PdfPTable(new float[] { 20, 10, 10, 10, 10, 10, 10, 20, 10, 10, 10, 20, 10, 10, 10, 10 });table.TotalWidth = 1200;table.LockedWidth = true;#region 第一行PdfPCell row1_Cell1 = new PdfPCell(new Paragraph("单据内码", fontc));row1_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row1_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row1_Cell1);PdfPCell row1_Cell1_value = new PdfPCell(new Paragraph(srqr.DJNM, fontb));row1_Cell1_value.HorizontalAlignment = Element.ALIGN_CENTER;row1_Cell1_value.VerticalAlignment = Element.ALIGN_MIDDLE;row1_Cell1_value.Colspan = 6;table.AddCell(row1_Cell1_value);PdfPCell row1_Cell2 = new PdfPCell(new Paragraph("单据编号", fontc));row1_Cell2.HorizontalAlignment = Element.ALIGN_CENTER;row1_Cell2.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row1_Cell2);PdfPCell row1_Cell2_value = new PdfPCell(new Paragraph(srqr.DJBH, fontb));row1_Cell2_value.HorizontalAlignment = Element.ALIGN_CENTER;row1_Cell2_value.VerticalAlignment = Element.ALIGN_MIDDLE;row1_Cell2_value.Colspan = 3;table.AddCell(row1_Cell2_value);PdfPCell row1_Cell3 = new PdfPCell(new Paragraph("行政组织", fontc));row1_Cell3.HorizontalAlignment = Element.ALIGN_CENTER;row1_Cell3.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row1_Cell3);PdfPCell row1_Cell3_value = new PdfPCell(new Paragraph(srqr.XZZZName, fontb));row1_Cell3_value.HorizontalAlignment = Element.ALIGN_CENTER;row1_Cell3_value.VerticalAlignment = Element.ALIGN_MIDDLE;row1_Cell3_value.Colspan = 4;table.AddCell(row1_Cell3_value);#endregion#region 第二行PdfPCell row2_Cell1 = new PdfPCell(new Paragraph("行政部门", fontc));row2_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row2_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row2_Cell1);PdfPCell row2_Cell1_value = new PdfPCell(new Paragraph(srqr.XZBMName, fontb));row2_Cell1_value.HorizontalAlignment = Element.ALIGN_CENTER;row2_Cell1_value.VerticalAlignment = Element.ALIGN_MIDDLE;row2_Cell1_value.Colspan = 6;table.AddCell(row2_Cell1_value);PdfPCell row2_Cell2 = new PdfPCell(new Paragraph("所属单位", fontc));row2_Cell2.HorizontalAlignment = Element.ALIGN_CENTER;row2_Cell2.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row2_Cell2);PdfPCell row2_Cell2_value = new PdfPCell(new Paragraph(srqr.OwnerDeptName, fontb));row2_Cell2_value.HorizontalAlignment = Element.ALIGN_CENTER;row2_Cell2_value.VerticalAlignment = Element.ALIGN_MIDDLE;row2_Cell2_value.Colspan = 3;table.AddCell(row2_Cell2_value);PdfPCell row2_Cell3 = new PdfPCell(new Paragraph("所属部门", fontc));row2_Cell3.HorizontalAlignment = Element.ALIGN_CENTER;row2_Cell3.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row2_Cell3);PdfPCell row2_Cell3_value = new PdfPCell(new Paragraph(srqr.OwnerProName, fontb));row2_Cell3_value.HorizontalAlignment = Element.ALIGN_CENTER;row2_Cell3_value.VerticalAlignment = Element.ALIGN_MIDDLE;row2_Cell3_value.Colspan = 4;table.AddCell(row2_Cell3_value);#endregion#region 第三行PdfPCell row3_Cell1 = new PdfPCell(new Paragraph("收入类型", fontc));row3_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row3_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row3_Cell1);PdfPCell row3_Cell1_value = new PdfPCell(new Paragraph(srqr.SRLXName, fontb));row3_Cell1_value.HorizontalAlignment = Element.ALIGN_CENTER;row3_Cell1_value.VerticalAlignment = Element.ALIGN_MIDDLE;row3_Cell1_value.Colspan = 6;table.AddCell(row3_Cell1_value);PdfPCell row3_Cell2 = new PdfPCell(new Paragraph("纳税人类型", fontc));row3_Cell2.HorizontalAlignment = Element.ALIGN_CENTER;row3_Cell2.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row3_Cell2);PdfPCell row3_Cell2_value = new PdfPCell(new Paragraph(srqr.NSRLXName, fontb));row3_Cell2_value.HorizontalAlignment = Element.ALIGN_CENTER;row3_Cell2_value.VerticalAlignment = Element.ALIGN_MIDDLE;row3_Cell2_value.Colspan = 3;table.AddCell(row3_Cell2_value);PdfPCell row3_Cell3 = new PdfPCell(new Paragraph("是否主营", fontc));row3_Cell3.HorizontalAlignment = Element.ALIGN_CENTER;row3_Cell3.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row3_Cell3);PdfPCell row3_Cell3_value = new PdfPCell(new Paragraph(srqr.SFZYName, fontb));row3_Cell3_value.HorizontalAlignment = Element.ALIGN_CENTER;row3_Cell3_value.VerticalAlignment = Element.ALIGN_MIDDLE;row3_Cell3_value.Colspan = 4;table.AddCell(row3_Cell3_value);#endregion#region 第四行PdfPCell row4_Cell1 = new PdfPCell(new Paragraph("制单人", fontc));row4_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row4_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row4_Cell1);PdfPCell row4_Cell1_value = new PdfPCell(new Paragraph(srqr.ZDRName, fontb));row4_Cell1_value.HorizontalAlignment = Element.ALIGN_CENTER;row4_Cell1_value.VerticalAlignment = Element.ALIGN_MIDDLE;row4_Cell1_value.Colspan = 6;table.AddCell(row4_Cell1_value);PdfPCell row4_Cell2 = new PdfPCell(new Paragraph("单据日期", fontc));row4_Cell2.HorizontalAlignment = Element.ALIGN_CENTER;row4_Cell2.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row4_Cell2);PdfPCell row4_Cell2_value = new PdfPCell(new Paragraph((srqr.DJRQ != null ? srqr.DJRQ.Value.ToString("yyyy-MM-dd") : ""), fontb));row4_Cell2_value.HorizontalAlignment = Element.ALIGN_CENTER;row4_Cell2_value.VerticalAlignment = Element.ALIGN_MIDDLE;row4_Cell2_value.Colspan = 3;table.AddCell(row4_Cell2_value);PdfPCell row4_Cell3 = new PdfPCell(new Paragraph("单据状态", fontc));row4_Cell3.HorizontalAlignment = Element.ALIGN_CENTER;row4_Cell3.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row4_Cell3);PdfPCell row4_Cell3_value = new PdfPCell(new Paragraph(srqr.DJZTName, fontb));row4_Cell3_value.HorizontalAlignment = Element.ALIGN_CENTER;row4_Cell3_value.VerticalAlignment = Element.ALIGN_MIDDLE;row4_Cell3_value.Colspan = 4;table.AddCell(row4_Cell3_value);#endregion#region 第五行PdfPCell row5_Cell1 = new PdfPCell(new Paragraph("本位币币种", fontc));row5_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row5_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row5_Cell1);PdfPCell row5_Cell1_value = new PdfPCell(new Paragraph(srqr.BWBName, fontb));row5_Cell1_value.HorizontalAlignment = Element.ALIGN_CENTER;row5_Cell1_value.VerticalAlignment = Element.ALIGN_MIDDLE;row5_Cell1_value.Colspan = 6;table.AddCell(row5_Cell1_value);PdfPCell row5_Cell2 = new PdfPCell(new Paragraph("计税方式", fontc));row5_Cell2.HorizontalAlignment = Element.ALIGN_CENTER;row5_Cell2.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row5_Cell2);PdfPCell row5_Cell2_value = new PdfPCell(new Paragraph(srqr.JSFSName, fontb));row5_Cell2_value.HorizontalAlignment = Element.ALIGN_CENTER;row5_Cell2_value.VerticalAlignment = Element.ALIGN_MIDDLE;row5_Cell2_value.Colspan = 3;table.AddCell(row5_Cell2_value);PdfPCell row5_Cell3 = new PdfPCell(new Paragraph("收入确认金额", fontc));row5_Cell3.HorizontalAlignment = Element.ALIGN_CENTER;row5_Cell3.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row5_Cell3);PdfPCell row5_Cell3_value = new PdfPCell(new Paragraph((srqr.SRQRJEBB ?? 0) == 0 ? "" : srqr.SRQRJEBB.Value.ToString("F2"), fontb));row5_Cell3_value.HorizontalAlignment = Element.ALIGN_CENTER;row5_Cell3_value.VerticalAlignment = Element.ALIGN_MIDDLE;row5_Cell3_value.Colspan = 4;table.AddCell(row5_Cell3_value);#endregion#region 第六行PdfPCell row6_Cell1 = new PdfPCell(new Paragraph("附件张数", fontc));row6_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row6_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(row6_Cell1);PdfPCell row6_Cell1_value = new PdfPCell(new Paragraph((srqr.DJFJZS ?? 0).ToString(), fontb));row6_Cell1_value.HorizontalAlignment = Element.ALIGN_CENTER;row6_Cell1_value.VerticalAlignment = Element.ALIGN_MIDDLE;row6_Cell1_value.Colspan = 6;table.AddCell(row6_Cell1_value);#endregion#region 第七行PdfPCell row7_Cell1 = new PdfPCell(new Paragraph("单据摘要", fontc));row7_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row7_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;row7_Cell1.Rowspan = 2;table.AddCell(row7_Cell1);PdfPCell row7_Cell1_value = new PdfPCell(new Paragraph(srqr.DJZY, fontb));row7_Cell1_value.HorizontalAlignment = Element.ALIGN_LEFT;row7_Cell1_value.VerticalAlignment = Element.ALIGN_MIDDLE;row7_Cell1_value.Colspan = 15;row7_Cell1_value.Rowspan = 2;table.AddCell(row7_Cell1_value);#endregion#region 第八行PdfPCell row8_Cell1 = new PdfPCell(new Paragraph("报账事由", fontc));row8_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row8_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;row8_Cell1.Rowspan = 2;table.AddCell(row8_Cell1);PdfPCell row8_Cell1_value = new PdfPCell(new Paragraph(srqr.BZSY, fontb));row8_Cell1_value.HorizontalAlignment = Element.ALIGN_LEFT;row8_Cell1_value.VerticalAlignment = Element.ALIGN_MIDDLE;row8_Cell1_value.Colspan = 15;row8_Cell1_value.Rowspan = 2;table.AddCell(row8_Cell1_value);#endregionvar workerList = Wf_QueryDAL.Wf_GetEffectiveTrackList(srqr.WorkID ?? 0);if (workerList != null && workerList.Count > 0){#region 第九行PdfPCell row9_Cell1 = new PdfPCell(new Paragraph("审批记录", fontc));row9_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;row9_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;row9_Cell1.Colspan = 16;table.AddCell(row9_Cell1);#endregionforeach (var item in workerList){#region 审批处理人相关PdfPCell spRow_Cell1 = new PdfPCell(new Paragraph(item.NDFromT, fontc));spRow_Cell1.HorizontalAlignment = Element.ALIGN_CENTER;spRow_Cell1.VerticalAlignment = Element.ALIGN_MIDDLE;table.AddCell(spRow_Cell1);PdfPCell spRow_Cell2 = new PdfPCell(new Paragraph(item.EmpFromT, fontb));spRow_Cell2.HorizontalAlignment = Element.ALIGN_CENTER;spRow_Cell2.VerticalAlignment = Element.ALIGN_MIDDLE;spRow_Cell2.Colspan = 6;table.AddCell(spRow_Cell2);PdfPCell spRow_Cell3 = new PdfPCell(new Paragraph(item.NodeData, fontb));spRow_Cell3.HorizontalAlignment = Element.ALIGN_CENTER;spRow_Cell3.VerticalAlignment = Element.ALIGN_MIDDLE;spRow_Cell3.Colspan = 4;table.AddCell(spRow_Cell3);PdfPCell spRow_Cell4 = new PdfPCell(new Paragraph(item.RDT.Substring(0, 10), fontb));spRow_Cell4.HorizontalAlignment = Element.ALIGN_CENTER;spRow_Cell4.VerticalAlignment = Element.ALIGN_MIDDLE;spRow_Cell4.Colspan = 5;table.AddCell(spRow_Cell4);#endregion}}document.Add(table);document.Close();writer.Close();//给PDF加水印// SetWatermark(filePath, "这是水印");//如果需要单独保存附件的一些信息,比如大小等,可利用FileInfo//FileInfo fileInfo = new FileInfo(filePath);}}catch (Exception ex){//对异常进行处理}return errMSG;}

4、加水印

 /// <summary>/// 给PDF加水印/// </summary>/// <param name="outputfilepath">PDF路径</param>/// <param name="waterMarkName">需要加的水印</param>/// <returns></returns>
private void SetWatermark(string outputfilepath, string waterMarkName){PdfReader pdfReader = null;PdfStamper pdfStamper = null;try{pdfReader = new PdfReader(outputfilepath);pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));// 设置密码//pdfStamper.SetEncryption(false,userPassWord, ownerPassWord, permission);int total = pdfReader.NumberOfPages + 1;PdfContentByte content;BaseFont font = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);PdfGState gs = new PdfGState();gs.FillOpacity = 0.3f;//透明度int waterMarkNameLenth = waterMarkName.Length;char c;int rise = 0;int span = 15;int fontSize = 20;int height = 500;int width = 1800;string spanString = " ";//水平位移for (int i = 1; i < total; i++){rise = waterMarkNameLenth * span;//content = pdfStamper.GetOverContent(i);//在内容上方加水印content = pdfStamper.GetUnderContent(i);//在内容下方加水印content.SetGState(gs);content.BeginText();content.SetColorFill(BaseColor.DARK_GRAY);content.SetFontAndSize(font, fontSize);int heightNumbert = (int)Math.Ceiling((decimal)height / (decimal)rise);//垂直重复的次数,进一发int panleWith = (fontSize + span) * waterMarkNameLenth;int widthNumber = (int)Math.Ceiling((decimal)width / (decimal)panleWith);//水平重复次数// 设置水印文字字体倾斜 开始for (int w = 0; w < widthNumber; w++){for (int h = 1; h <= heightNumbert; h++){int yleng = rise * h;content.SetTextMatrix(w * panleWith, yleng);//x,y设置水印开始的绝对左边,以左下角为x,y轴的起点for (int k = 0; k < waterMarkNameLenth; k++){content.SetTextRise(yleng);//指定的y轴值处添加c = waterMarkName[k];content.ShowText(c + spanString);yleng -= span;}}}content.EndText();}}catch (Exception ex){throw ex;}finally{if (pdfStamper != null)pdfStamper.Close();if (pdfReader != null)pdfReader.Close();}}

5、效果

C# 利用iTextSharp画PDF相关推荐

  1. 利用iTextSharp对PDF进行签名(E-signing PDF documents with iTextSharp)--推荐

    在CodeProject上看到一篇不错的文章,所以在这里还是向大家推荐一下. http://files.cnblogs.com/hardrock/Esignature_src.zip  Introdu ...

  2. itextsharp 获取文本_利用iTextSharp提取PDF文件中的文本内容

    最近测试中需要对比两个PDF文件的内容,当然只是文字没有图表的,但是没有现成的工具可用.于是我的想法是先把PDF转换为Text,然后再对比Text的内容.现在问题的关键变成了如何提取PDF中的文本,在 ...

  3. 利用iTextSharp填写中文(中日韩)PDF表单(完整解决方案)

    或者说中日韩文)表单填写的问题,本不想回答这类问题,因为相关的注意事项都已经在我的博客里说了,但现在看来还是有必要再啰唆下了,如果再有问题的话,希望带着Money来问,拜托了. 下面这段代码根据iTe ...

  4. unity利用ITextSharp实现导出pdf文件

    unity创建pdf文件首先需要搭建ITextSharp环境,先要导入所需要的dll文件.选用vs创建一个控制台项目,然后点击工具-包管理器-管理解决方案的Nuget程序包选项,如图所示: 打开包管理 ...

  5. 使用iTextSharp 导出PDF 详解(转)

    PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段"暴力"破解 ...

  6. java如何画出表格_Java利用iText7画个性化表格

    Java利用iText7画个性化表格 Java利用iText7画个性化表格 有时PDF中会出现非传统等行等列表格,下面介绍如何画个性化表格 (需要安装iText7插件哦)(官网http://devel ...

  7. .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇) .

    该文主要介绍如何借助iTextSharp在C# 2.0中制作PDF文件,本文的架构大致按照iTextSharp的操作文档进行翻译,如果需要查看原文,请点击一下链接:http://itextsharp. ...

  8. .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇)

    该文主要介绍如何借助iTextSharp在C# 2.0中制作PDF文件,本文的架构大致按照iTextSharp的操作文档进行翻译,如果需要查看原文,请点击一下链接:http://itextsharp. ...

  9. 用python画动态樱花_利用python画一棵漂亮的樱花树,turtle画图代码大全,此处感谢知乎大佬小白...

    利用python画一棵漂亮的樱花树,turtle画图代码大全,此处感谢知乎大佬小白 此处感谢知乎大佬 小白练手 练习一下比较流行的turtle(海龟库) 画一棵漂亮的樱花树,效果如下: ps: 是动态 ...

  10. 记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配(二)

    本文接着上一篇记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配 打开HALCON并打开匹配助手 匹配助手如图 "创建"页说明: 1,选择匹配方式 中间偏上方的下拉 ...

最新文章

  1. 2022-2028年中国塑料人造革行业市场研究及前瞻分析报告
  2. Hadoop2.7.3完全分布式搭建
  3. python编程能干什么-Python编程一般可以用来做什么
  4. 多VLAN环境下DHCP服务的实现
  5. 执行全文索引时出现权限不足的解决方法
  6. CentOS7搭建ftp服务器(vsftpd,亲测成功)
  7. python 字典查询比列表快_Python 字典和列表的对比应用
  8. 《EMCAScript6入门》读书笔记——2.let和const命令
  9. nginx proxy_pass cannot have URI part in location given by regular expression
  10. 多媒体计算机音频怎么连接,解决电脑连多媒体为什么没有声音
  11. 遗传+粒子群 求解多配送中心车辆调度问题(python)
  12. 桥接模式、NAT模式和仅主机模式
  13. 免费思维导图软件,收藏
  14. jmeter菜鸟教程(jmeter安装教程)
  15. 乐视X520(乐2 全网通)一键刷机教程
  16. ES6常问面试题(Promise,async和await 等)
  17. 51单片机——LCD1602液晶显示屏
  18. linux动态库注册函数,linux下加载动态库函数
  19. linux 可读可写可执行权限 chmod
  20. 马云卸任后为物流站台 “菜鸟”将飞向何方

热门文章

  1. vue之仿网易严选详解
  2. 码农小汪之Alibaba-fastjson的基本使用
  3. 实时渲染学习(六)延迟渲染(Deferred Rendering)
  4. Java小开发(车辆信息管理系统)
  5. 《东周列国志》第四十九回 公子鲍厚施买国 齐懿公竹池遇变
  6. 电子科学与技术毕业论文题目【452个】
  7. Android入门:HttpClient介绍
  8. 信息安全与管理的分析理解
  9. WinDbg 入门教程
  10. 一种改进的樽海鞘群算法-附代码