社区
.NET技术其他语言
帖子详情
C# 如何自动打印 [.NET技术 C#]
dengkuny
2012-12-22 09:59:02
C# 如何自动打印 [.NET技术 C#]
...全文
122
2
打赏
收藏
C# 如何自动打印 [.NET技术 C#]
C# 如何自动打印 [.NET技术 C#]
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cs张
2012-12-23
打赏
举报
回复
楼上的代码强悍~
胡耀文
2012-12-22
打赏
举报
回复
你是指用c#编程?还是问的普通的办公问题?普通办公问题:麻烦你打开“苏州001.doc”,文件->打印->选择好相应城市的打印机->打印编程问题:获取文件名中的城市名你会吧,然后根据城市名得到打印机名(这一步只能你手动设定,比如苏州(城市名)对应打印机名是001,你也可以把对应的打印机名设为城市名 这样就ok了)然后运用打印类: public class RawPrinterHelper { // [Methods] [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, SetLastError = true, ExactSpelling = true)] public static extern bool ClosePrinter(IntPtr hPrinter); [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, SetLastError = true, ExactSpelling = true)] public static extern bool EndDocPrinter(IntPtr hPrinter); [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, SetLastError = true, ExactSpelling = true)] public static extern bool EndPagePrinter(IntPtr hPrinter); [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd); public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, int dwCount) { int dwError = 0; int dwWritten = 0; IntPtr hPrinter = new IntPtr(0); DOCINFOA di = new DOCINFOA(); bool bSuccess = false; di.pDocName = "My C#.NET RAW Document"; di.pDataType = "RAW"; if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero)) { if (StartDocPrinter(hPrinter, 1, di)) { if (StartPagePrinter(hPrinter)) { bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); EndPagePrinter(hPrinter); } EndDocPrinter(hPrinter); } ClosePrinter(hPrinter); } if (!bSuccess) { dwError = Marshal.GetLastWin32Error(); } return bSuccess; } public static bool SendFileToPrinter(string szPrinterName, string szFileName) { FileStream fs = new FileStream(szFileName, FileMode.Open); BinaryReader br = new BinaryReader(fs); byte[] bytes = new byte[fs.Length]; bool bSuccess = false; IntPtr pUnmanagedBytes = new IntPtr(0); int nLength = Convert.ToInt32(fs.Length); bytes = br.ReadBytes(nLength); pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength); Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength); bSuccess = SendBytesToPrinter(szPrinterName, pUnmanagedBytes, nLength); Marshal.FreeCoTaskMem(pUnmanagedBytes); return bSuccess; } public static bool SendStringToPrinter(string szPrinterName, string szString) { int dwCount = szString.Length; IntPtr pBytes = Marshal.StringToCoTaskMemAnsi(szString); SendBytesToPrinter(szPrinterName, pBytes, dwCount); Marshal.FreeCoTaskMem(pBytes); return true; } [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern bool StartDocPrinter(IntPtr hPrinter, int level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di); [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, SetLastError = true, ExactSpelling = true)] public static extern bool StartPagePrinter(IntPtr hPrinter); [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, SetLastError = true, ExactSpelling = true)] public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, int dwCount, out int dwWritten); //Nested Types [StructLayout(LayoutKind.Sequential)] public class DOCINFOA { [MarshalAs(UnmanagedType.LPStr)] public string pDocName; [MarshalAs(UnmanagedType.LPStr)] public string pOutputFile; [MarshalAs(UnmanagedType.LPStr)] public string pDataType; } }这是网上的一个比较标准的打印类,比较好用,直接copy然后:SendFileToPrinter(打印机名,文件名).
免费DataGridView
打印
及
.NET
轻松
打印
控件5.6版(VB
打印
,
C#
打印
)
本DataGridView
打印
控件和
.NET
打印
控件5.6版(含报表模板设计组件)2014年6月22日修改完成,完全免费,在
.NET
2.0及以上环境下都可以使用(VB
打印
、
C#
打印
都是可以的),有帮助文档与使用实例。 与上一版本的5.5版...
免费Spire.XLS: 处理Excel文档in
C#
, VB
.NET
它还支持
C#
, VB
.NET
, ASP
.NET
和 ASP
.NET
MVC编程语言 作为一款专业,强大,方便易用的控件,Spire.XLS for
.NET
有一下主要功能: 新建Excel文件,编辑已有的Excel文件,多种保存Excel方式,设置Excel文件属性,文件...
C#
.net
定时器的简单实现
在
C#
.NET
编程环境中,定时器(Timer)是一个非常实用的组件,用于执行定期的任务或触发事件。这个组件广泛应用于各种场景,例如监控、数据采集、
自动
更新等。本篇文章将深入探讨
C#
.NET
定时器的简单实现及其相关知识...
C#
二维码生成及批量
打印
通过ZXing
.Net
库生成二维码,并结合
.NET
Framework的
打印
服务,可以实现从数据到
打印
的全程
自动
化,这对于物流、仓储、广告等需要大量二维码输出的行业尤为实用。在实际应用中,还可以进一步扩展,例如添加错误校验...
VB
.net
照片
自动
排版,
C#
可用
VB
.net
照片
自动
排版,Devexpress控件使用方法,如何使用瀑布流进行图像计算,图像如何
打印
到
打印
机里面,什么分辨率适合照片
打印
,图像与实际
打印
的计算关系,里面涉及到的项目DCM,DCM_Control,DCM_HttpListen源码另行下载
.NET技术其他语言
1,979
社区成员
12,447
社区内容
发帖
与我相关
我的任务
.NET技术其他语言
.NET技术 其他语言讨论
复制链接
扫一扫
分享
社区描述
.NET技术 其他语言讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章