zoukankan      html  css  js  c++  java
  • iTextSharp生成pdf含模板(二)---C#代码部分

    参考地址:https://www.cnblogs.com/ibeisha/p/itextsharp-pdf.html

    一、先在程序中使用Nuget安装iTextSharp(我是创建的控制台程序)

    二、建立静态常量类

     1     public class ConstantInfo
     2     {
     3         /// <summary>
     4         /// 证书下载目录
     5         /// </summary>
     6         public static string _Certificate { get { return "/DownloadResource/Certificate/"; } }
     7 
     8         /// <summary>
     9         /// 证书模板目录
    10         /// </summary>
    11         public static string _CertificateTemplate { get { return "/Resources/"; } }
    12     }

    三、生成pdf主体代码

     1     class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             //生成的pdf文件名称
     6             string fileName = "Certificate_test.pdf";
     7             //生成的pdf文件目录
     8             string downloadFilePath = AppDomain.CurrentDomain.BaseDirectory + ConstantInfo._Certificate;
     9             //生成的pdf文件完整路径
    10             string downloadFileName = downloadFilePath + fileName;
    11             //如没有,则创建
    12             if (!Directory.Exists(downloadFilePath))
    13             {
    14                 Directory.CreateDirectory(downloadFilePath);
    15             }
    16             //证书模板目录
    17             string templateFilePath = AppDomain.CurrentDomain.BaseDirectory + ConstantInfo._CertificateTemplate + "TemplateCer.pdf";
    18             //可直接写成固定目录
    19             //string tempFilePath = "D:\tmp.pdf";
    20             //字体资源
    21             string fontFilePath = AppDomain.CurrentDomain.BaseDirectory + ConstantInfo._CertificateTemplate + "msyhbd.ttf";
    22 
    23 
    24             iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(templateFilePath);
    25             PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(downloadFileName, FileMode.OpenOrCreate));
    26             AcroFields pdfFormFields = pdfStamper.AcroFields;
    27             pdfStamper.FormFlattening = true;
    28 
    29             //BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    30             BaseFont simheiBase = BaseFont.CreateFont(fontFilePath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    31 
    32             //添加图片
    33             //Image image = Image.GetInstance("");
    34             //pdfStamper.Writer.Add(image);
    35 
    36             pdfFormFields.AddSubstitutionFont(simheiBase);
    37             //根据pdf中对应的表单域(一定要一致)赋对应的值
    38             pdfStamper.AcroFields.SetField("Name", "小红");
    39             pdfStamper.AcroFields.SetField("Score", "600");
    40             pdfStamper.AcroFields.SetField("CompanyName", "测试测试");
    41             pdfStamper.AcroFields.SetField("Date", "2019-7-17");
    42             //pdfStamper.AcroFields.SetField("chk", "yes", true);
    43             pdfStamper.Close();
    44             pdfReader.Close();
    45             Console.Read();
    46             //解析文本
    47             //PdfReaderContentParser parser = new PdfReaderContentParser(pdfReader);
    48 
    49             //PdfWriter pdfWriter;
    50 
    51             //ITextExtractionStrategy strategy;
    52             //strategy = parser.ProcessContent<SimpleTextExtractionStrategy>(1, new SimpleTextExtractionStrategy());
    53             //string ss = strategy.GetResultantText();
    54 
    55             //byte[] buffer = pdfReader.GetPageContent(1);
    56 
    57             //string strBody = System.Text.Encoding.Default.GetString(buffer);
    58         }
    59     }

    四、文件路径如图:

    其中ttf是用到的字体,看自己需要用到什么字体,可直接从网上下载对应的字体

    生成的效果图

     后记:最近遇到一个问题,在软件中已经用预览功能调整好字体的大小,但是在程序中,如果不用下载字体的话,值赋不上,如果用下载的字体(ttf)的话,和在软件中设置的还是有差别的。最后还是得再调整。有时间一定要看看这个问题。

  • 相关阅读:
    小学四则运算编程实践
    熟悉编程语言
    俄罗斯方块游戏(修改为无敌版)
    2020-2021-1 20201212《信息安全专业导论》第八周学习总结
    如何学好编程
    python day 4 turtle
    python day 3
    20191206《信息安全专业导论》第五周学习总结
    20191206《信息安全专业导论》第四周学习总结
    20191206《信息安全专业导论》第三周学习总结
  • 原文地址:https://www.cnblogs.com/jas0203/p/11211713.html
Copyright © 2011-2022 走看看