2016-04-15 2 views
3

ich die html pdf bin Umwandlung wkhtmltopdf Verwendung und Umwandlung arbeitet völlig in Ordnung unter Code verwendet:Execute Javascript in PDF

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

Nun nehmen wir dort einige DIV Akte versteckt in html sind. Sprich:

In Haryana.htm

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

so, das Wort 'Hallo' wird auch nicht in der konvertierten PDF drucken (was offensichtlich ist).

Was ich tun müssen, um alle versteckten Text in die konvertierten PDF zeigen.

Was habe ich versucht, bis jetzt ist, erstellt eine JS-Datei external-js.js sagen, der Code alle

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

die versteckten DIV ist und auch zu zeigen, hat die Anwendung diese Datei JS, während ein PDF wie unten zu schaffen:

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

Noch, PDF konvertiert gut, aber versteckter Text sind nicht sichtbar.

Bitte helfen Sie mir, den ganzen versteckten Text in pdf zu zeigen. Ich hoffe, ich kann die Frage klären.

Hinweis: Ich kann keine Änderungen in den HTML-Dateien vornehmen, weil wir Tausende solcher Dateien haben.

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 

, die eine gewisse Warnung haben: Wenn debug-javascript Option und laufen Sie den folgenden Code in Kitt

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

i folgende Ausgabe bin immer hinzugefügt. Ich bin sicher, dass diese Warnung wegen --run-script /var/www/html/search/external-js.js kommt, aber warum? Ich habe dies gemäß der offiziellen Dokumentation hinzugefügt.

Ich bin fest mit diesem ... kann mir bitte jemand helfen?

+0

Ich denke, Sie sollten eine Funktion in den HTML-Dateien hinzufügen, wie Seitenzahlungsfunktion. Und je nachdem, ob das Dokument die Nummer einer Seite findet oder nicht, ändern Sie den Stil in "style.display = 'block'". Sie können alle HTML-Dateien, die Sie auf einmal haben, mit Java ändern. –

+0

Ich kann die HTML-Dateien nicht ändern, da dieselbe Datei auch für das Rendern im Browser verwendet wird. –

Antwort

1

Endlich, nach getan viel R & D bekomme ich die Lösung :-). Ich war auf dem richtigen Weg und was ich getan habe ist, anstatt die JS-Skript-URL zu übergeben, habe ich nur den gesamten Skript-Inhalt zu wkhtmltopdf übergeben. Hier

ist der Code:

$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'); 

Das ist es :-)

Ich fühle mich kann ein anderes Benutzer Gesicht gleiches Problem in Zukunft so sein, ich bin Entsendung dies als Antwort.