从服务器下载后打印pdf文件

Posted

技术标签:

【中文标题】从服务器下载后打印pdf文件【英文标题】:Print pdf file after downloaded from the server 【发布时间】:2018-10-11 03:28:13 【问题描述】:

我需要自动打印生成的pdf文件。首先,我在生成pdf文件后将其保存到服务器,然后将其下载到客户端计算机。我需要打印从客户端机器下载的 pdf 文件。有没有办法获得下载后保存pdf文件的确切位置文件?有没有办法可以使用客户端/本地打印机直接打印 pdf 文件?目前,我使用的是 spire pdf,问题是它使用服务器的打印机,我需要修复它以使用客户端/本地打印机。

代码:

window.location.href = "/Orders/Download?file=" + encodeURIComponent(data.fileName);

控制器:

[HttpGet]
[DeleteFileAttribute] //Action Filter, it will auto delete the file after download
public ActionResult Download(string file)

   //get the temp folder and file path in server
   string fullPath = Path.Combine(Server.MapPath("~/Content/PDF"), file);

   try
   
       PdfDocument doc = new PdfDocument();
       doc.LoadFromFile(fullPath);
       doc.PrinterName = "HP Deskjet Ink Adv 2010 K010";
       //Use the default printer to print all the pages
       doc.PrintDocument.Print();
   
   catch (Exception e)
   
       var message = e.Message;
   

   return File(fullPath, "application/pdf", file);

是这个代码吗,它将pdf文件下载到客户端/用户下载或用户设置下载位置的位置,它也会打印,但是它使用服务器的打印机,这是问题所在。

【问题讨论】:

简短回答 - 不。您无法控制客户端浏览器或其打印机。 有没有办法获得下载 pdf 的用户的下载位置? 没有。您无权访问客户端文件系统 有没有其他方法可以自动打印 pdf 文件? 否(这是幸运的,因为如果可以,网络就不会存在)。但我不明白你为什么要这样做。如果您导航到某个站点并且您的打印机刚刚开始打印文档,您会怎么想。 【参考方案1】:

我认为这在现代浏览器中是不可能的。

我看到的大多数解决方案(here 和 there)都依赖于加载和打印的嵌入式 PDF。 然而,iframe 现在是沙盒化的,而且由于 PDF 通常依赖于原生插件,所以你很不走运:plugins will not load - 你无法改变它。

这是产生错误的示例代码:

未能将“..sample.pdf”作为插件加载,因为框架进入 正在加载的插件是沙盒的。

$('#pdfDocument').attr("src", "https://upload.wikimedia.org/wikipedia/commons/8/85/I-20-sample.pdf").load(function()
    document.getElementById('pdfDocument').contentWindow.print();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<embed sandbox="allow-top-navigation allow-scripts allow-popups allow-forms"
type="application/pdf"
src="https://upload.wikimedia.org/wikipedia/commons/8/85/I-20-sample.pdf"
id="pdfDocument"

 />

【讨论】:

以上是关于从服务器下载后打印pdf文件的主要内容,如果未能解决你的问题,请参考以下文章

PHP将docx文件转换为pdf

Android PDF 从内部存储打开后立即关闭

提供 PDF 下载后自动打开打印机对话框

pdf文件太大怎么变小如何调整

怎么将html转换为pdf

如何将pdf文档设置为不能打印