C# WPF 调用打印机的两种方法
C# WPF 调用打印机的两种方法
最近在调试打印机,为了方便测试写了一个小demo。为了更好的判断是打印机硬件的问题还是动态库的问题,设定了定时器不间断打印来进行测试。现来分享记录一下。
需要调用两种动态库
- PdfPrintingNet.dll动态库
- O2S.Components.PDFRender4NET.dll and O2S.Components.PDFView4NET.dll方法引用。直接调用路径
动态库和demo都会上传到资源里,以便大家参考。
这里是用的三星打印机,各位如果需要自己装驱动。亲测可用
using PdfPrintingNet;
using System;
using System.Timers;
using System.Windows;
using System.Drawing.Printing;
using System.Diagnostics;
using System.Collections.Specialized;
using O2S.Components.PDFRender4NET;namespace WpfApp1
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public System.Timers.Timer timer = new System.Timers.Timer();//定时器的引用string pathe = AppDomain.CurrentDomain.BaseDirectory + "1.pdf";//物理路径 直接到Debug下PdfPrint pdfprint = new PdfPrint("", "");public MainWindow(){InitializeComponent();//定时器调用循环timer.Interval = 1000*20;//这里设置的间隔时间为毫秒timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);//执行方法timer.AutoReset = true;//设置timer_Elapsed是执行一次(false)还是一直执行(true)timer.Enabled = true;timer.Start();}//方法一------O2S.Components.PDFRender4NET.dll and O2S.Components.PDFView4NET.dll方法引用。直接调用路径private int printShow(string url){int isOK = 0;PDFFile file = PDFFile.Open(url);PrinterSettings settings = new PrinterSettings();System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();//settings.PrinterName = "hp LaserJet 1160 PCL 5e"; 打印机的型号settings.PrintToFile = false;//设置纸张大小(可以不设置,取默认设置)3.90 in, 8.65 inPaperSize ps = new PaperSize("test", 4, 9);ps.RawKind = 9; //如果是自定义纸张,就要大于118,(A4值为9,详细纸张类型与值的对照请看http://msdn.microsoft.com/zh-tw/library/system.drawing.printing.papersize.rawkind(v=vs.85).aspx)O2S.Components.PDFRender4NET.Printing.PDFPrintSettings pdfPrintSettings = new O2S.Components.PDFRender4NET.Printing.PDFPrintSettings(settings);pdfPrintSettings.PaperSize = ps;pdfPrintSettings.PageScaling = O2S.Components.PDFRender4NET.Printing.PageScaling.FitToPrinterMarginsProportional;pdfPrintSettings.PrinterSettings.Copies = 1;try{file.Print(pdfPrintSettings);isOK = 1;}catch (Exception){isOK = -1;throw;}finally{file.Dispose();}return isOK;}/// <summary>/// 按钮单击事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Button_Click(object sender, RoutedEventArgs e){pdfPrint(pathe);}///方法二 打开WPS的直接打印 自动打开关闭private void pdfPrint(string filePath){PrintDocument pd = new PrintDocument();Process p = new Process();ProcessStartInfo startInfo = new ProcessStartInfo();startInfo.CreateNoWindow = true;startInfo.WindowStyle = ProcessWindowStyle.Maximized;startInfo.UseShellExecute = true;startInfo.FileName = filePath;startInfo.Verb = "print";startInfo.Arguments = @"/p /h \" + filePath + "\"\"" + pd.PrinterSettings.PrinterName + "\"";p.StartInfo = startInfo;p.Start();p.WaitForExit();}/// <summary>/// 倒计时结束/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void timer_Elapsed(object sender, ElapsedEventArgs e){// pdfprint.Print(pathe); //PdfPrint打印 printShow(pathe);}}
}
C# WPF 调用打印机的两种方法相关推荐
- WPF多线程UI更新——两种方法
WPF多线程UI更新--两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对 ...
- zpl java_JAVA调用DLL的两种方法-ZPL中文打印(作者不详,如有冒犯,请联系我)...
JAVA调用DLL的两种方法 (2008-03-05 17:24:48) 标签: 问题描述: 方法一,使用JNI: public class TestNative { private native s ...
- win10共享打印机(连接共享打印机的两种方法,IP地址变化的连接方法)
一.首先电脑连接打印机,把所连接的打印机设置为共享,如下图所示: 先打开电脑设置,然后点击设备--打印机和扫描仪,打开如下界面 点击管理--打印机属性 ,会出现如下界面 点击共享,把共享打印机那里勾上 ...
- xlwings库 ==> Python调用VBA 的两种方法
之前被问到,Python 很强大,但是需要单独安装,而VBA是office自带的, 那么两者结合的话,如何用Python调用VBA呢? 代码如下(其中 A 是测试文件 宏的名字): VBA代码: Su ...
- asp.net远程调用WebService的两种方法
一,静态方法 在"解决方案'项目名'" -> 相应的文件夹,如"Web References" ->右键"添加WEB引用"-&g ...
- 帝国cms数据库php调用tag,帝国CMS列表内容模板调用TAG的两种方法
方法1. /* 列表页显示tag 开始*/ $tagstr=''; $tsql=$empire->query("select tagid from {$dbtbpre}enewstag ...
- java调用打印机的两种方式
一.用java中自带的PrintServiceLookup实现 import javax.imageio.ImageIO; import javax.print.*; import javax.pri ...
- js php调用webservice,php调用web services两种方法soap和curl
以http://www.webxml.com.cn/zh_cn/index.aspx 一.使用soap调用 //服务器支持soap扩展: /*Example 1: $client = new Soap ...
- VBA调用DOS程序两种方法
Set wsh = VBA.CreateObject("WScript.Shell")'wsh.Run strExePath & " g", vbHid ...
最新文章
- 黑科技抗疫,Python开发者大集结!
- Android小知识-电量优化WakeLock的使用
- EBB-11、Linux启动流程
- 分享超全的 Linux 渗透测试命令速查表
- 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
- 无需Root也能Hook?——Depoxsed框架演示
- java抽象类和模板模式_测试抽象类和模板方法模式
- (3.4)HarmonyOS鸿蒙滑动事件三个动作
- Qt实现对json文件的解析
- 按群计数10以内_【乐玩乐学】有趣的计数活动
- Mysql的七种表类型
- php 面向接口,php开发app接口
- Protable 自定义添加搜索栏和toolbar
- Rust : CTP中交互中字符串及处理
- 蓝桥杯c语言试题 历届真题 天干地支【第十一届】【决赛】【A组】
- 魅族android密码,魅族手机Flyme账户密码或密保忘记解决办法
- switch 连接 LG 48GQ900 没有声音
- java中怎样显示图片_[Java教程]Java中显示图片的方法
- 微波链路视距(Line of Sight,LOS)传播勘测
- Prometheus时序数据库-磁盘中的存储结构