2011-12-16 2 views
1

Можно ли печатать из дополнения SDK Firefox? Я просмотрел интерактивные документы SDK надстройки, но, похоже, не могу найти ничего об этом.Печать из дополнения SDK от Firefox?

Что я хотел бы сделать, это получить некоторые данные с веб-страницы (файл PDF, хранящийся в переменной Javascript), а затем открыть диалоговое окно системного принтера с файлом.

Можно ли это сделать?

ответ

1

Дополн. Версия 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 страницы из дополнения (не сценария содержания, он не имеет необходимых прав).

+0

Ну, на самом деле я ** ** с использованием pdf.js, загружаемых тегами скриптов, поэтому у меня есть файл PDF (через AJAX) в двоичном массиве Javascript на странице. Но, очевидно, я не могу отправить это на принтер. Так что я думал, должен был создать небольшое дополнение, которое могло бы получить массив, содержащий файл PDF, и распечатать его с помощью API печати OS в предположении, что ОС может печатать PDF-файл. Имеет ли это смысл? – Weston

+0

ОС не может распечатать PDF-файл - программа чтения PDF (Acrobat Reader, Foxit Reader и другие). Вместо того, чтобы пытаться выяснить, как с ним поговорить, было бы разумнее создать скрытый элемент '', загрузив в него ваши данные PDF вместе с' pdf.js' и напечатайте, как я объяснил это выше. –

+0

Да, ты очень прав, Владимир. Но сама цель всего этого заключалась в том, чтобы избежать плагинов Adobe Reader. Это ужасно в Firefox/Linux и не существует в Mac OS/X .. Аналогичная история с внутренним PDF-рендерингом Chrome. В лучшем случае это отстой в Linux. – Weston

Смежные вопросы