从ASP.NET核心web应用程序打印PDF文档

从ASP.NET核心web应用程序打印PDF文档,.net,asp.net-core,printing,.net,Asp.net Core,Printing,我正在使用以下方法打印我的PDF文档。它在我本地的机器上运行得很好。但一旦我上传到Web服务器,我就会在打印时出错。我怀疑这是条路,但我不知道出了什么问题? 感谢您的帮助,因为我很快就要拔掉头发了 经过进一步调查,我发现我需要分配一个默认的本地打印机。 我的代码正在寻找web服务器打印机。有人能帮忙吗? 从web应用程序打印时,有什么我应该注意的吗? 我已在最终用户计算机上设置了默认打印机,但仍从该代码中获取错误? 我还需要在打印之前显示打印对话框 最后,我们可以从ASP.NET.core we

我正在使用以下方法打印我的PDF文档。它在我本地的机器上运行得很好。但一旦我上传到Web服务器,我就会在打印时出错。我怀疑这是条路,但我不知道出了什么问题? 感谢您的帮助,因为我很快就要拔掉头发了

经过进一步调查,我发现我需要分配一个默认的本地打印机。 我的代码正在寻找web服务器打印机。有人能帮忙吗? 从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.");
}

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


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

  • 云打印服务
  • 将文档发送到云。你的客户可以在任何地方打印

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

  • 文档服务器+最终用户打印实用程序
  • 将文档发送到文档服务器。打印实用程序不时检查服务器,然后下载文档,将文档发送到打印机

  • 文档服务器+网站
  • 将文档发送到文档服务器。最终用户登录您的网站后,单击“打印”。然后使用js打印文档


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

    您能更清楚地描述一下webapp和打印机的位置吗?似乎您有一台运行Web应用程序的服务器和一台具有默认打印机的最终用户PC,并且您希望将PDF从服务器打印到最终用户PC的打印机上?请您确认几件事好吗?1.在本地运行意味着调试更多或部署在IIS 2中。托管在web服务器上-这是否意味着在IIS 3上。是.Net core还是.Net framework?如果.Net core是“进程中”托管?@neohope是的,你明白了!在此期间,我的ISP(smarterasp.net)通知我,在这种情况下不允许打印。必须先下载文档,然后在客户端上打印。我有时要打印1000个(巨大的目录),所以我正在寻找一个只需点击一个按钮的解决方案。似乎唯一的方法是将它们全部压缩,然后下载ZIP文件,并在客户端PC上安装一个实用程序来完成这项工作。@mbshambharkar这是一个Blazor服务器应用程序。在本地运行时,我通过Visual studio 2019运行它,但它与打印机在同一个网络上,所以它工作正常。有时你需要考虑一下你的问题。如果我创建了一个web应用程序,自动向您的打印机发送一个10000页的文件,该怎么办。我打赌你不会高兴的。这些事情不起作用或不起作用是有原因的。@kevinBrown真的吗?该系统的所有用户都是预付一年费用的客户。他们打印的文档仅限于提供的文档,因此无法发送“10000”页的文档。第二,这将立即禁止该系统,他们将失去他们的付款。”neohope感谢你的提醒。是的,这似乎是唯一的出路。我将在Azure上获得一个VPS,它将允许我控制整个机器。