从Web应用程序直接打印到本地打印机

时间:2015-06-27 19:31:55

标签: c# .net asp.net-mvc-4 windows-services

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

我需要做的事情就像shipstation正在使用SHIPSTATION CONNECT

SHIPSTATION CONNECT

是否使用

之类的流程

REMOTE PRINTER SHARING CODEPROJECT

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

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

提前感谢您的帮助!

问候

3 个答案:

答案 0 :(得分: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

要通过服务器打印它,你有两个解决方案,第一个是调用其他进程来完成它,就像你在这个答案中看到的那样:

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

答案 1 :(得分:1)

检查printnode.com可能会有所帮助。想要做同样的事情你想要的东西。服务不是免费的,或者你可以使用谷歌云打印来构建它。

答案 2 :(得分:0)

实际上有一个库,PrintJS