Подтвердить что ты не робот

Как распечатать PDF из браузера

В веб-приложении можно ли форматировать файл PDF для печати на клиенте? Если браузер настроен на открытие PDF внутри окна, я думаю, что вызов window.print() будет работать, но некоторые браузеры (например, мои) настроены на открытие PDF извне.

4b9b3361

Ответ 1

Как это делают документы google, встраивая JavaScript в PDF, который сообщает Acrobat Reader или любому другому совместимому читателю, чтобы распечатать его.

Вам понадобится инструментарий PDF для этого со случайным PDF файлом.

Ответ 2

<html>
<script language="javascript">
timerID = setTimeout("exPDF.print();", 1000);
</script>
<body>
<object id="exPDF" type="application/pdf" data="111.pdf" width="100%" height="500"/>
</body>
</html>

Ответ 3

вы можете установить http-заголовок для приложения /pdf, а затем принудительно открыть новое окно с помощью javascript и напечатать этот путь. но кто действительно это сделает? я имею в виду, давай сейчас.

Ответ 4

Аналогично предложению taeyoung вы можете использовать iframe для рендеринга pdf, а затем использовать contentWindow.print();

Ответ 5

Вы хотите, чтобы файл был отправлен на принтер? Вы думаете о законе непредвиденных последствий - пользовательское устройство не подключено к принтеру? Может быть BlackBerry, может быть ноутбуком на Wi-Fi. Что делать, если пользователь не хочет, чтобы он перешел на принтер по умолчанию?

Ответ 6

Вы не можете распечатать документ PDF непосредственно из браузера с помощью Javascript. Функция Javascript window.print() использует функцию печати браузера, и это не то, что вам нужно. Вы можете достичь своей цели, начиная печать через Java Web Start. Поместите свой PDF-документ непосредственно в jnlp, чтобы вы могли запускать программу Java, которая получает исходный документ PDF в качестве аргумента. Теперь вы работаете в системе и больше не находитесь в браузере, поэтому можете напрямую взаимодействовать с драйвером печати через JAVA API. Это кажется довольно простым, но на самом деле это не потому, что API печати JAVA не принимает файл как входной, а конкретную структуру данных, которая реализует интерфейс ava.awt.print.Pageable.

Используйте веб-службу www.pdfprint.it, которые выполняют всю работу за вас. Вот фрагмент, взятый из официальной документации.

<?php

// 1. GET the jnlp file with curl

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.pdfprint.it/printPdf?auth=XXXX");        
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //return the transfer as a string       
$jnlp = curl_exec($ch);
curl_close($ch); 

$pdfDoc ="example.pdf";


//2. put in the jnlp your PDF document base64 encoded

$jnlp = str_replace("####", base64_encode(file_get_contents($pdfDoc)),$jnlp);


//3. echo the jnlp file 

header('Content-type: application/x-java-jnlp-file');

echo $jnlp;

Вам нужно только получить файл jnlp, вставить свой PDF-документ и отправить jnlp в браузер. Программа JAVA, которая запускает печать, будет загружена непосредственно из веб-службы. Вы также можете установить некоторые параметры печати в виде копий, сторон и т.д.

Ответ 7

вы можете использовать простую удивительную библиотеку printjs " http://printjs.crabbly.com" он берет PDF файл и печатает его без отображения диалогового окна печати, если вам нужно, простой способ сделать это ниже:

 <button type="button" onclick="printJS('docs/printjs.pdf')">
    Print PDF
 </button>