因接口生成Pdf推送, 工作需要進行Pdf生成,但網上生成Pdf的文檔好少:
1.生成Pdf需要文件路徑/內容 都可以配置
2.使用組件 itextsharp.dll 本人用版本:v2.0.50727
3.保存路徑,本模塊 實現備份和轉移上傳
貼核心代碼如下:
public class PdfHelper { /// <summary> /// 根據傳入XML文件創建Pdf文件 /// 一張單據對應一個pdf文件,A4紙張大小,文件格式UTF-8格式。 /// </summary> /// <param name="xmlStr">xml字符串</param> /// <param name="filePath">生成Pdf的文件名稱</param> public static void CreatePdf(string inXML, string filePath, string logName, out string vsErr) { vsErr = string.Empty; try { FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write); Document docPDF = new Document(); //創建一個pdf文檔的對象 IODirFolder(Path.GetDirectoryName(filePath), logName, out vsErr); PdfWriter write = PdfWriter.GetInstance(docPDF, fs);//創建一個寫入PDF的對象 BaseFont bsFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font font = new Font(bsFont); //在這里需要注意的是,itextsharp不支持中文字符,想要顯示中文字符的話需要自己設置字體 docPDF.Open(); //打開 docPDF.Add(new Paragraph(inXML, font));//將XML寫入PDF中 docPDF.Close(); //關閉 } catch (Exception ex) { logCom.WriteFile(string.Format("CreatePdf=>{0}", ex.ToString()), logName, out vsErr); } } /// <summary> /// 輸入輸出驗證IO 文件夾 /// </summary> /// <param name="folderPath"></param> public static void IODirFolder(string folderPath, string logName, out string vsErr) { vsErr = string.Empty; try { if (!Directory.Exists(folderPath)) { Directory.CreateDirectory(folderPath); } } catch (Exception ex) { LogCom.WriteFile(string.Format("IODirFolder=>{0}", ex.ToString()), logName, out vsErr); } }
}
拓展:通過以上可以制作類似好多小工具,如讀取,寫入 合並Pdf 按照頁面寫入等。
本文章為工作之中 2分鍾筆記。
附錄:
ConfigParmater.cs
XmlUtil.cs
和其他調用模塊