2017-04-04 1 views
1

Je suis en train de tester dompdf et obtenu ce travail très agréable pour mes besoins, y compris le style CSS, l'affichage du contenu à partir d'une base de données extraites de MySQL, etc.Y a-t-il un moyen de faire fonctionner Javascript dans les fichiers PDF générés par DOMPDF?

Maintenant, j'essayé d'utiliser un certain Javascript, mais il ne fonctionne pas. J'ai utilisé un script très simple pour le test:

HTML quelque part sur la page:

<div id='mydiv1' style='width: 100%;height:20px;background:#ddd;'></div> 

La JS (juste au-dessus de la balise de fermeture </body> (mais j'ai aussi essayé juste après la balise d'ouverture <body>):

<script> 
    document.getElementById('mydiv1').innerHTML = 'this is a test'; 
</script> 

Quand je fais l'écho de cette page dans le navigateur (je me fais l'écho d'une variable qui contient la page HTML/PHP complet), ce texte apparaît dans la DIV. Quand je mets la même variable dans loadHtml de dompdf puis rendu et le sortir, le texte généré par le script n'apparaît pas dans le PDF (le reste de la page le fait). Donc, ma question est la suivante: Y a-t-il un moyen de faire fonctionner le Javascript dans les fichiers PDF générés par DOMPDF?

+1

Cette réponse à [Exécuter javascript PHP] (http: // stackoverflow. com/a/2699303/5217142) utilise [HtmlUnit] (http://htmlunit.sourceforge.net/) pour générer du code HTML à partir d'une page Web et peut être intéressant. – traktor53

Répondre

1

Malheureusement, DOMPDF ne supporte pas javascript. Vous pouvez envisager de regarder quelque chose comme phantomjs, qui peut être used to save pdf files, ainsi.

+0

Merci pour votre réponse. Mais la chose la plus importante pour moi est la fonctionnalité PHP et aussi la possibilité de récupérer du contenu via MYSQL, et il semble que ce n'est pas possible avec phantomjs. – Johannes

+0

Je viens de voir cette ligne sur la page "Caractéristiques" de DOMPDF dans Github: "support PDF Javascript intégré (avec des scripts compatibles avec l'API PDF Documents)". Mais je suppose que cela signifie seulement des choses JS qui peuvent être directement écrites dans des balises HTML, le cas échéant (?) – Johannes

+1

Si je ne me trompe pas, ils parlent d'intégrer javascript dans le fichier PDF lui-même, bien que ce soit par quelques visionneuses pdf] (http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdf) –

0

Il y a une option dompdf pour activer le javascript en ligne:

$ isJavascriptEnabled = true;

Heres un exemple de comment utiliser les options de dompdf:

$HTML = <<<HTML 
!DOCTYPE html> 
<html> 
<head> 
<body> 
some html 
</body> 
<script> somejs </script> 
</head> 
</html> 
HTML; 

require_once "sites/all/libraries/dompdf/autoload.inc.php"; 
use Dompdf\Dompdf; 
use Dompdf\Options; 
$options = new Options(); 
$options->set('isJavascriptEnabled', TRUE); 
$dompdf = new Dompdf($options); 
$dompdf->load_html($HTML); 
$dompdf->setPaper('A4', 'portrait'); 
$dompdf->render(); 
$dompdf->stream('blah.pdf'); 

J'ai pris cette de la page d'options de dompdf: https://github.com/dompdf/dompdf/blob/master/src/Options.php

+0

Merci beaucoup pour votre réponse! Cependant, cette option * est * activée/true par défaut, également dans la situation de test que j'ai décrite ci-dessus, et cela n'a pas fonctionné ... – Johannes