Дополн. Версия SDK не имеет встроенных функций для печати. Конечно, вы можете сделать много, используя chrome authority, например. учитывая окно браузера вы можете получить nsIWebBrowserPrint
interface для текущего открытого окна и распечатать его:
var browserPrint = browserWnd.gBrowser
.contentWindow
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebBrowserPrint);
browserPrint.print(null, listener);
Но проблема все еще, что вам нужно, чтобы открыть веб-страницу в браузере, чтобы распечатать его. Однако браузер не открывает PDF-файлы, это делается с помощью плагина, и только плагин (доступ к которому у браузера не имеет доступа) может его распечатать. Вы можете посмотреть в направлении pdf.js, но он все еще находится на ранних стадиях развития.
выглядит как очевидный способ загрузить страницу в скрытое окно, чтобы ее можно было распечатать. Только проблема - чтобы добраться до nsIWebBrowserPrint
, вам нужно будет получить доступ к объекту window
страницы из дополнения (не сценария содержания, он не имеет необходимых прав).
Ну, на самом деле я ** ** с использованием pdf.js, загружаемых тегами скриптов, поэтому у меня есть файл PDF (через AJAX) в двоичном массиве Javascript на странице. Но, очевидно, я не могу отправить это на принтер. Так что я думал, должен был создать небольшое дополнение, которое могло бы получить массив, содержащий файл PDF, и распечатать его с помощью API печати OS в предположении, что ОС может печатать PDF-файл. Имеет ли это смысл? – Weston
ОС не может распечатать PDF-файл - программа чтения PDF (Acrobat Reader, Foxit Reader и другие). Вместо того, чтобы пытаться выяснить, как с ним поговорить, было бы разумнее создать скрытый элемент '', загрузив в него ваши данные PDF вместе с' pdf.js' и напечатайте, как я объяснил это выше. –
Да, ты очень прав, Владимир. Но сама цель всего этого заключалась в том, чтобы избежать плагинов Adobe Reader. Это ужасно в Firefox/Linux и не существует в Mac OS/X .. Аналогичная история с внутренним PDF-рендерингом Chrome. В лучшем случае это отстой в Linux. – Weston