PrintDocument

Windodws下使用 PrintDocument进行打印。 使用这个进行打印就象是使用GDI+画图一样。你画出什么打印机就会打出什么。 也可以直接打印图片。

using System;
using System.IO;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;

  public static void PrintTag(string html)
        {
            try
            {
                var dpi = 203;

                var imageWidth = 318;
                var printerWidth = 158;
                var imageHeight = 208;

                var htmlToImageConv = new NReco.ImageGenerator.HtmlToImageConverter();
                htmlToImageConv.Width = imageWidth;
                var jpegBytes = htmlToImageConv.GenerateImage(html, NReco.ImageGenerator.ImageFormat.Bmp);

                PrintDocument pd = new PrintDocument();
                pd.DocumentName = $"tag{name}-{index}";
                using (var ms = new MemoryStream(jpegBytes))
                {
                    var image = new Bitmap(ms);
                    image.SetResolution(dpi, dpi);
                    image.Save($"./temp/tag{name}-{index}.png");
                    //pd.PrintController = new StandardPrintController();
                    pd.DefaultPageSettings.PrinterSettings.PrinterName = "Microsoft Print to PDF"; //你打印机的名称
                    pd.DefaultPageSettings.Landscape = false; //or false!
                    pd.PrintPage += (sender, args) =>
                    {
                        var pageunit = args.Graphics.PageUnit;
                        var actualHeight = (int)decimal.Floor((decimal)image.Height / dpi * 100m);
                        Rectangle m = new Rectangle(0, 0, printerWidth, actualHeight);

                        //args.Graphics.DrawImageUnscaled(bitmap, m);
                        //args.Graphics.DrawString("混塔 去皮值 ", new Font("宋体", 9), Brushes.Black, new PointF(0, 0));
                        args.Graphics.DrawImageUnscaled(image, m);
                    };
                }
                pd.Print();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

上面的代码我们是 把Html 转成图片,然后用PrintDocumetn把这个图片直接打印出来。 (影响了性能。)

很多时候我们的小票是比较固定的模式。我们也可以使用HuanentPrinter来做。

下一篇:打印Pdf
最近更新的
...