2008-10-15 9 views
25

웹 응용 프로그램에서 클라이언트에 PDF 파일을 강제로 인쇄 할 수 있습니까? 브라우저가 창 내부에서 PDF를 열도록 구성된 경우 window.print() 호출이 작동하지만 내 브라우저와 같은 일부 브라우저는 외부에서 PDF를 열도록 구성되어 있다고 생각합니다.브라우저에서 PDF를 인쇄하는 방법

답변

28

Google 리더는 Acrobat Reader 또는 다른 호환되는 리더에게 인쇄하도록 자바 스크립트를 PDF에 포함시키는 방식입니다.

임의의 PDF로이 작업을 수행하려면 PDF 툴킷이 필요합니다.

+4

당신은 PDF 툴킷이 필요하지 않습니다. 다음은 pdf를 인쇄 할 iTextSharp를 사용하여 PDF에 javascript를 추가하는 방법을 알려주는 페이지 링크입니다. http://itextsharp.sourceforge.net/tutorial/ch11.html – Dave

+34

iTextSharp는 PDF 툴킷입니다. –

+2

checkout FPDF 용 FPDF 및 FPDF 용 추가 기능 : http://www.fpdf.de/downloads/addons/36/ – Brenden

0

강제로 파일을 프린터로 전송하겠습니까? 의도하지 않은 결과의 법칙을 생각하고 있습니까? 사용자의 기기가 프린터에 연결되어 있지 않습니까? 블랙 베리 일 수도 있고, Wi-Fi에 랩탑이 될 수도 있습니다. 사용자가 기본 프린터로 이동하지 않으려면 어떻게해야합니까?

+0

집에있는 유일한 프린터는 PDFCreator입니다. – Kibbee

+1

스폿이 켜져 있습니다. 내가 이런 종류의 질문을하고 나서 그것을 실행하면, DOK가 지적한 바를 누군가가 지적하기를 바랬어야한다. –

+13

그래,하지만 그의 사무실에서 단 10 명의 직원 만이 웹 페이지를 사용하고 프린터를 가지고 있음을 알고있는 당신의 상사는 컴퓨터로 거의 모든 것을 할 수 있다는 사실에 당황하게 될 것입니다. 인쇄 대화 상자를 엽니 다. – PeterAllenWebb

3

http 헤더를 application/pdf로 설정하고 새 창을 자바 스크립트로 강제로 열어 인쇄 할 수 있습니다. 그러나 누가 그것을 정말로 할 것인가? 나는 지금 당장 오는 것을 의미한다.

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

그건 재미 있어요. 감사합니다 –

+3

이것은 Adobe Reader 플러그인이 포함 된 Firefox 9 (Ubuntu에서)에서는 작동하지 않습니다. ('exPDF.print는 함수가 아니다'). 어디에서 일을 시작 했습니까? –

+0

Paulo, exPDF는 PDF로 인쇄중인 항목의 ID입니다. – Jared

3

taeyoung 님의 제안과 마찬가지로 iframe을 사용하여 pdf를 렌더링 한 다음 contentWindow.print()를 사용할 수 있습니다.

+0

taeyoung의 솔루션과 마찬가지로, 이것은 Adobe Reader 플러그인이있는 Firefox 9 (Ubuntu에서)에서는 작동하지 않습니다. ('exPDF.print는 함수가 아니다'). 어디에서 일을 시작 했습니까? –

+0

이것은 웹킷에서만 작동한다고 생각합니다. 다른 브라우저에서는 다운로드 만합니다. –

+0

사실 Firefox는 PDF를 iframe에 표시하고 메소드 호출을 무시합니다 (오류 메시지는 Firebug의 JS 콘솔에 표시됨). –

0

Javascript를 사용하여 브라우저에서 직접 PDF 문서를 인쇄 할 수 없습니다. Javascript 함수 window.print()는 브라우저 인쇄 기능을 사용하며 필요한 것은 아닙니다. Java Web Start를 통해 인쇄를 시작하기위한 목적을 달성 할 수 있습니다. 원시 PDF 문서를 인수로받는 Java 프로그램을 실행할 수 있도록 PDF 문서를 jnlp에 직접 넣으십시오. 이제 시스템에서 실행 중이며 더 이상 브라우저에 있지 않으므로 Java API를 통해 인쇄 드라이버와 직접 인터페이스 할 수 있습니다. 이것은 꽤 단순하지만 실제로는 JAVA 인쇄 API가 파일을 입력으로 받아들이지 않고 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 파일을 소요하고 필요한 경우 인쇄 대화 상자를 표시하지 않고 그것을 인쇄, 을 사용할 수있는 일부 인쇄 옵션을 설정할 수 있습니다 간단한 방법은 아래에 그것을 할 수 있습니다 : 당신이 iTextSharp를 사용할 수 있는지

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

관련 문제