2016-04-15 8 views
3

でJavascriptを実行します。私は<a href="http://wkhtmltopdf.org/" rel="nofollow">wkhtmltopdf</a>を使用してHTMLをPDFに変換していますし、変換コードの下に使用して完全に正常に動作しているPDF

shell_exec('wkhtmltopdf http://www.example.com/Haryana.htm Haryana.pdf');

さて、いくつかのDIVの隠しhtmlファイルにはあるとします。 (明らかである)ので、単語 'こんにちは' は、変換されたPDFに印刷されません

<div style="display:none;">Hello</div> 

Haryana.htmでは、と言います。

私がする必要があるのは、変換されたPDFにすべての隠しテキストを表示することです。

shell_exec('wkhtmltopdf --enable-javascript --run-script /var/www/html/search/external-js.js http://www.example.com/Haryana.htm Haryana.pdf'); 
:私は、JSファイルを作成し、今まで試したどのような

は、すべての隠しDIVの

var elements = document.getElementsByTagName('DIV') 
for (var i = 0; i < elements.length; i++){ 
    if (elements[i].style.display == 'none') { 
      elements[i].style.display = 'block'; 
    } 
} 

を表示するコードを持っており、また以下のようなPDFを作成するときにこれを適用すると、ファイルをJSたexternal-js.jsを言います

まだ、PDFは正しく変換されていますが、非表示のテキストは表示されません。

pdfの隠し文字をすべて表示させてください。私はその質問をクリアできることを願っています。

注::このようなファイルが何千もあるので、私はhtmlファイルを変更できません。

UPDATE:いくつかの警告を持っている

Loading pages (1/6) 
Warning: undefined:0 SyntaxError: Invalid flags supplied to RegExp constructor. 
Counting pages (2/6) 
Resolving links (4/6) 
Loading headers and footers (5/6) 
Printing pages (6/6) 
Done 

debug-javascriptオプションを追加し、パテ

wkhtmltopdf --debug-javascript --enable-javascript --run-script /var/www/html/search/external-js.js http://www.example.com/Haryana.htm Haryana.pdf; 

で次のコードを実行しているとき、私は、出力以下になっています。私はこの警告が--run-script /var/www/html/search/external-js.jsのため来ていると確信していますが、なぜですか?私はこれを公式の文書に従って追加しました。

私はこれにこだわっています。誰かが私を助けてくれますか?

+0

私はページ番号付け機能のようなHTMLファイルにfunktionを追加するべきだと思います。また、ドキュメントにはページの番号が見つかるかどうかに基づいて、divのスタイルが「style.display = 'block'」に変更されます。あなたはJavaで一度に持っているすべてのhtmlファイルを変更することができます。 –

+0

同じファイルがブラウザでのレンダリングにも使用されるため、HTMLファイルを変更できません。 –

答えて

1

最後に、多くのR & Dを実行した後、私は解決策を得ます:-)。 私は正しい軌道に乗っていました。私はJSスクリプトのURLを渡す代わりに、スクリプトコンテンツ全体をwkhtmltopdfに渡しました。

$script = 'var elements = document.getElementsByTagName(\'DIV\'); 
      for (var i = 0; i < elements.length; i++) 
      { 
      if (elements[i].style.display == \'none\') 
      { 
      elements[i].style.display = \'block\'; 
      } 
      }'; 

shell_exec('wkhtmltopdf --run-script "'.$script.'" http://www.example.com/Haryana.htm Haryana.pdf'); 

私は答えとしてこれを掲示しています、ので、将来的には他のユーザーの顔と同じ問題がある可能性があります感じて:-)

それだ:ここで

はコードです。