在.net Core 使用PDF模板文件生成PDF文件,代替WEB打印控件!
这几天找WEB打印控件,要么收费的,要么免费的只能在IE里用!
我只想简单的打个标签纸!百度2天,看到一老兄说可以用PDF,然后又开始百度..找到了一篇文章
http://www.jianshu.com/p/d518d0988621 本文代码全部摘抄至这篇文章,发文只为记录!
不同的是我导入的库是iTextSharp.LGPLv2.Core.Fix
开始
一.先用word制作好模板文件,标签打印的话注意页边距,然后另存为PDF格式文件
二.然后下载adobe acrobat pro,创建时选择pdf表单,并设置好相应key名字
然后就是代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 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打印的脚本,搞定!
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现