Тихая печать встроенного PDF файла

У меня есть веб-страница со встроенным PDF файлом. Мой код выглядит следующим образом:

<embed
    type="application/pdf"
    src="path_to_pdf_document.pdf"
    id="pdfDocument"
    width="100%"
    height="100%">
</embed>

У меня есть этот код javascript для печати моего PDF:

function printDocument(documentId) {

    //Wait until PDF is ready to print    
    if (typeof document.getElementById(documentId).print == 'undefined') {

        setTimeout(function(){printDocument(documentId);}, 1000);

    } else {

        var x = document.getElementById(documentId);
        x.print();
    }
}

Когда этот код выполняется, плагин Acrobat открывает хорошо известный диалог печати. Что-то вроде этого:

PrintDialog

Два вопроса:

  • Как улучшить способ обнаружения того, что PDF загружен и готов к печати?
  • Как избежать отображения диалогового окна печати?

Немного больше информации о моей системе:

ОС: Windows XP

Браузер: Internet Explorer 7

PDF-плагин: Acrobat Reader 9

Ответ 1

Вы не сможете печатать без использования обычного старого JavaScript. Как бы вы хотели, чтобы ваш принтер начал печатать 100000000 страниц всего черного. Нехорошо. Если вы хотите печатать тихо и работать только для Internet Explorer, есть элементы управления ActiveX, которые могут это сделать. Это требует более высоких настроек безопасности для вашей страницы и для ваших пользователей, которые действительно доверяют вашему сайту.

Ответ 2

Это возможно в надежной среде Intranet.

<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%">
        <param name="SRC" value="yourdoc.pdf" />
    </object>

<input type="button" ... onclick="pdfDoc.printAll();" />

Это приведет к обходу диалогового окна печати и отправке непосредственно на принтер по умолчанию.

Ответ 3

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

Ответ 4

Вы можете сделать это в Firefox, изменив about:config. Добавьте print.always_print_silent и установите его на true.