LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

[点晴永久免费OA]C#调用打印机打印pdf(动态配置标签模板并且打印)

admin
2022年12月22日 16:54 本文热度 4274

之前做TMS、WMS系统的时候,经常要对接条码打印机来打印标签。市面上主流的条码打印机有佳博,TSC,斑马,博思得。这几个品牌打印机的官方SDK都大同小异,都是使用非托管dll调用函数,发送指令给打印机。
标签布局是使用X Y轴来定位的,文本换行还得自己计算文本长度截取换行,所以画标签样式还挺费时间的。

最近公司有新需求,使用动态标签。让客户自己随时配置标签的样式:配置了样式,后面打印标签的格式就是这样。

如果要做到这样,显然官方SDK是很困难的。因为本身XY轴就不好控制,而且官方SDK还不支持图片,表格这些。并且还得为每个品牌打印机编写代码,因为每个品牌的类库,dll不一样。

我想到的解决办法是:打印标签的时候根据动态标签模板画html,然后将html转pdf,最后调用pdf打印。

这样做的好处是:打印机出来的标签样式基本上可以和配置的模板一样,不需要每个品牌打印机都编写标签布局代码了,不需要安装打印机驱动,因为使用pdf打印。


实现步骤:

一、首先肯定要有html文本,或者html网页。你要生成的pdf是什么样,就用html画一个一样的网页。



二、将html网页转为pdf文档

C#将页面生成pdf文件(CSS样式不缺失)[2]
  http://18791.oa22.cn


三、打印PDF

1.引用O2S.Components.PDFRender4NET.dll,在nuget中下载:


 2.代码:

      /// <summary>
        /// PDFRender4NET打印PDF
        /// </summary>
        /// <param name="filePath">pdf文件完全路径</param>
        /// <param name="printName">打印机名称,不传使用默认打印机</param>
        /// <param name="width">标签宽度mm</param>
        /// <param name="height">标签高度mm</param>
        private static void PDFRender4NETPrint(string filePath, string printName, double width, double height)
        {
            using (PDFFile file = PDFFile.Open(filePath))
            {
                PrinterSettings settings = new PrinterSettings();
                settings.PrintToFile = false;
                if (printName != null)
                {
                    settings.PrinterName = printName;
                }
                double proportion = 0.0393701;//1mm等于0.0393701 in
                width = width * proportion * 100;//乘100,标签大小单位是百分之一英寸
                height = height * proportion * 100;
                //设置纸张大小(可以不设置,取默认设置)3.90 in,  8.65 in
                PaperSize ps = new PaperSize(printName, Convert.ToInt32(width), Convert.ToInt32(height));
                //如果是自定义纸张,就要大于118,(A4值为9,详细纸张类型与值的对照请看http://msdn.microsoft.com/zh-tw/library/system.drawing.printing.papersize.rawkind(v=vs.85).aspx)
                ps.RawKind = 120;
                O2S.Components.PDFRender4NET.Printing.PDFPrintSettings pdfPrintSettings = new O2S.Components.PDFRender4NET.Printing.PDFPrintSettings(settings);
                pdfPrintSettings.PaperSize = ps;
                pdfPrintSettings.PageScaling = O2S.Components.PDFRender4NET.Printing.PageScaling.FitToPrinterMarginsProportional;
                pdfPrintSettings.PrinterSettings.Copies = 1;
                file.Print(pdfPrintSettings);
                //file.Dispose();
            }
        }

该文章在 2022/12/22 17:15:00 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved