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