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

Last change on this file since 100623 was 100623, checked in by cedric@…, 2 years ago

Compat SPIP 3.0.x

File size: 2.3 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                exec($cmd, $output);
42                spip_log(implode("\n",$output),"wkhtmltopdf");
43
44                return;
45        }
46
47        if($methode === 'http'
48          and $wkhtmltopdf_api_url = lire_config('pdf_version/wkhtmltopdf_api_url')) {
49
50                // Appel de wkhtmltopdf via API http
51
52                // lire le html et le renseigner dans les arguments
53                $html = "";
54                lire_fichier($html_file, $html);
55                $args['html'] = normalise_retours_ligne_html($html);
56                if (isset($args['--header-html'])) {
57                        lire_fichier($args['--header-html'], $args['--header-html']);
58                        $args['--header-html'] = normalise_retours_ligne_html($args['--header-html']);
59                }
60                if (isset($args['--footer-html'])) {
61                        lire_fichier($args['--footer-html'], $args['--footer-html']);
62                        $args['--footer-html'] = normalise_retours_ligne_html($args['--footer-html']);
63                }
64
65                include_spip('inc/distant');
66                if(function_exists('recuperer_url')) {
67                        $res = recuperer_url($wkhtmltopdf_api_url, array(
68                                'methode' => 'POST',
69                                'datas' => $args,
70                                'file' => $pdf_file,
71                        ));
72                }
73                else {
74                        $res = recuperer_page($wkhtmltopdf_api_url, $pdf_file, false, null, $args);
75                }
76
77                spip_log($wkhtmltopdf_api_url . " $html_file -> $pdf_file : " . var_export($res, true), "wkhtmltopdf");
78
79                return;
80        }
81
82        spip_log("methode $methode inconnue ou non configuree","wkhtmltopdf");
83
84}
85
86function &normalise_retours_ligne_html(&$texte) {
87        $texte = str_replace("\r\n", "\n", $texte);
88        $texte = str_replace("\r", "\n", $texte);
89        $texte = str_replace("\n", "\r\n", $texte);
90
91        return $texte;
92}
Note: See TracBrowser for help on using the repository browser.