sethashan 发表于 2015-7-1 16:48:00

Windows Service打印ActiveReport报表

请教斑竹!我在Windows Service里面直接打印,发现打印机没有接收到打印任务。

是否ActiveRepor不支持Windows Service程序打印?还是需要其他的配置?

相关代码如下:                                    
         opt.Run(false);//数据已经填充好   
      string strError = opt.PrintLable(Gps.GetPrinterName());   //执行方法后打印机没反应,也没报错。
                  
      public string PrintLable(string strPrinterName)
      {
            try
            {               
                Document.Printer.PrinterName = strPrinterName;
                Document.Print(false, false, false);
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            return "";
      }

sethashan 发表于 2015-7-1 17:33:00

更简单的:

    //启动服务
      protected override void OnStart(string[] args)
      {
            WriteToLog("服务启动","");
            try
            {
                NewActiveReport2 rpt = new NewActiveReport2();
                rpt.Run();
                rpt.Document.Printer.PrinterName = "pdfFactory Pro";
                rpt.Document.Print(false, false, false);
                WriteToLog("打印成功", "");
            }
            catch (Exception ex)
            {

                WriteToLog("打印出错", ex.Message);
            }
               
      }

日志显示:
服务启动
打印成功

关键是打印机仍然没有反应。

frank.zhang 发表于 2015-7-1 17:35:00

您好,
根据现有代码判断
Document.Print(false, false, false);
是在winforms程序下,打印的方法。

我对您的Windows Service程序理解是一个web程序。这种调用的方式,受到IIS的权限控制。

我这样理解是否正确,欢迎补充。

sethashan 发表于 2015-7-1 17:42:00

回复 3楼frank.zhang的帖子

Windows Service程序是后台程序,就是Services.msc里面跑的什么和SQL服务一类的。
并不是发布到IIS服务器上的Web程序。

这个Print方法我在Web也有用到,提升权限后就可以打印。

也就是在Web、winform下都可以进行ActiveReport,

但是Windows Service好像没有见过打印例子。

我看看Activereport还提供了哪些Print方法吧。

frank.zhang 发表于 2015-7-1 17:51:00

您好,
非常抱歉,我对这个问题,没有理解。
Services.msc的程序,通常会提供一个端口。并且提供相关的使用协议。
您指的直接打印调用 Windows Service程序,这个打印的程序是否也提供一个端口和相关的协议呢?
否则,这个Services.msc的程序怎么知道被调用了呢?

sethashan 发表于 2015-7-1 18:04:00

回复 5楼frank.zhang的帖子

不是打印调用Windows Service程序,是在Windows Service程序里面写了打印功能,
服务一启动,就实现打印功能,类似于winform一运行窗体,就可以打印,Web一运行网站,就可以打印。
难道是服务运行使用的账户权限问题?我调查看看。

frank.zhang 发表于 2015-7-2 09:13:00

您好,问题已经收到,我这边正在帮您处理。请稍后。

sethashan 发表于 2015-7-2 11:06:00

回复 7楼frank.zhang的帖子

感谢斑竹回复,我这边暂时没有进展,查不出是什么问题。
实在不行只能用winform开发,后台运行了。

frank.zhang 发表于 2015-7-2 12:26:00

您好,
这个我会帮您调查一下,由于验证需要时间,会在一个工作日内,给您反馈。请稍候。

qakmak 发表于 2015-7-2 16:10:00

逻辑上应该没什么问题吧. LZ 有检查过权限吗? 以管理员权限启动
页: [1] 2
查看完整版本: Windows Service打印ActiveReport报表