Тихая печать встроенного PDF - PullRequest
24 голосов
/ 10 июня 2009

У меня есть веб-страница со встроенным 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

Ответы [ 4 ]

18 голосов
/ 10 июня 2009

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

4 голосов
/ 23 марта 2011

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

<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();" />

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

1 голос
/ 01 декабря 2010

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

1 голос
/ 10 июня 2009

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

...