社区
.NET技术其他语言
帖子详情
C# 如何自动打印 [.NET技术 C#]
dengkuny
2012-12-22 09:59:02
C# 如何自动打印 [.NET技术 C#]
...全文
162
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(打印机名,文件名).
C#
/
.NET
/
.NET
Core
技术
前沿周刊 | 第 42 期(2025年6.9-6.15)
在 EF 6 及其之前的版本数据库优先模式(Database First)是可以在 Visual Studio 中通过可视化界面来操作完成的,但是到了 EF Core 之后就不再支持了(因为模型格式 EDMX (XML) 在 EF Core中未实现),今天大姚给大家分享一款在 EF Core 命令行工具的基础上构建的适用于 Visual Studio 2022 中的 EF Core 反向工程和模型可视化扩展插件:EF Core Power Tools。
C#
CAD二次开发实战:如何精准设置DWG区域
打印
PDF(附完整代码)
本文详细介绍了
C#
CAD二次开发中如何精准设置DWG区域
打印
PDF的完整解决方案。通过实战代码演示,讲解了从环境配置、核心
打印
功能实现到坐标转换等关键步骤,帮助开发者高效完成CAD图纸的精确输出。特别针对区域
打印
这一核心需求,提供了完整的代码示例和常见问题解决方案。
C#
实战:如何用BarTender 10.0 SDK实现
自动
化标签
打印
(附完整代码)
本文详细介绍了如何使用
C#
和BarTender 10.0 SDK实现
自动
化标签
打印
的全流程。从环境配置、核心API使用到标签模板处理与动态数据绑定,再到
打印
任务管理与错误处理,提供了完整的代码示例和最佳实践,帮助开发者快速构建稳定可靠的
打印
系统。
C#
集成BarTender与斑马
打印
机:从数据库到标签的
自动
化
打印
实战
本文详细介绍了如何使用
C#
集成BarTender与斑马
打印
机实现从数据库到标签的
自动
化
打印
解决方案。通过环境搭建、数据库设计、模板配置及
C#
代码实现,帮助开发者高效完成工业级标签
打印
任务,提升生产效率和准确性。
C#
资源管理器全面功能实践教程
C#
(读作”看井”)是一种由微软公司开发的面向对象的编程语言,它简洁、类型安全,同时具备现代语言的所有特性。
C#
最初随着
.NET
平台在2002年发布,旨在提供一种简单、现代、面向对象、类型安全的编程语言。它融合了诸如C++的表达能力和Visual Basic的易用性。随着其版本的不断演进,
C#
已经成为开发Windows应用程序的首选语言之一,并且在跨平台开发领域也取得了长足的进步。
C#
的设计哲学强调开发者体验和生产力,它的语法清晰明了,便于阅读和维护。
.NET技术其他语言
1,979
社区成员
12,447
社区内容
发帖
与我相关
我的任务
.NET技术其他语言
.NET技术 其他语言讨论
复制链接
扫一扫
分享
社区描述
.NET技术 其他语言讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章