Печать PDF непосредственно из JavaScript



Я создаю список PDF-файлов в HTML. В список я хотел бы включить ссылку для загрузки и кнопку печати/ссылку. Есть ли способ, чтобы непосредственно открыть диалоговое окно печати для документа PDF без пользователя видя PDF или открыть для просмотра PDF?



некоторые варианты загрузки PDF в скрытый iframe и запуска его для печати с помощью JavaScript?

1315   4  

4 ответов:

этот вопрос демонстрирует подход, который может быть полезен для вас: бесшумная печать встроенного PDF

использует <embed> тег для вставки PDF в документ:

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

тогда вы называете .print() метод на элементе в Javascript при загрузке PDF:

function printDocument(documentId) {
    var doc = document.getElementById(documentId);

    //Wait until PDF is ready to print    
    if (typeof doc.print === 'undefined') {    
        setTimeout(function(){printDocument(documentId);}, 1000);
    } else {
        doc.print();
    }
}

вы можете поместить встраивание в скрытый iframe и распечатать его оттуда, что дает вам бесшовный опыт.

вот функция для печати PDF из iframe.

вам просто нужно передать URL-адрес PDF в функцию. Это позволит создать iframe и инициировать печать только в формате PDF загрузить.

обратите внимание, что функция не уничтожает iframe. Вместо этого он повторно использует его каждый раз, когда функция вызывается. Трудно уничтожить iframe, потому что это необходимо до тех пор, пока печать не будет выполнена, и метод печати не имеет поддержки обратного вызова (насколько я знаю).

printPdf = function (url) {
  var iframe = this._printIframe;
  if (!this._printIframe) {
    iframe = this._printIframe = document.createElement('iframe');
    document.body.appendChild(iframe);

    iframe.style.display = 'none';
    iframe.onload = function() {
      setTimeout(function() {
        iframe.focus();
        iframe.contentWindow.print();
      }, 1);
    };
  }

  iframe.src = url;
}

скачать распечатать.js от http://printjs.crabbly.com/

$http({
    url: "",
    method: "GET",
    headers: {
        "Content-type": "application/pdf"
    },
    responseType: "arraybuffer"
}).success(function (data, status, headers, config) {
    var pdfFile = new Blob([data], {
        type: "application/pdf"
    });
    var pdfUrl = URL.createObjectURL(pdfFile);
    //window.open(pdfUrl);
    printJS(pdfUrl);
    //var printwWindow = $window.open(pdfUrl);
    //printwWindow.print();
}).error(function (data, status, headers, config) {
    alert("Sorry, something went wrong")
});

https://github.com/mozilla/pdf.js/

для демо-версии http://mozilla.github.io/pdf.js/

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

Comments

    Ничего не найдено.