使用 itextsharp pdf 套表

  1. 讀取 PDF Template

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    MemoryStream msFtpFile = fc.Get(FileName, false);
    //FileStream stream = new FileStream(FileFullPath, FileMode.Open, FileAccess.Read, FileShare.Read);
    //Byte[] pdfByte = new Byte[stream.Length];
    //stream.Read(pdfByte, 0, pdfByte.Length);
    //stream.Seek(0, SeekOrigin.Begin);
    //stream.Close();
    //PdfReader pdfReader = new PdfReader(pdfByte);
    PdfReader pdfReader = new PdfReader(msFtpFile.ToArray());
    MemoryStream ms = new MemoryStream();
    //string tmpFilePath = FilePath + "\temp\" + Guid.NewGuid().ToString() + ".pdf";
    //FileStream tmpOutPutFile = new FileStream(tmpFilePath, FileMode.CreateNew);
    //PdfStamper pdfStamper = new PdfStamper(pdfReader, tmpOutPutFile);
    //PdfStamper pdfStamper = new PdfStamper(pdfReader, Response.OutputStream);
    PdfStamper pdfStamper = new PdfStamper(pdfReader, ms);
    pdfReader.Close();
    pdfStamper.Writer.CloseStream = false;
    pdfStamper.FormFlattening = true;
  2. 欄位套表填值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // 取得PDF樣版所設定要套表的欄位
    AcroFields pdfForm = pdfStamper.AcroFields;
    // 設定中文字型檔
    BaseFont.AddToResourceSearch(WebBinPath + "\iTextAsian.dll");
    BaseFont.AddToResourceSearch(WebBinPath + "\iTextAsianCmaps.dll");
    // 使用字型設定
    BaseFont bfMHei = BaseFont.CreateFont("MHei-Medium", "UniCNS-UCS2-H", BaseFont.EMBEDDED);
    // 欄位屬性設定
    pdfForm.SetFieldProperty(item.Field, "textfont", bfMHei, null);
    // 欄位填值
    pdfForm.SetField(item.Field, value);