2017-08-09 25 views
0

FPDF/PHPで生成されたJavaScriptをブラウザで表示してJavaScriptを実行する際に問題が発生しています。スクリプトは、印刷ダイアログまたはメッセージボックスを表示することになっています。この機能は何年も働いてきましたが、Edge/Windowsへの再送アップデートで壊れているようです。調査後、ブラウザ/ビューアに応じて動作が異なるようです。完全に更新されたWindows 10上PDF Edgeで実行されないJavaScript

調査結果:

  • エッジ:PDFは、Edgeの独自のビューアで開き、印刷ダイアログがない表示され
  • Firefoxを行います。PDFは、Firefox独自のビューアで開き、印刷ダイアログが表示されますが
  • エクスプローラ:PDFは、デフォルトのPDFビューアで開き、印刷ダイアログはトンのための呼び出しで

同じ話を表示されます彼はメッセージボックス。

FPDF JavaScript supportの例で指定されたようなFPDFを拡張しています。

<? 

require('fpdf.php'); 

class PDF_JavaScript extends FPDF { 

    // My code start 
    function OpenPrintDialog() 
    { 
     $this->IncludeJS("print(true);"); 
    } 

    function ShowMessageMessage($text) 
    { 
     $this->IncludeJS("app.alert('$text', 3);"); 
    } 
    // My code end 

    protected $javascript; 
    protected $n_js; 

    function IncludeJS($script, $isUTF8=false) { 
     if(!$isUTF8) 
      $script=utf8_encode($script); 
     $this->javascript=$script; 
    } 

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

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

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

$pdf = new PDF_JavaScript(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial', '', 20); 
$pdf->Text(90, 50, 'Print me!'); 

$pdf->OpenPrintDialog(); 
// or 
//$pdf->ShowMessageMessage('Message box me!'); 

$pdf->Output(); 

?> 

さまざまなブラウザ/ビューアで許可されているPDF JavaScript機能を利用することはできませんか?

+0

ブラウザのコンソールログをチェックしましたか? – instead

+0

@instead:F12コンソールタブについてお聞きしますか?そこでは、1つの情報(ナビゲーションが発生した)と2つの警告(DOCTYPEが予期され、前後のキャッシュが無効になっている)しか取得できません。 –

答えて

1

さまざまなブラウザ/ビューアで許可されているPDF JavaScript機能を利用することはできませんか?

これはできません。実行しようとしているJavaScriptは、Adobe AcrobatとReader、および私が知っている他のいくつかのデスクトップPDFビューアとモバイルPDFビューアでのみ動作します。 Edgeには独自のPDFビューアが組み込まれているため、Adobe ReaderやAcrobat、Foxit、Nuance、Nitro、その他のOSレベルのReaderを使用してPDFを表示するため、このコードはEdgeでは動作しません。 。

要するに、適切なビューア/ブラウザ/ OSコンボを使用してPDF内のJavaScriptを実行することはできません。

+0

しかし、それは約1ヶ月前までEdgeで働いていました... –

+0

どうすればそれが可能であろうか分かりません。 – joelgeraci

関連する問題