2015-06-27 193 views
7

我的要求是打印PDF格式的发票直接从本地打印机从在.net mvc框架开发的Web应用程序。打印从Web应用程序直接打印到本地打印机

我需要确切不喜欢shipstation与SHIPSTATION CONNECT

SHIPSTATION CONNECT

做是否使用过程像

REMOTE PRINTER SHARING CODEPROJECT

或使用WMI库远程共享打印机。

任何专家的想法都会帮助我和我的程序员构建解决方案。我不希望代码或勺子喂食,但想知道在正确的方向开始这个过程和方法。

在此先感谢您的帮助!

问候

+0

我试图在栈中搜索解决方案,并没有找到任何解决方案附近this.There有一些Java的例子,但我需要专家意见的C#来实现这一目标。 – sunny

+0

打印机连接在哪里?到服务器或客户端? – Proxytype

+0

本地连接到客户端的打印机。但是一旦从本地打印机打印的Web应用程序按下打印按钮。 – sunny

回答

1

你可以写从本地打印机打印javascript函数,

w=window.open(); 
w.document.open(); 
w.document.write("<html><head></head><body>"); 
w.document.write("HI"); 
w.document.write("</body></html>"); 
w.document.close(); 
w.print(); 
w.close(); 

工作示例:

http://jsfiddle.net/xwgq5ap4/

,如果你想从你需要将服务器打印发送服务器请求例如: www.mysite.com/print.aspx?file=invoice.pdf

服务器打印出来,你有2个解决方案,第一种是打电话给其他进程来完成它就像你可以在这个答案,请参阅:

Print Pdf in C#

二是编写使用的PrintDocument自己的实现命名空间,例如:

namespace PrintPDF 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      PdfDocument doc = new PdfDocument(); 
      doc.LoadFromFile("sample.pdf"); 

      //Use the default printer to print all the pages 
      //doc.PrintDocument.Print(); 

      //Set the printer and select the pages you want to print 

      PrintDialog dialogPrint = new PrintDialog(); 
      dialogPrint.AllowPrintToFile = true; 
      dialogPrint.AllowSomePages = true; 
      dialogPrint.PrinterSettings.MinimumPage = 1; 
      dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count; 
      dialogPrint.PrinterSettings.FromPage = 1; 
      dialogPrint.PrinterSettings.ToPage = doc.Pages.Count; 

      if (dialogPrint.ShowDialog() == DialogResult.OK) 
      { 
       doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage; 
       doc.PrintToPage = dialogPrint.PrinterSettings.ToPage; 
       doc.PrinterName = dialogPrint.PrinterSettings.PrinterName; 

       PrintDocument printDoc = doc.PrintDocument; 
       dialogPrint.Document = printDoc; 
       printDoc.Print(); 
      } 

     } 
    } 
} 

原来从free 3rd party library

+0

非常感谢您的努力。它没有像我们想要的那样工作。我们要求将PDF文件直接打印到本地打印机,而无需在浏览器或隐藏窗格中打开文件。它应该像shiptation所实现的桌面打印一样。您可以在此处看到HTTP://help.shipstation。com/customer/portal/articles/1818589 – sunny

+0

我们在发布本文和我们已经尝试过的示例提供的示例之前,彻底搜索了stackoverflow。 – sunny

+0

在你的例子中,你必须点击打印按钮来最终打印。我们不需要额外的步骤。只需要通过与shipstation.Station一样的通过,就像桌面打印一样。 – sunny

0

校验PR采取intnode.com可能有一些帮助。看起来像做同样的事情你想要的。该服务不是免费的,或者你可以使用谷歌云打印建立相同的。