source: spip-zone/_plugins_/pdf_version/trunk/inc/exec_wkhtmltopdf.php @ 113752

Last change on this file since 113752 was 113752, checked in by root, 3 months ago

plus de log sur l'exec binaire

File size: 2.5 KB
Line 
1<?php
2/**
3 * Plugin PDF_VERSION pour Spip 3.x
4 * Licence GPL (c) 2016 Cedric
5 *
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10/**
11 * Appel de wkhtml, soit par ligne de commande, soit par API HTTP sur un site qui en dispose en ligne de commande
12 * @param $html_file
13 * @param $pdf_file
14 * @param array $args
15 */
16function inc_exec_wkhtmltopdf_dist($html_file, $pdf_file, $args = array()) {
17
18        include_spip('inc/config');
19
20        $methode = lire_config('pdf_version/methode','exec');
21        if ($methode === 'exec'
22          and $wkhtmltopdf_path = lire_config('pdf_version/wkhtmltopdf_path','/usr/local/bin/wkhtmltopdf')) {
23
24                // Appel de wkhtmltopdf en ligne de commande
25
26                $args[] = $html_file;
27                $args[] = $pdf_file;
28
29                $cmd = $wkhtmltopdf_path;
30                foreach ($args as $k=>$v){
31                        if (!is_numeric($k)){
32                                $cmd .= " $k";
33                        }
34                        $cmd .= ' '.escapeshellarg($v);
35                }
36
37                $cmd .= '  2>&1';
38                spip_log($cmd,"wkhtmltopdf");
39
40                $output = array();
41                $return_var = 0;
42                exec($cmd, $output, $return_var);
43                spip_log(implode("\n",$output),"wkhtmltopdf");
44                if ($return_var) {
45                        spip_log("Erreur $return_var","wkhtmltopdf" . _LOG_ERREUR);
46                }
47
48                return true;
49        }
50
51        if($methode === 'http'
52          and $wkhtmltopdf_api_url = lire_config('pdf_version/wkhtmltopdf_api_url')) {
53
54                // Appel de wkhtmltopdf via API http
55
56                // lire le html et le renseigner dans les arguments
57                $html = "";
58                lire_fichier($html_file, $html);
59                $args['html'] = normalise_retours_ligne_html($html);
60                if (isset($args['--header-html'])) {
61                        lire_fichier($args['--header-html'], $args['--header-html']);
62                        $args['--header-html'] = normalise_retours_ligne_html($args['--header-html']);
63                }
64                if (isset($args['--footer-html'])) {
65                        lire_fichier($args['--footer-html'], $args['--footer-html']);
66                        $args['--footer-html'] = normalise_retours_ligne_html($args['--footer-html']);
67                }
68
69                include_spip('inc/distant');
70                if(function_exists('recuperer_url')) {
71                        $res = recuperer_url($wkhtmltopdf_api_url, array(
72                                'methode' => 'POST',
73                                'datas' => $args,
74                                'file' => $pdf_file,
75                        ));
76                }
77                else {
78                        $res = recuperer_page($wkhtmltopdf_api_url, $pdf_file, false, null, $args);
79                }
80
81                spip_log($wkhtmltopdf_api_url . " $html_file -> $pdf_file : " . var_export($res, true), "wkhtmltopdf");
82
83                return true;
84        }
85
86        spip_log("methode $methode inconnue ou non configuree","wkhtmltopdf");
87        return false;
88
89}
90
91function &normalise_retours_ligne_html(&$texte) {
92        $texte = str_replace("\r\n", "\n", $texte);
93        $texte = str_replace("\r", "\n", $texte);
94        $texte = str_replace("\n", "\r\n", $texte);
95
96        return $texte;
97}
Note: See TracBrowser for help on using the repository browser.