7

ここに質問があります。

バッファリングを使用して、mpdfを使用してpdfファイルを取得しました。

しかし、私はここで少し混乱しました。

バッファリングしていたページにJavaScriptがありますが、JavaScriptから生成されたコンテンツがPDFに変換されていません。

これをまっすぐにしましょう。

私はこの要素を持っているとしましょう

<div id='text'></div>

私のページには、そのdivにテキストを追加するためのJavaScriptコードがあります。結果は...

[ブラウザでページを開く]

<div id='text'>TEXT I ADDED USING JAVASCRIPT</div>

しかし、私がそれをpdfに変換するとき...

<div id='text'></div> (I DIDNT GET THAT TEXT)

これは使用されるスクリプトです..template.php

ob_start();

// content of page (included inline javascript code)

$yourfile = ob_get_content();
$_SESSION[forms] = $yourfile;
echo $yourfile;

convert.php

session_start();
include("MPDF54/mpdf.php");

$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); 

$mpdf->SetDisplayMode('fullpage');

$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list

$mpdf->WriteHTML($_SESSION[forms]);

$mpdf->Output();

誰でもこれで私を助けることができますか?

4

2 に答える 2

12

mpdf基本的な JavaScript をサポートします。

PDF リーダーは基本的な JavaScript 関数を理解します。

mpdf ライブラリの関数をprint();使用して追加できるように。SetJS()

include("MPDF54/mpdf.php");

$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); 

$mpdf->SetDisplayMode('fullpage');

$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list

$mpdf->WriteHTML($_SESSION[forms]);

$mpdf->SetJS('print();')  //JS code with <script></script> tags.

$mpdf->Output();
于 2013-02-26T09:15:02.453 に答える
4

PHP *PDF ライブラリ (tcpdf、fpdf、mpdf など...) は、javascript コードを実行できません。これは、javascript インタープリターとブラウザーのレンダリング機能が必要になるためです。クライアント側のプログラミング。それに伴い、css やマークアップの解釈も非常に貧弱です。

ただし、通常のブラウザーのように javascript と css をレンダリングできる代替手段を探している場合は、wkhtmltopdfをお勧めします。

wkhtmltopdfは、webkit レンダリング エンジンと qt を使用して html を pdf に変換するシェル ユーティリティです。何をレンダリングするかを指定するパラメーターを使用してコンソール プログラムとして実行され、多数のオプションがあります。基本的に、JavaScript が完了するまで 5 秒待ってページをロードし、pdf を作成するように指示できます。Linux と Windows のバージョンが利用可能ですが、Linux の場合は X11 ライブラリをインストールする必要があります。

他にもいくつかのオプションがあると確信していますが、私は何年も wkhtmltopdf を使用しており、Web ページが Chrome または Safari ブラウザーで表示されるのとまったく同じように見える PDF ファイルを生成し、JavaScript の実行も完全に機能します。

于 2012-12-12T18:58:38.823 に答える