Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将PDF文件列表打印到客户端';打印机_Javascript_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript 将PDF文件列表打印到客户端';打印机

Javascript 将PDF文件列表打印到客户端';打印机,javascript,c#,asp.net,asp.net-mvc,Javascript,C#,Asp.net,Asp.net Mvc,我正在编写一个web应用程序,该应用程序将生成一系列PDF文件: public JsonResult BulkPrintExemptions() { List<FileContentResult> retValues = new List<FileContentResult>(); var results = db.Permits.Where(m => m.Year == DateTime.Now.Ye

我正在编写一个web应用程序,该应用程序将生成一系列PDF文件:

public JsonResult BulkPrintExemptions()
        {
            List<FileContentResult> retValues = new List<FileContentResult>();
            var results = db.Permits.Where(m => m.Year == DateTime.Now.Year).Where(e => e.RecordDeleted == false).ToList();
            foreach (var result in results)
            {
                retValues.Add(GetPDF(result, "Exemption"));
            }
            return Json(retValues, JsonRequestBehavior.AllowGet);
        }
publicjsonresult()
{
List retValues=新列表();
var results=db.allows.Where(m=>m.Year==DateTime.Now.Year).Where(e=>e.RecordDeleted==false).ToList();
foreach(结果中的var结果)
{
添加(GetPDF(结果,“豁免”);
}
返回Json(retValues,JsonRequestBehavior.AllowGet);
}
该列表将至少包含约400个PDF文档,用户希望自动打印这些文档,而无需进行任何交互

返回FileContentResults列表后,如何自动将其发送到用户的默认打印机

我相当确定我只需要循环浏览列表,并为每个列表调用Acrobat Reader;我只是不知道如何通过javascript实现这一点

我该怎么做?或者,我愿意接受更好的选择

全面披露,以协助选择:

这是一个C#中的MVC应用程序。最终用户至少安装了Adobe Acrobat Reader,因为它是“Office桌面”映像上的默认设置


编辑添加:PDF文件来自SSR,如果这有什么区别的话。

对于您的网页在显示网页的计算机上可以做什么有严格的限制。我们过去比较宽松。它被滥用了。所以它是固定的。但我怀疑是否有人疯狂到允许JavaScript发送打印订单

这就是说,这应该是可能的,使用一个Progamm,或者甚至可能在客户端安装一个插件/扩展

您可以,就像处理文件扩展名一样。事实上,桌面上的Steam链接就是这样工作的——它们是带有自定义“Steam:”协议的URL。所有浏览器都注册了公共文件名和公共协议


这大概是我能给你的一个如此宽泛的问题的最佳答案。

首先,你的用户听起来是个糟糕的想法。这可能会导致她的电脑在处理这么多打印请求时被锁定

第二,这是可能的。列出了一些选项,看起来这可能是你最好的选择。一些评论说它没有打开打印对话框,因此可能不需要用户的交互;但我真诚地希望如此,因为允许网站无限制地访问打印机而不需要用户交互听起来是个糟糕的主意


或者,如果它提示您输入400多页PDF中的每一页,如果您可以将它们连接到一个400多页的文档中,那么您只有一个打印对话框。在处理该请求时,可能仍然会减慢/锁定她的电脑。

这是否回答了您的问题?由于许多原因,这不是一个很好的解决方案,其中最简单的一个原因是,通过web浏览器打印400个文档将占用浏览器窗口很长一段时间。根据浏览器制造商的决定,在未来的浏览器版本中,无用户交互的打印可能会继续工作,也可能不会继续工作。IMO是一个更强大的解决方案,它是让您的
bulkprintException
调用队列将PDF打印到某个位置(例如,DB表),然后在每个客户端PC上运行一个Windows服务,轮询该队列并将其中的所有内容发送到系统打印机。