2015-11-23 2 views
2

J'essaie de convertir des documents html en pdf en utilisant wkhtmltopdf. La commande que j'utiliserais sur Linux: wkhtmltopdf 15.52579.html 15.52579.pdf.PHP exécutant les commandes Linux terminent trop tôt?

Cette première sortie quelque chose comme Loading pages (1/6) [> ] 0% [=====, les charges à 100%, puis montre:

Loading pages (1/6) Counting pages (2/6) Resolving links (4/6) Loading headers and footers (5/6) Printing pages (6/6) Done

Je veux php pour exécuter cette commande. J'ai essayé d'utiliser php exec("wkhtmltopdf 15.52579.html 15.52579.pdf") et shell_exec("wkhtmltopdf 15.52579.html 15.52579.pdf"), à la fois avec et sans capturer stderr en ajoutant 2>&1. J'ai également essayé les fonctions proc_open. Chaque fois, mon résultat est Loading pages (1/6) [> ] 0% [======> ] 10%. Il semble que la commande revienne trop tôt, ne permettant pas au programme de terminer et de créer réellement le pdf.

L'utilisateur sur lequel php s'exécute dispose des autorisations appropriées pour exécuter le programme. Script est exécuté par une page Web, et devrait finir en questions de secondes. Qu'est-ce que je rate?

+1

est géré php comme une page Web ou un script CLI? – Calimero

+0

@Calimero comme page Web – Inigo

+0

Combien de temps dure le script? à peu près combien de secondes, minutes, heures? – Calimero

Répondre

1

Une approche alternative consiste à utiliser une bibliothèque (php5) appelée snappy qui enveloppe wkhtmltopdf et offre une interface orientée objet propre et agréable avec un rapport d'erreurs correct.

$snappy = new Pdf('/usr/local/bin/wkhtmltopdf'); 
$html = file_get_contents('http://www.yourdomain.tld/path/15.52579.html'); 
$file = '/your/local/path/15.52579.pdf'; 
$snappy->generateFromHtml($html, $file); 

github visite pour le téléchargement et les documents complémentaires: https://github.com/knplabs/snappy