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

【C#】Winform之C/S架构html页面文件实现直接点击批量顺序打印

admin
2023年8月11日 18:4 本文热度 1048

打印HTML页面的话,我使用WebBrowser控件。

1、设置默认打印机

       /// <summary>        /// 页面加载        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void Form1_Load(object sender, EventArgs e)        {            #region 绑定打印机信息            PrintDocument fPrintDocument = new PrintDocument();            //获取默认打印机            string defaultPrinter = fPrintDocument.PrinterSettings.PrinterName;            //打印机绑定            List<string> printerList = new List<string>();            var printList = PrinterSettings.InstalledPrinters;            foreach (String fPrinterName in printList)            {                printerList.Add(fPrinterName);            }            this.cbx_devs.DataSource = printerList;            this.cbx_devs.selectedItem = defaultPrinter;            #endregion  

       }


       /// <summary>        /// 值改变事件-设置默认打印机        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void cbx_devs_selectedIndexChanged(object sender, EventArgs e)        {            SetDefaultPrinter(this.cbx_devs.selectedItem.ToString());        }        /// <summary>        /// 默认打印机设置        /// </summary>        private void SetDefaultPrinter(string printerName)        {            Externs.SetDefaultPrinter(printerName); //设置默认打印机        }


   public class Externs    {        //调用win api将指定名称的打印机设置为默认打印机        [DllImport("winspool.drv")]        public static extern bool SetDefaultPrinter(String Name);    }

2、单个文件打印

       //导出的测试文件        string path = @"C:\Users\Administrator\Desktop\测试.html";                /// <summary>        /// webBrowser打印        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btn_print_Click(object sender, EventArgs e)        {            //不显示脚本错误            webBrowser1.scriptErrorsSuppressed = true;            //此处也可以直接在页面进行事件绑定            webBrowser1.DocumentCompleted += WebBrowser_DocumentCompleted;            webBrowser1.Url = new Uri(path);        }        /// <summary>        /// 加载完成后事件        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)        {            //html加载完成后,触发打印方法            ((WebBrowser)sender).Print();        }

3、打印多个文件

       //为了与单个文件打印区分,我重新实例化了一个WebBrowser控件

       WebBrowser webBrowser2 = new WebBrowser();


       /// <summary>        /// 页面加载        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void Form1_Load(object sender, EventArgs e)        {            //打印设置            webBrowser2.scriptErrorsSuppressed = true;            webBrowser2.DocumentCompleted += WebBrowser2_DocumentCompleted;            //绑定打印机信息        }


       //表示网页是否正在加载        bool loading = true;        /// <summary>        /// 打印多个文件        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btn_printFiles_Click(object sender, EventArgs e)        {            List<string> list = new List<string>()            {                path1,                path2,                path3            };            foreach (var filePath in list)            {                loading = true;//网页正在加载                webBrowser2.Url = new Uri(filePath);                while (loading)                {                    //等待本次加载完毕后才执行下次循环                    Application.DoEvents();                }            }        }        /// <summary>        /// 加载完成后事件        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void WebBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)        {            //html加载完成后,触发打印方法            ((WebBrowser)sender).Print();            loading = false;//表示加载完成后,状态变为false,下一次循环开始执行        }

3、顺序打印

用【打印多个文件】中的实现方式打印html页面时,发现打印出来的文件的顺序是乱序的。
我想让打印机按照我下发的打印指令进行文件打印,上面的方法就无法实现。


该文章在 2023/8/11 18:05:28 编辑过

全部评论2

admin
2023年8月11日 18:8
 打印前动态更改纸张大小和页边距、页眉页脚等参见:
【C#】C/S程序使用HTML文件作为打印模板[3]
  http://20824.oa22.cn

该评论在 2023/8/11 18:08:28 编辑过
admin
2023年8月11日 18:32
 在用c#实现打印功能时,我们可以将内容先转化为网页形式或者吧模板写成固定的html格式,然后进行内容填充。

在打印过程中,我们可以用到的函数:

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