Существует два сценария: загрузка pdf через запрос get или запрос по почте (форме); Мой сценарий обращается к ним, вызывая диалоговое окно печати, а когда диалоговое окно печати закрывается, окно закрывается.
Для запроса get этого должно быть достаточно:
function testprint(){
var w = window.open(yourURL)
w.focus()
w.print()
// Don't try to close it until you've give the window time to register the print dialog request
setTimeout(function(){
w.close()
}, 1000)
}
Пост немного сложнее. После того, как я некоторое время боролся с этой проблемой, я пришел к этому - он использует скрытый iframe; Я не мог заставить его работать с дополнительным окном. В результате вы можете скрыть iframe, чтобы пользователю даже не нужно было видеть другое окно. (Обратите внимание, что вы можете преобразовать решение get для использования iframe и избежать одновременного создания дополнительного окна.) Предполагается, что вы создали форму с помощью jQuery, а результатом публикации будет нужный вам PDF.
jQuery(document.body).append(form);
if (doPrint) {
jQuery(document.body).append("<iframe style='display:none' id='doPrintId' name='doPrint'>");
form.submit(function () {
form.attr('target', 'doPrint');
});
var printWindow = document.getElementById('doPrintId');
printWindow.onload = function(){
printWindow.focus();
printWindow.contentWindow.print();
document.body.remove(printWindow);
};
form.submit();
} else {
form.submit();
}
jQuery(document.body).remove(form);