【问题标题】:Printing PDF documents from an ASP.NET core web application从 ASP.NET 核心 Web 应用程序打印 PDF 文档
【发布时间】:2021-06-06 23:59:18
【问题描述】:

我正在使用以下方法打印我的 PDF 文档。它可以在我的本地机器上完美运行。但是,一旦我上传到网络服务器,就会出现打印错误。我怀疑这是路径,但我不知道出了什么问题? 任何帮助表示赞赏,因为我很快就会求助于拉我的头发!!

经过进一步调查,我发现我需要分配一个默认的本地打印机。 我的代码正在寻找网络服务器打印机。任何人都可以提供帮助吗? 从 Web 应用程序打印时我应该注意什么? 我已经在最终用户机器上设置了默认打印机,但仍然从该代码中得到错误? 我还需要在打印前显示打印对话框。

最后,我们可以从 ASP.NET .core Web 应用程序打印到本地打印机吗?还是他们都必须在同一个网络上?

谢谢。

private void PrintEntireCatologue()
{
    var RowsData = DataGrid.CurrentViewData;
 
    foreach (ClientDoc row in RowsData)
    {
            var PdfToPrint =  row.DocPathAzure; /*get file name from database*/
            var doctoprint = @".\wwwroot\Pdfdocs" + PdfToPrint; /*Get directory path*/
            PdfDocumentProcessor documentProcessor = new PdfDocumentProcessor();
            documentProcessor.LoadDocument(doctoprint);
            PdfPrinterSettings pdfPrinterSettings = new PdfPrinterSettings();
            pdfPrinterSettings.PageOrientation = PdfPrintPageOrientation.Portrait;
            documentProcessor.Print(pdfPrinterSettings);

    }
    toastService.ShowSuccess("Printing Complete.");
}

【问题讨论】:

  • 你能更清楚地描述 webapp 和打印机的位置吗?似乎您有一台运行 web 应用程序的服务器,以及一台具有默认打印机的最终用户 PC,并且您想将 PDF 从服务器打印到最终用户 PC 的打印机?
  • 您能确认几件事吗? 1.在本地运行意味着更多地在调试或部署在 IIS 2.托管在 Web 服务器上 - 这是否意味着在 IIS 3. 是 .Net 核心还是 .Net 框架 - 如果 .Net 核心是“进程中”托管?
  • @neohope 是的,你明白了!在此期间,我的 ISP (smarterasp.net) 通知我在这些情况下不允许打印。必须先下载文档,然后在客户端上打印。我有时要打印 1000 个(巨大的目录),所以我正在寻找一键单击的解决方案。似乎唯一的方法是将它们全部压缩,然后下载 zip 文件并在客户端 PC 上安装一个实用程序。
  • @mbshambharkar 这是一个 Blazor 服务器应用程序。在本地运行时,我通过 Visual Studio 2019 运行它,但它与打印机在同一个网络上,所以它可以工作。

标签: .net asp.net-core printing


【解决方案1】:

它在本地为您工作,因为该命令正在您的机器上运行。部署应用程序时,该命令在服务器上运行。您的 C# 代码永远不会到达客户端;代码在构建时进行编译,甚至 Blazor 页面在发送到客户端之前也在服务器端进行编译。除非您可以使用客户端访问客户端的打印机,否则无法直接从服务器打印。

我建议您创建一段 JavaScript,从服务器下载文件,然后访问客户端上的打印机。

【讨论】:

    【解决方案2】:

    有几种方法可以做到这一点,例如

    1. 云打印服务

    将文档发送到云端。您的客户可以在任何地方打印。

    1. 文档服务器 + 脚本

    将文档发送到文档服务器。在客户的PC上,创建一个cron作业,不时检查服务器,下载然后文档,将文档发送到打印机。

    1. 文档服务器 + 最终用户打印实用程序

    将您的文档发送到文档服务器。打印实用程序会不时检查服务器,下载然后文档,将文档发送到打印机。

    1. 文档服务器 + 网站

    将您的文档发送到文档服务器。最终用户登录您的网站,点击打印。然后用js打印你的文档。

    无论如何,您需要一个服务器来存储文档,以及一个实用程序来获取文档并将文档发送到最终用户的打印机。

    【讨论】:

    • 有时您需要考虑您的要求。如果我创建了一个自动发送 10,000 页文件到您的打印机的 Web 应用程序会怎样。我敢打赌你不会高兴的。这样的事情不起作用或不能起作用是有原因的。
    • @kevinBrown 真的吗?该系统的所有用户都是预付一年的付费客户。他们打印的文档仅限于提供的文档,因此无法发送“10,000”页文档。其次,这将立即禁止系统,他们将失去付款。
    • @neohope 感谢您的提醒。是的,这似乎是唯一的出路。我将在 Azure 上获得一个 VPS,它可以让我控制整个机器。
    猜你喜欢
    • 2013-07-06
    • 1970-01-01
    • 2018-05-14
    • 2010-10-12
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    相关资源
    最近更新 更多