Расширение Google Chrome: распечатать страницу без вывода сообщений - PullRequest
17 голосов
/ 31 января 2011

Я разрабатываю внутреннее расширение Google Chrome, для которого требуется способ печати текущей страницы на принтере.Я не хочу, чтобы открывалось диалоговое окно «Печать» по умолчанию (поэтому вопрос о javascript: window.print () невозможен).

Насколько я понимаю, это невозможно только с плагином JS + HTML, поэтому я также открыт для использования плагина NPAPI (с фиктивным mime-типом).И я беспокоюсь только о платформе Windows.

Я также открыт для различных хаков / обходных путей, если это возможно, хотя было бы неплохо стандартное решение., дайте мне знать, если вы знаете какой-либо запрос функции, зарегистрированный для него?

Любые предложения / разъяснения приветствуются ..

Ответы [ 4 ]

17 голосов
/ 17 февраля 2012

В Chrome (v18 +) у нас есть переключатели --kiosk --kiosk-printing.Можно автоматически распечатать на принтере по умолчанию без подтверждения печати. ​​

Вы можете увидеть это из этого видео http://www.youtube.com/watch?v=D6UHjuvI7IE

1 голос
/ 31 января 2011

Поскольку NPAPI позволяет вам создавать собственные плагины C ++, с которыми вы можете взаимодействовать через тег объекта (который вы можете использовать из расширения), это, вероятно, было бы способом сделать это.

Хитрость в том, что я не знаю хорошего способа получить биты для печати страницы. Единственный человек, которого я знаю, кто сделал что-то похожее на это, на самом деле получил дескриптор окна для браузера (доступный через NPAPI) и соскоблил его кусочки для печати таким образом, но это не будет учитывать таблицы стилей печати или что-либо еще , Вы также можете попробовать использовать события автоматизации для управления диалоговым окном печати, но я понятия не имею, сработает ли это или нет.

По своему замыслу браузеры стараются не позволять вам делать что-то подобное, так как это может открыть некоторые серьезные уязвимости, если какой-либо веб-сайт может просто начать печатать на вашем принтере без подтверждения ...

В любом случае, если вы найдете способ сделать это с C ++, вы можете использовать FireBreath , чтобы упростить создание плагина NPAPI.

0 голосов
/ 16 июня 2015

Я недавно искал подобную способность, и кажется, что это было бы вполне возможно, используя новый собственный интерфейс обмена сообщениями Chrome.

https://developer.chrome.com/extensions/nativeMessaging

Существует множество примеров этого с C #, но здесь приведен один быстрый пример устранения неполадок собственных сообщений Chrome с базовым приложением C #

Собственный обмен сообщениями от расширения Chrome до собственного хоста, написанный на C #

Я понимаю, что это может быть на день позже и на доллар, но в случае, если кто-то еще сталкивается с этим вопросом, это решение, которое работало длямне.Из приложения C # вы можете напрямую печатать на установленные принтеры, используя класс PrintDocument.Если бы вы нашли способ получить изображение страницы, это было бы намного проще, чем использовать Firebreath или NPAPI.

0 голосов
/ 31 января 2011

Существуют различные расширения, которые делают снимки текущей веб-страницы (например, this );Вы можете адаптировать его для отправки изображения на принтер через плагин NPAPI.

...