直接把结果输出到打印机
作者:孟宪会 出自:【孟宪会之精彩世界】 发布日期:2003年6月15日 10点49分57秒
<!--StartFragment-->// PrintDirect.cs
// 本文参考了Microsoft Support 文档号:Q298141
// 本代码假定你在file://192.168.1.101/hpl存在共享打印机
// 本代码示例了如何向打印机发送Hewlett Packard PCL5代码直接在页面中央打印出一个矩形。
using System;
using System.Text;
using System.Runtime.InteropServices;
[StructLayout( LayoutKind.Sequential)]
public struct DOCINFO
{
[MarshalAs(UnmanagedType.LPWStr)]public string pDocName;
[MarshalAs(UnmanagedType.LPWStr)]public string pOutputFile;
[MarshalAs(UnmanagedType.LPWStr)]public string pDataType;
}
public class PrintDirect
{
[ DllImport( "winspool.drv",CharSet=CharSet.Unicode,ExactSpelling=false,
CallingConvention=CallingConvention.StdCall )]
public static extern long OpenPrinter(string pPrinterName,ref IntPtr phPrinter,
int pDefault);
[ DllImport( "winspool.drv",CharSet=CharSet.Unicode,ExactSpelling=false,
CallingConvention=CallingConvention.StdCall )]
public static extern long StartDocPrinter(IntPtr hPrinter, int Level,
ref DOCINFO pDocInfo);
[ DllImport("winspool.drv",CharSet=CharSet.Unicode,ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern long StartPagePrinter(IntPtr hPrinter);
[ DllImport( "winspool.drv",CharSet=CharSet.Ansi,ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern long WritePrinter(IntPtr hPrinter,string data,
int buf,ref int pcWritten);
[ DllImport( "winspool.drv" ,CharSet=CharSet.Unicode,ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern long EndPagePrinter(IntPtr hPrinter);
[ DllImport( "winspool.drv",CharSet=CharSet.Unicode,ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern long EndDocPrinter(IntPtr hPrinter);
[ DllImport("winspool.drv",CharSet=CharSet.Unicode,ExactSpelling=true,
CallingConvention=CallingConvention.StdCall )]
public static extern long ClosePrinter(IntPtr hPrinter);
}
public class App
{
public static void Main ()
{
System.IntPtr lhPrinter=new System.IntPtr();
DOCINFO di = new DOCINFO();
int pcWritten=0;
string st1;
// text to print with a form feed character
st1="This is an example of printing directly to a printer/f";
di.pDocName="my test document";
di.pDataType="RAW";
// the /x1b means an ascii escape character
st1="/x1b*c600a6b0P/f";
//lhPrinter contains the handle for the printer opened
//If lhPrinter is 0 then an error has occured
PrintDirect.OpenPrinter("192.168.1.101//hpl",ref lhPrinter,0);
PrintDirect.StartDocPrinter(lhPrinter,1,ref di);
PrintDirect.StartPagePrinter(lhPrinter);
try
{
// Moves the cursor 900 dots (3 inches at 300 dpi) in from the left margin, and
// 600 dots (2 inches at 300 dpi) down from the top margin.
st1="/x1b*p900x600Y";
PrintDirect.WritePrinter(lhPrinter,st1,st1.Length,ref pcWritten);
// Using the print model commands for rectangle dimensions, "600a" specifies a rectangle
// with a horizontal size or width of 600 dots, and "6b" specifies a vertical
// size or height of 6 dots. The 0P selects the solid black rectangular area fill.
st1="/x1b*c600a6b0P";
PrintDirect.WritePrinter(lhPrinter,st1,st1.Length,ref pcWritten);
// Specifies a rectangle with width of 6 dots, height of 600 dots, and a
// fill pattern of solid black.
st1="/x1b*c6a600b0P";
PrintDirect.WritePrinter(lhPrinter,st1,st1.Length,ref pcWritten);
// Moves the current cursor position to 900 dots, from the left margin and
// 1200 dots down from the top margin.
st1="/x1b*p900x1200Y";
PrintDirect.WritePrinter(lhPrinter,st1,st1.Length,ref pcWritten);
// Specifies a rectangle with a width of 606 dots, a height of 6 dots and a
// fill pattern of solid black.
st1="/x1b*c606a6b0P";
PrintDirect.WritePrinter(lhPrinter,st1,st1.Length,ref pcWritten);
// Moves the current cursor position to 1500 dots from the left margin and
// 600 dots down from the top margin.
st1="/x1b*p1500x600Y";
PrintDirect.WritePrinter(lhPrinter,st1,st1.Length,ref pcWritten);
// Specifies a rectangle with a width of 6 dots, a height of 600 dots and a
// fill pattern of solid black.
st1="/x1b*c6a600b0P";
PrintDirect.WritePrinter(lhPrinter,st1,st1.Length,ref pcWritten);
// Send a form feed character to the printer
st1="/f";
PrintDirect.WritePrinter(lhPrinter,st1,st1.Length,ref pcWritten);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
PrintDirect.EndPagePrinter(lhPrinter);
PrintDirect.EndDocPrinter(lhPrinter);
PrintDirect.ClosePrinter(lhPrinter);
}
}
直接把结果输出到打印机相关推荐
- 高品质摄影作图台式计算机推荐,浅谈高质量摄影照片后期输出的打印机选择
真的只能是浅谈了,道行尚浅,认识有限,在此仅仅谈下自己的真实体会.当然,要是手机拍的或者就是打印个3吋的,就不在此讨论范畴了. 首先说照片为何要打印? 可以这么说,再好的照片,不打印出来就不算作品.现 ...
- ireport+jasperreport 直接输出到打印机 普通报表 交叉报表
项目中要用到针式打印机票据打印,本来是使用java printable 通过 Graphic2D输出到图形化方式打印的,运行了一段时间客户对版面个性需要比较多,用输出图形的方式调整太麻烦,而且Grap ...
- 如何自动截获输出到打印机的文本数据(转载)
原 作 者:吴军丽 李继名 原 出 处:计算机世界 在所有的应用软件当中,几乎都会提供打印结果的功能,但大部分的软件并不提供输出结果到文本文件功能(如速达,用友和金碟应用软件等能够打印,但不能将结果直 ...
- 2.1.2监测当前打印机状态
2.1.2监测当前打印机状态 Windows标准的打印机监测程序.通过该程序,我们可以了解当前打印机的状态,包括打印机任务队列, 各项任务状态.所有者.进度和开始时间,并且可以及时暂停.清除打 ...
- mysql输出美式报表_Navicat for MySQL 如何预览报表
Navicat for MySQL 使用用户友好 GUI 报表创建工具创建各种不同类型的报表,设计发票.统计.邮寄标签及更多其他报表.输出报表到多种格式,如 text.PDF.Lotus.Excel. ...
- LODOP不同打印机出现偏移问题
方法简单描述: 1.精确套打,设置以纸张边缘为基点,可避免不同可打区域不同带了的影响. 2.不同客户端打印机位置差异,可通过打印维护调整,结果在客户端本地. 或调整打印机初始位置 (本人使用的金税盘的 ...
- 第21章、系统设定工具(网络与打印机)与硬件侦测
21.1. CentOS 系统设定工具: setup 系统设定除了使用手动的方式编辑配置文件之外 (例如 /etc/inittab, /etc/fstab 等),其实在 Red Hat 系统的 RHE ...
- 鸟哥的Linux私房菜(基础篇)- 第二十一章、系统配置工具(网络与打印机)与硬件侦测
第二十一章.系统配置工具(网络与打印机)与硬件侦测 最近升级日期:2009/09/15 除了手动配置之外,其实系统提供了一个名为 setup 的命令给系统管理员使用喔!这个命令还能够配置网络呢.此外, ...
- C#调用斑马打印机打印条码标签(支持COM/LPT/USB/ZPL/EPL/Bitmap)
利用标签设计软件做好模板,打印至本地文件,把其中的ZPL.EPL指令拷贝出来,替换其中动态变化的内容为变量名,做成一个模板文本,在代码中动态替换变量,再把指令输出至打印机. ZebraPrintHel ...
最新文章
- 阿里员工吐槽:杭州22k拿到头条35k和shopee33k的offer,怎么选?
- centos6.4下LVS+keepalived的高可用(LVS/DR模式)
- Dataset:fetch_20newsgroups(20类新闻文本)数据集的简介、安装、使用方法之详细攻略
- 性能测试工具_磁盘性能测试工具fio
- win7下不能替换系统文件的解决办法
- 《MySQL——count()逻辑》
- To install 64-bit ODBC drivers
- php cgi漏洞,Nginx + PHP CGI的一个可能的安全漏洞
- 计算机应用基础选择题占多少分,计算机应用基础练习题(选择题部分)..doc
- 什么是CSS网页切图
- 【VRP问题】基于节约算法CW求解带容量的车辆路径规划问题(CVRP)
- 超实用超全 || ZBrush笔刷大合集
- LED显示行业之知识大全3
- java使用nmap工具进行端口扫描,简单学习
- saas、paas、laas 的概念与区别
- Python的堆与优先队列
- 我在windows10下,使用CMake gui 编译krita源码,CMake gui报错:LibMyPaint_DIR-NOTFOUND
- 【NOIP2018提高组D2T2】填数游戏
- 艺赛旗(RPA)相对路径、绝对路径、执行空间、代码空间,傻傻分不清?
- Flex布局常用的一些属性及解释