在.net Core 使用PDF模板文件生成PDF文件,代替WEB打印控件!
阿新 • • 發佈:2017-09-28
cnblogs bat dex make io流 控件 文本框 找到 public
這幾天找WEB打印控件,要麽收費的,要麽免費的只能在IE裏用!
我只想簡單的打個標簽紙!百度2天,看到一老兄說可以用PDF,然後又開始百度..找到了一篇文章
http://www.jianshu.com/p/d518d0988621 本文代碼全部摘抄至這篇文章,發文只為記錄!
不同的是我導入的庫是iTextSharp.LGPLv2.Core.Fix
開始
一.先用word制作好模板文件,標簽打印的話註意頁邊距,然後另存為PDF格式文件
二.然後下載adobe acrobat pro,創建時選擇pdf表單,並設置好相應key名字
然後就是代碼
public FileResult Index() { //獲取中文字體,第三個參數表示為是否潛入字體,但只要是編碼字體就都會嵌入。 BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //讀取模板文件 PdfReader reader = new PdfReader(@"C:\Users\kisme\OneDrive\pdfmoban.pdf"); //創建文件流用來保存填充模板後的文件 System.IO.MemoryStream stream = new System.IO.MemoryStream(); PdfStamper stamp = new PdfStamper(reader, stream); //設置表單字體,在高版本有用,高版本加入這句話就不會插入字體,低版本無用 //stamp.AcroFields.AddSubstitutionFont(baseFont); AcroFields form = stamp.AcroFields; //表單文本框是否鎖定 stamp.FormFlattening = true; Dictionary<string, string> para = new Dictionary<string, string>(); para.Add("username", "國科"); para.Add("usertel","133333333"); para.Add("workservice", "電腦開不機,可能是電源問題,維修前報價(主機缺側蓋,有重要資料,不能重裝)"); para.Add("maketime", "2017年12月11日 12:24"); para.Add("recvicename", "某某某"); para.Add("workername", "某某某"); para.Add("weixinpic", ""); //填充表單,para為表單的一個(屬性-值)字典 foreach (KeyValuePair<string, string> parameter in para) { //要輸入中文就要設置域的字體; form.SetFieldProperty(parameter.Key, "textfont", baseFont, null); //為需要賦值的域設置值; form.SetField(parameter.Key, parameter.Value); } //按順序關閉io流 stamp.Close(); reader.Close(); //生成文件 FileResult fileResult = new FileContentResult(stream.ToArray(), "application/pdf"); //fileResult.FileDownloadName = "4.pdf"; return fileResult; }
然後百度一個Jquery PDF打印的腳本,搞定!
在.net Core 使用PDF模板文件生成PDF文件,代替WEB打印控件!