nssm-关于C#调用打印机异常问题

问题描述

关于C#调用打印机异常问题

项目介绍:在客户那边有一个平台,是通过web浏览器去访问的,我主要做的就是在客户端提供一个服务程序,然后让他们的平台调用我的服务程序的url来完成各种相关的数据处理。我用的是C#和nancy,做的是控制台的项目,然后用nssm弄成windows服务,服务目前其他各项处理都没问题,除了这个打印的功能。打印的这一块存在问题,我在xamarin和vs里面进行运行或调试的时候打印功能一切正常,但是使用nssm装成windows服务以后就开始报异常,异常的详细信息如下:System.Drawing.Printing.InvalidPrinterException: No printers are installed. at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal() at System.Drawing.Printing.PrinterSettings.GetHdevmode(PageSettings pageSettings) at System.Drawing.Printing.PrintController.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Drawing.Printing.PrintController.Print(PrintDocument document) at System.Drawing.Printing.PrintDocument.Print() at AliAssetTagger.Services.AssetCardService.PrintUserdata(UserData userdata) in c:UsersglgstwpDesktopGloit2015-07-281.1.0ali-asset-taggerali-asset-taggerali-asset-taggerali-asset-taggerServicesAssetCardService.cs:line 105
我的打印部分的代码是
public string Print (UserData userdata)
{

try{

userdataToPrint = userdata;

PrintDocument pd = new PrintDocument ();

pd.PrintPage += new PrintPageEventHandler (pd_PrintPage);

pd.Print (); //异常指向的就是这一行
}

catch(Exception e) {

return e.ToString ();

}

return "打印完成!";

}

public void pd_PrintPage (object sender, System.Drawing.Printing.PrintPageEventArgs e)

{ Console.WriteLine ("打印ing");

try {

//通过GDI+绘制打印文档

e.Graphics.DrawString ("广西国税", new Font ("宋体", 8), Brushes.Black, 90, 0);

e.Graphics.DrawString ("广西壮族自治区税务厅", new Font ("宋体", 4), Brushes.Black, 90, 12);

e.Graphics.DrawLine (new Pen (Color.Black, (float)1.00), 90, 18, 200, 18);

e.Graphics.DrawString ("XX市XX县(区)国家税务局", new Font ("宋体", 7), Brushes.Black, 90, 22);

e.Graphics.DrawLine (new Pen (Color.Yellow, (float)5.00), 0, 39, 300, 39);

e.Graphics.DrawString ("资产编号: " + userdataToPrint.asset_No, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 55);

e.Graphics.DrawString ("资产名称: " + userdataToPrint.asset_Name, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 80);

e.Graphics.DrawString ("规格型号: " + userdataToPrint.specification_Model, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 105);

e.Graphics.DrawString ("使用部门: " + userdataToPrint.department, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 130);

e.Graphics.DrawString ("使用人: " + userdataToPrint.responsible, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 155);

e.Graphics.DrawString ("购置日期: " + userdataToPrint.purchased_On, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 180);

Console.WriteLine ("打印结束");

}
catch (Exception ex) {

MessageBox.Show (ex.ToString ());

}

}

我在网上也看到了很多No printers are installed的异常,但是并不是没有安装打印机驱动,在电脑上的打印机和传真那里可以看到很多的打印机和传真,在xamarin studio或者visual studio里面都是正常的,没有异常输出,能够正确打印,但是一装成windows服务就不行,是不是弹窗的原因?我知道nssm装服务的时候有弹窗是不成功不允许的,但是调用打印机的时候怎么做才能不闪出任何打印机相关的窗口呢?我上面的代码已经是直接使用默认的打印机打印了,但是运行的时候还是会有一个窗口在任务栏闪一下,应该是打印机的相关的。请各位帮帮忙,感激不尽!项目很急,我刚毕业,公司没人可以帮到我,万能的网友,拜托了!

解决方案

求助C#调用C++dll异常解决

解决方案二:

添加一个虚拟打印机,比如acrobat或者随便添加一个打印机看看

解决方案三:

InvalidPrinterException: No printers are installed,这里提示没有安装打印机,你查看一下你的电脑安装了打印机驱动没有,后者确保打印机好的,能够工作的。
C#调用打印机

解决方案四:

大概看了一看,初步估计不是你代码的问题,而是机器的问题,也就是说你安装的打印机是不是有问题还是安装错误,或者没有安装。。 ;
如何还是不行,换一台电脑试试,还是不可以建议尝试换一种方式来实现;

时间: 2024-09-09 11:00:20

nssm-关于C#调用打印机异常问题的相关文章

使用smsx.cab做web打印,调用打印机出现问题

问题描述 执行"factory.printing.Print(false);"没有调用打印机,而且浏览器出现卡顿....求大神帮忙解决代码如下:<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%@pageimport="com.thinkgem.jeesite.sinosoft.entity.New_Apply_Inf

activex-java调用ocx异常,com.jacob.com.ComFailException

问题描述 java调用ocx异常,com.jacob.com.ComFailException public static void main(String[] args) { ActiveXComponent activeX = new ActiveXComponent(CLSID:{EB10EB14-149D-4287-9139-07420E9D6EF9}""); System.out.println(""11"");} ocx文件注册成功,

dubbo调用时报异常channel is closed

问题描述 dubbo调用时报异常channel is closed DUBBO服务消费方调用时报如下异常,一般是什么原因导致的? com.alibaba.dubbo.remoting.RemotingException: message can not send, because channel is closed 解决方案 OK了 原来是网络不通 从服务消费方到服务提供方网络问题

JS调用打印机功能简单示例_javascript技巧

本文实例讲述了JS调用打印机功能的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g

api-java调用打印机的API打印word文档

问题描述 java调用打印机的API打印word文档 打印word文档的话需要怎么设置!我现在这样,如果是txt文件没有问题,如果是docx则是乱码.

本地调用打印机 ok 本地通过WebService调用本地打印机报错

问题描述 打印同一个文件本地调用打印机可以本地通过WebService调用本地打印机报错tomcat服务器 j2ee应用应用是前辈部署,有谁知道应该在哪里设置 解决方案 首先确保WebService有没有被调到(可以考虑远程Debug,或加日志信息等).在确认被调到后,判断错误信息,是不是拒绝访问,如果是,问题就出在访问权限上了,即本地调用时具有print的权限,而WebService的用户不具有权限.

ibm jdk1.6 + jboss 调用cxf异常

问题描述 最近项目时,调用cxf异常,环境信息如下:ibmjdk1.6+jboss+cxf,本地生成客户端代码,调用时报异常,异常信息如下:javax.xml.ws.WebServiceException:org.apache.cxf.service.factory.ServiceConstructionException:Failedtocreateservice.atorg.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)a

c# 调用打印机

1.本地打印机 //添加引用并using System.Management; public static void AvailablePrinters() { ManagementScope ms = new ManagementScope(ManagementPath.DefaultPath); ms.Connect(); SelectQuery sq = new SelectQuery(); sq.QueryString = @"SELECT Name FROM Win32_Printer

com调用ActiveX异常 com本身不报错

问题描述 从vb6.0移植到vb.net的一个画面,运行时异常InvalidOperationException报activex的windowHandle取不到.于是把debug属性的"EnabletheVisualStudiohostingprocess"选项取消后,可以正常运行.对这个选项的作用不是很理解,谁可以告诉我,为什么把勾去掉就不报错?但是问题是,作为com组件注册后,在被其他画面调用时,之前的异常又出现了,是什么原因?以下是调用代码DimoSyohinFindAsObje