在.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打印的脚本,搞定!

 

posted @   kismet82  阅读(5028)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示