C# WPF 调用打印机的两种方法

最近在调试打印机,为了方便测试写了一个小demo。为了更好的判断是打印机硬件的问题还是动态库的问题,设定了定时器不间断打印来进行测试。现来分享记录一下。

需要调用两种动态库

  1. PdfPrintingNet.dll动态库
  2. 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 调用打印机的两种方法相关推荐

  1. WPF多线程UI更新——两种方法

    WPF多线程UI更新--两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对 ...

  2. zpl java_JAVA调用DLL的两种方法-ZPL中文打印(作者不详,如有冒犯,请联系我)...

    JAVA调用DLL的两种方法 (2008-03-05 17:24:48) 标签: 问题描述: 方法一,使用JNI: public class TestNative { private native s ...

  3. win10共享打印机(连接共享打印机的两种方法,IP地址变化的连接方法)

    一.首先电脑连接打印机,把所连接的打印机设置为共享,如下图所示: 先打开电脑设置,然后点击设备--打印机和扫描仪,打开如下界面 点击管理--打印机属性 ,会出现如下界面 点击共享,把共享打印机那里勾上 ...

  4. xlwings库 ==> Python调用VBA 的两种方法

    之前被问到,Python 很强大,但是需要单独安装,而VBA是office自带的, 那么两者结合的话,如何用Python调用VBA呢? 代码如下(其中 A 是测试文件 宏的名字): VBA代码: Su ...

  5. asp.net远程调用WebService的两种方法

    一,静态方法 在"解决方案'项目名'" -> 相应的文件夹,如"Web References" ->右键"添加WEB引用"-&g ...

  6. 帝国cms数据库php调用tag,帝国CMS列表内容模板调用TAG的两种方法

    方法1. /* 列表页显示tag 开始*/ $tagstr=''; $tsql=$empire->query("select tagid from {$dbtbpre}enewstag ...

  7. java调用打印机的两种方式

    一.用java中自带的PrintServiceLookup实现 import javax.imageio.ImageIO; import javax.print.*; import javax.pri ...

  8. js php调用webservice,php调用web services两种方法soap和curl

    以http://www.webxml.com.cn/zh_cn/index.aspx 一.使用soap调用 //服务器支持soap扩展: /*Example 1: $client = new Soap ...

  9. VBA调用DOS程序两种方法

    Set wsh = VBA.CreateObject("WScript.Shell")'wsh.Run strExePath & " g", vbHid ...

最新文章

  1. 黑科技抗疫,Python开发者大集结!
  2. Android小知识-电量优化WakeLock的使用
  3. EBB-11、Linux启动流程
  4. 分享超全的 Linux 渗透测试命令速查表
  5. 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
  6. 无需Root也能Hook?——Depoxsed框架演示
  7. java抽象类和模板模式_测试抽象类和模板方法模式
  8. (3.4)HarmonyOS鸿蒙滑动事件三个动作
  9. Qt实现对json文件的解析
  10. 按群计数10以内_【乐玩乐学】有趣的计数活动
  11. Mysql的七种表类型
  12. php 面向接口,php开发app接口
  13. Protable 自定义添加搜索栏和toolbar
  14. Rust : CTP中交互中字符串及处理
  15. 蓝桥杯c语言试题 历届真题 天干地支【第十一届】【决赛】【A组】
  16. 魅族android密码,魅族手机Flyme账户密码或密保忘记解决办法
  17. switch 连接 LG 48GQ900 没有声音
  18. java中怎样显示图片_[Java教程]Java中显示图片的方法
  19. 微波链路视距(Line of Sight,LOS)传播勘测
  20. Prometheus时序数据库-磁盘中的存储结构

热门文章

  1. KaLi Linux WiFi密码破解
  2. 数据猿专访昆仑数据CEO陆薇:工业互联网是“有墙花园”,“平地起高楼”不是其路径,厚积薄发才是
  3. Java使用FreeMarker导出word
  4. Scrapy----安装及基础案例
  5. override关键字
  6. ansible的任务执行控制(循环、条件判定、触发器、处理失败任务)
  7. 计算机应用软件操作,计算机应用软件正确操作规范
  8. verilog除法器设计
  9. 微信公众平台消息接口开发---快递查询
  10. 域名注册的起名经验交流