【问题标题】:Print Direct from Web application to local printer从 Web 应用程序直接打印到本地打印机
【发布时间】:2015-09-14 13:28:20
【问题描述】:

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

我需要像 shipstation 一样使用 SHIPSTATION CONNECT 进行操作

SHIPSTATION CONNECT

是否使用类似

的流程

REMOTE PRINTER SHARING CODEPROJECT

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

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

提前感谢您的帮助!

问候

【问题讨论】:

  • 我试图在堆栈中搜索解决方案,但没有找到任何解决方案。有一些 java 示例,但我需要 c# 的专家观点来实现这一点。
  • 打印机连接在哪里?到服务器还是客户端?
  • 打印机本地连接到客户端。但是一旦从本地打印机打印的 Web 应用程序按下打印按钮。
  • 只能使用浏览器打印...
  • 我知道基于浏览器的打印。这需要额外的步骤来打印,比如按下按钮打印或其他东西。但是如果你看到 shipstation 的链接,他们会绕过这个额外的步骤,并将直接打印发送到打印机客户端。什么他们要求用户在本地机器上安装 CONNECT SOFTWARE。这与 Web 应用程序共享本地打印机。

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


【解决方案1】:

检查 printnode.com 可能会有所帮助。似乎在做你想做的事情。该服务不是免费的,或者你可以使用谷歌云打印来构建。

【讨论】:

【解决方案2】:

您可以编写从本地打印机打印的 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

【讨论】:

  • 感谢您的努力。它没有像我们想要的那样工作。我们要求将 PDF 文件直接打印到本地打印机,而无需在浏览器或隐藏窗格中打开文件。它应该像桌面打印一样实现通过shiptation。你可以在这里看到help.shipstation.com/customer/portal/articles/1818589
  • 在发布此内容之前,我们在 stackoverflow 上进行了彻底搜索,我们已经尝试过您提供的示例。
  • 在您的示例中,必须单击打印按钮才能最终打印。我们不需要额外的步骤。只需像 shipstation 那样绕过它。需要像桌面打印一样。跨度>
  • PrintDocument 是您需要的解决方案msdn.microsoft.com/en-us/library/…
  • 感谢这两种方法。我将由我的程序员对此进行测试,并在周一回复你它是如何工作的,我将在此发布我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 2023-03-17
  • 2014-05-30
  • 1970-01-01
相关资源
最近更新 更多