2008-10-15 2 views
25

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

ответ

28

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

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

+4

Вам не нужно PDF инструментарий, если вы можете использовать iTextSharp. Вот ссылка на страницу, в которой рассказывается, как добавить javascript в PDF, используя iTextSharp, который распечатает pdf. http://itextsharp.sourceforge.net/tutorial/ch11.html – Dave 2009-12-03 19:21:25

+34

iTextSharp - это инструментарий PDF. – 2009-12-04 19:03:20

+2

checkout FPDF для PHP и этот аддон для FPDF: http://www.fpdf.de/downloads/addons/36/ – Brenden 2012-01-21 00:26:18

0

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

3

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

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

аналогично предложению Taeyoung в вы можете использовать IFRAME для визуализации PDF, а затем использовать contentWindow.print();

0

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

2

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

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

Смежные вопросы