2016-08-15 1 views
2

제목과 마찬가지로. 여기서 검색하면 문서를 인쇄 할 수있는 FPDF의 "확장"을 발견했습니다. 이제 대화 상자없이 직접 인쇄해야합니다. 저자가 this page에 남긴 의견을 따르고 있지만 나를 위해 일하지 않습니다 :(. 복사 및 붙여 넣기를 시도했지만 해결책을 찾을 수 없습니다.FPDF - PDF_JS를 사용하는 동안 대화 상자가 인쇄되지 않음

참고 : FireFox (최신 버전)를 사용했습니다. . 프로세스는 또한 크롬과 Yandex 주차 브라우저를 사용하여 시도 전혀 작동하지 않았다 모두 작동하지만 여전히 대화 상자를 보여

PS : 시간 내 주셔서 감사합니다

내가 사용하고 코드는 다음과 같습니다.!.

pdf_js.php

require('fpdf.php'); 

class PDF_JavaScript extends FPDF { 

    var $javascript; 
    var $n_js; 

    function IncludeJS($script) { 
     $this->javascript=$script; 
    } 

    function _putjavascript() { 
     $this->_newobj(); 
     $this->n_js=$this->n; 
     $this->_out('<<'); 
     $this->_out('/Names [(EmbeddedJS) '.($this->n+1).' 0 R]'); 
     $this->_out('>>'); 
     $this->_out('endobj'); 
     $this->_newobj(); 
     $this->_out('<<'); 
     $this->_out('/S /JavaScript'); 
     $this->_out('/JS '.$this->_textstring($this->javascript)); 
     $this->_out('>>'); 
     $this->_out('endobj'); 
    } 

    function _putresources() { 
     parent::_putresources(); 
     if (!empty($this->javascript)) { 
      $this->_putjavascript(); 
     } 
    } 

    function _putcatalog() { 
     parent::_putcatalog(); 
     if (!empty($this->javascript)) { 
      $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>'); 
     } 
    } 
} 

true로 "대화"변수를 설정하는

<?php 
require('pdf_js.php'); 

class PDF_AutoPrint extends PDF_JavaScript 
{ 
function AutoPrint($dialog=false) 
{ 
    //Open the print dialog or start printing immediately on the standard printer 
    $param=($dialog ? 'true' : 'false'); 
    $script="print($param);"; 
    $this->IncludeJS($script); 
} 

function AutoPrintToPrinter($server, $printer, $dialog=false) 
{ 
    //Print on a shared printer (requires at least Acrobat 6) 
    $script = "var pp = getPrintParams();"; 
    if($dialog) 
     $script .= "pp.interactive = pp.constants.interactionLevel.full;"; 
    else 
     $script .= "pp.interactive = pp.constants.interactionLevel.automatic;"; 
    $script .= "pp.printerName = '\\\\\\\\".$server."\\\\".$printer."';"; 
    $script .= "print(pp);"; 
    $this->IncludeJS($script); 
} 
} 

$pdf=new PDF_AutoPrint(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial','',20); 
$pdf->Text(90, 50, 'Print me!'); 
//Open the print dialog 
$pdf->AutoPrint(true); 
$pdf->Output(); 
?> 
+0

StackOverflow에 오신 것을 환영합니다. 사용자가 문제를 더 잘 이해할 수 있도록 현재 사용중인 정확한 코드를 게시하십시오. –

+0

우선, 내 게시물에 답해 주셔서 감사합니다. 내가 사용하는 코드를 첨부하여 내 게시물을 편집합니다. –

답변

1

ex.php. false로 설정해야합니다.

자동 인쇄 기능은 인쇄 대화 상자를 표시할지 여부를 결정하는 "대화 상자"변수 AutoPrint($dialog=false)을 허용합니다.

코드에서 대화 상자에 true을 전달합니다. 아래에 ex.php의 마지막 세 줄을 변경 :

//Do not open the print dialog 
$pdf->AutoPrint(false); 
$pdf->Output(); 
0

일반적으로, 당신이 원하는 것은 스크립트가 브라우저의 프린터 대화 상자를 무시하고 대신에 설정되어있는대로 기본 프린터에 바로 인쇄를 시작해야하는 경우, 그 답은 아니오입니다. 브라우저의 대화 상자를 우회하여 보안 문제가 발생하지 않도록주의하십시오. 맬웨어 웹 사이트가 사용자가 모르는 사이에 문서를 프린터로 보내는 것을 상상해보십시오. 사용자가 다운로드하여 설치하고 실행해야하는 브라우저 플러그인이나 windows/linux 앱을 만들어서 사이트를 요구할 때마다이 중개자가 당신을 위해 인쇄 할 수 있도록 브라우저 플러그인이나 Windows/Linux 앱을 만들어서 이런 비 정통적인 방법이 있습니다. 그래서, 당신이 당신의 PHP 코드에 무엇을 넣든 대화 상자를 건너 뛰지 않을 것입니다.

0

초기 답변을 보내 주셔서 감사합니다. 그리고 늦은 응답에 대해 유감스럽게 생각합니다. 슬프게도, 나는 "반쯤 일했다". 나는 "lil"을 조사하고 "kiosk-printing"모드를 활성화해야한다는 것을 알았습니다. 1. Chrome으로 바탕 화면 바로 가기를 만든 다음 속성으로 가서 경로를 찾은 다음

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --kiosk-printing 

을 그리고 내가 제공하는 코드를 모두 확인했다 : 끝, 쉼표 후, 예를 들어 --kiosk-printing

을 넣어.

감사합니다. 이 문제를 해결할 더 좋은 방법이있는 경우 논평.

관련 문제