Я пишу веб-приложение, которое, помимо прочего, создаст список файлов 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);
}
В списке будет как минимум около 400 PDF-документов, и пользователь хочет автоматически распечатать их без какого-либо вмешательства со своей стороны.
Как только я возвращаю этот список FileContentResult, как я могу автоматически отправить его на принтер по умолчанию для пользователя?
Я совершенно уверен, что мне просто нужно пройтись по списку и вызвать Acrobat Reader для каждого; Я просто в растерянности относительно того, как сделать это через JavaScript.
Как мне это сделать? Или, альтернативно, я открыт для лучших вариантов.
Полное раскрытие, чтобы помочь с вариантами:
Это приложение MVC в C #. У конечного пользователя установлен Adobe Acrobat Reader (по крайней мере), так как он используется по умолчанию для образа «Office Desktop».
Изменить, чтобы добавить: PDF-файлы поступают из SSRS, если это имеет какое-либо значение.
2 ответа
Существуют строгие ограничения в отношении того, что ваша веб-страница может делать на / на компьютере, на котором отображается веб-страница. Раньше мы были более слабыми. Это было оскорблено. Так что это было исправлено. Но я сомневаюсь, что кто-то был настолько безумен, что позволял JavaScript отправлять заказы на печать.
Это, как говорится, должно быть возможно, используя Progamm или, возможно, даже Addon / Extension, установленный на стороне клиента.
Ты можешь регистрировать программы с конкретными протоколами Точно так же, как и в случае с расширениями файлов. Действительно, именно так работают эти ссылки Steam на рабочем столе - это URL-адреса с пользовательским «steam:» Protocoll. И все браузеры регистрируют как общие имена файлов, так и общие протоколы.
Это лучший ответ, который я могу дать вам с таким широким вопросом.
Во-первых, это звучит как ужасная идея со стороны вашего пользователя. Это может привести к блокировке ее компьютера во время обработки большого количества запросов на печать.
Во-вторых, это возможно. Это ТАК вопрос есть некоторые варианты в списке, и это выглядит как Print.js это, вероятно, ваш лучший выбор. В некоторых комментариях говорилось, что он не открыл диалоговое окно печати, поэтому может не потребовать взаимодействия со стороны вашего пользователя; но я искренне надеюсь, что это так, потому что предоставление веб-сайту неограниченного доступа к принтеру без взаимодействия с пользователем звучит как ужасная идея.
Кроме того, если он запрашивает каждый из этих 400+ PDF-файлов, если вы можете объединить их в один 400-страничный документ, то у вас будет только один диалог печати. Тем не менее, вероятно, замедлить / заблокировать ее компьютер во время обработки этого запроса.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
Для вопросов, касающихся программирования в ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (исключая ActionScript). Этот тег редко используется отдельно, но чаще всего ассоциируется с тегами [node.js], [jquery], [json] и [html].