博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#调用小票打印机
阅读量:6122 次
发布时间:2019-06-21

本文共 2142 字,大约阅读时间需要 7 分钟。

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Drawing.Printing;
namespace BNCheckItemsClient.FormC.Specimen
{
    publicclass PrintSpecimenLabel
    {
        PrintDocument printDocument;
        privateint _PrintPage =0;//当前打印页
         privateint _TotalPage =1;//总页数 
         publicstring _PrinterName =string.Empty;// 打印机名称
        publicvoid DoPrint()
        {
            try
            {
                //准备数据
                PrepareData();
               
                if (_TotalPage <=0)
                    return;
                //设置打印机
                PrinterSetup();
                if (!string.IsNullOrEmpty(_PrinterName))
                {
                    printDocument.PrinterSettings.PrinterName = _PrinterName;
                    if (!printDocument.PrinterSettings.IsValid)
                    {
                        thrownew Exception("The printer is not Valid");
                    }
                }
                printDocument.Print();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                //throw;
            }
        }
        privatevoid PrinterSetup()
        {
            //设置打印机属性
            printDocument.PrinterSettings.PrinterName ="ZDesigner 888-TT";//设置打印机
            printDocument.DefaultPageSettings.PaperSize =new System.Drawing.Printing.PaperSize("SpecimenLabel",110, 180);//页面大小
            printDocument.DefaultPageSettings.Landscape =true;//横向打印
            printDocument.PrintPage +=new PrintPageEventHandler(printDocument_PrintPage);
         }
        //在这里写打印的内容
        void printDocument_PrintPage(object sender, PrintPageEventArgs e)
        {
            Graphics g = e.Graphics;
            float leftMargin = 5f; //左边距
              SolidBrush myBrush =new SolidBrush(Color.Black);//刷子
              float yPosition = 5f;//行定位
            Font printFont =new Font("宋体", 20f, FontStyle.Bold);//设置字体
            g.DrawString("这是要打印的第一行内容",printFont, myBrush, leftMargin + 140f, 7f, new StringFormat());
            yPosition += printFont.GetHeight(g);//另起一行
              printFont =new Font("宋体", 10f, FontStyle.Bold);//改变字体
            g.DrawString("这是要打印的第二行内容", printFont, myBrush, leftMargin, yPosition, new StringFormat());
            //如果要同时打印多个标签
              _PrintPage++;//页号
            if (_PrintPage < _TotalPage)
            { 
                e.HasMorePages =true;
            }
            else
            {
                e.HasMorePages =false;
            }
        }
    }
}
到打印机和传真文件夹-->右键-->服务器属性
添加了自己定义的纸类型 名称949W300H 宽9.49in,高3.00in

所以改了程序为

foreach(PaperSize ps in printDoc.PrinterSettings.PaperSizes)
{
 if(ps.PaperName=="949W300H")
 {
  printDoc.PrinterSettings.DefaultPageSettings.PaperSize=ps;
  printDoc.DefaultPageSettings.PaperSize=ps;
 }
}

 

就可以了 似乎纸张只能从printDoc.PrinterSettings.PaperSizes中选择

转载地址:http://sxgka.baihongyu.com/

你可能感兴趣的文章
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>