Как отправить PDF файл непосредственно на принтер с помощью JavaScript?
Как отправить файл PDF непосредственно на принтер с помощью JavaScript?
Я нашел два ответа на форуме:
<embed src="vehinvc.pdf" id = "Pdf1" name="Pdf1" hidden>
<a onClick="document.getElementById('Pdf1').printWithDialog()" style="cursor:hand;">Print file</a>
и
<OBJECT id = "Pdf2" name="Pdf2" CLASSID="clsid:CA8A9780-280D-11CF-A24D-444553540000" WIDTH="364" HEIGHT="290">
<PARAM NAME='SRC' VALUE="file.pdf">
</OBJECT>
<a onClick="document.Pdf2.printWithDialog()">Print file</a>
Но моя проблема в том, что он просто работает на IE и не работает в Firefox или Chrome.
Есть ли какое-либо решение для этого?
Ответы
Ответ 1
Необходимо выполнить два шага.
Сначала вам нужно поместить PDF в iframe.
<iframe id="pdf" name="pdf" src="document.pdf"></iframe>
Чтобы распечатать iframe, вы можете посмотреть ответы здесь:
Javascript Печать только содержимого iframe
Если вы хотите распечатать iframe автоматически после загрузки PDF, вы можете добавить обработчик onload в <iframe>
:
<iframe onload="isLoaded()" id="pdf" name="pdf" src="document.pdf"></iframe>
загрузчик может выглядеть так:
function isLoaded()
{
var pdfFrame = window.frames["pdf"];
pdfFrame.focus();
pdfFrame.print();
}
Это отобразит диалоговое окно печати браузера, а затем распечатает только сам документ PDF. (Я лично использую обработчик onload для включения кнопки "print", чтобы пользователь мог решить распечатать документ или нет).
Я использую этот код довольно много дословно в Safari и Chrome, но еще не попробовать его в IE или Firefox.
Ответ 2
Попробуйте следующее: введите кнопку/ссылку, которая откроет веб-страницу (в новом окне) с помощью только встроенного в нее файла pdf и распечатайте веб-страницу.
В главе главной страницы:
<script type="text/javascript">
function printpdf()
{
myWindow=window.open("pdfwebpage.html");
myWindow.close; //optional, to close the new window as soon as it opens
//this ensures user doesn't have to close the pop-up manually
}
</script>
И в теле главной страницы:
<a href="printpdf()">Click to Print the PDF</a>
Внутри pdfwebpage.html:
<html>
<head>
</head>
<body onload="window.print()">
<embed src="pdfhere.pdf"/>
</body>
</html>
Ответ 3
Я думаю, что эта Библиотека JavaScript может помочь вам:
Он называется Print.js
Первое включение
<script src="print.js"></script>
<link rel="stylesheet" type="text/css" href="print.css">
Это базовое использование - вызвать printJS()
и просто передать URL-адрес документа PDF: printJS('docs/PrintJS.pdf')
Я сделал что-то вроде этого, это также покажет "Загрузка....", если PDF-документ слишком большой.
<button type="button" onclick="printJS({printable:'docs/xx_large_printjs.pdf', type:'pdf', showModal:true})">
Print PDF with Message
</button>
Однако имейте в виду, что:
В настоящее время Firefox не позволяет печатать документы PDF с использованием iframes. Об этом здесь есть открытый bug на веб-сайте Mozilla. При использовании Firefox Print.js откроет файл PDF на новой вкладке.
Ответ 4
функция размещения триггера печати...
function printTrigger(elementId) {
var getMyFrame = document.getElementById(elementId);
getMyFrame.focus();
getMyFrame.contentWindow.print();
}
кнопку, чтобы дать пользователю доступ...
(an onClick on an a or button or input or whatever you wish)
<input type="button" value="Print" onclick="printTrigger('iFramePdf');" />
an iframe pointing to your PDF...
<iframe id="iFramePdf" src="myPdfUrl.pdf" style="dispaly:none;"></iframe>
Подробнее: http://www.fpdf.org/en/script/script36.php
Ответ 5
<?php
$browser_ver = get_browser(null,true);
//echo $browser_ver['browser'];
if($browser_ver['browser'] == 'IE') {
?>
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><strong class="highlight">pdf</strong> <strong class="highlight">print</strong> test</title>
<style>
html { height:100%; }
</style>
<<strong class="highlight">script</strong>>
function printIt(id){
var <strong class="highlight">pdf</strong> = document.getElementById("samplePDF");
<strong class="highlight">pdf</strong>.click();
<strong class="highlight">pdf</strong>.setActive();
<strong class="highlight">pdf</strong>.focus();
<strong class="highlight">pdf</strong>.print();
}
</script>
</head>
<body style="margin:0; height:100%;">
<embed id="samplePDF" type="application/pdf" src="/pdfs/2010/dash_fdm350.pdf" width="100%" height="100%" />
<button onClick="printIt('samplePDF')"><strong class="highlight">Print</strong></button>
</body>
</html>
<?php
} else {
?>
<HTML>
<<strong class="highlight">script</strong> Language="javascript">
function printfile(id)
{
window.frames[id].focus();
window.frames[id].print();
}
</script>
<BODY marginheight="0" marginwidth="0">
<iframe src="/pdfs/2010/dash_fdm350.pdf" id="objAdobePrint" name="objAdobePrint" height="95%" width="100%" frameborder=0></iframe><br>
<input type="button" value="<strong class="highlight">Print</strong>" onclick="javascript<b></b>: printfile('objAdobePrint');">
</BODY>
</HTML>
<?php
}
?>