Вопрос

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

Это было полезно?

Решение

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

Вам понадобится PDF toolkit, чтобы сделать это со случайным PDF-файлом.

Другие советы

<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>

аналогично предложению Тэена, вы можете использовать iframe для рендеринга PDF-файла, а затем использовать contentWindow.print();

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

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

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

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

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

Существует веб-сервис по адресу 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, которая запускает печать, будет загружена непосредственно из веб-службы.Вы также можете задать некоторые параметры печати в виде копий, сторон и так далее

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top