Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
 
3
/**
4
 * Thanks for JensE for providing the code of fetcher class
5
 */
6
 
7
require_once(dirname(__FILE__).'/../config.inc.php');
8
require_once(HTML2PS_DIR.'pipeline.factory.class.php');
9
 
10
error_reporting(E_ALL);
11
ini_set("display_errors","1");
12
@set_time_limit(10000);
13
parse_config_file(HTML2PS_DIR.'html2ps.config');
14
 
15
/**
16
 * Handles the saving generated PDF to user-defined output file on server
17
 */
18
class MyDestinationFile extends Destination {
19
  /**
20
   * @var String result file name / path
21
   * @access private
22
   */
23
  var $_dest_filename;
24
 
25
  function MyDestinationFile($dest_filename) {
26
    $this->_dest_filename = $dest_filename;
27
  }
28
 
29
  function process($tmp_filename, $content_type) {
30
    copy($tmp_filename, $this->_dest_filename);
31
  }
32
}
33
 
34
class MyFetcherMemory extends Fetcher {
35
  var $base_path;
36
  var $content;
37
 
38
  function MyFetcherMemory($content, $base_path) {
39
    $this->content   = $content;
40
    $this->base_path = $base_path;
41
  }
42
 
43
  function get_data($url) {
44
    if (!$url) {
45
      return new FetchedDataURL($this->content, array(), "");
46
    } else {
47
      // remove the "file:///" protocol
48
      if (substr($url,0,8)=='file:///') {
49
        $url=substr($url,8);
50
        // remove the additional '/' that is currently inserted by utils_url.php
51
        if (PHP_OS == "WINNT") $url=substr($url,1);
52
      }
53
      return new FetchedDataURL(@file_get_contents($url), array(), "");
54
    }
55
  }
56
 
57
  function get_base_url() {
58
    return 'file:///'.$this->base_path.'/dummy.html';
59
  }
60
}
61
 
62
/**
63
 * Runs the HTML->PDF conversion with default settings
64
 *
65
 * Warning: if you have any files (like CSS stylesheets and/or images referenced by this file,
66
 * use absolute links (like http://my.host/image.gif).
67
 *
68
 * @param $path_to_html String HTML code to be converted
69
 * @param $path_to_pdf  String path to file to save generated PDF to.
70
 * @param $base_path    String base path to use when resolving relative links in HTML code.
71
 */
72
function convert_to_pdf($html, $path_to_pdf, $base_path='') {
73
  $pipeline = PipelineFactory::create_default_pipeline('', // Attempt to auto-detect encoding
74
                                                       '');
75
 
76
  // Override HTML source
77
  // @TODO: default http fetcher will return null on incorrect images
78
  // Bug submitted by 'imatronix' (tufat.com forum).
79
  $pipeline->fetchers[] = new MyFetcherMemory($html, $base_path);
80
 
81
  // Override destination to local file
82
  $pipeline->destination = new MyDestinationFile($path_to_pdf);
83
 
84
  $baseurl = '';
85
  $media =& Media::predefined('A4');
86
  $media->set_landscape(false);
87
  $media->set_margins(array('left'   => 0,
88
                            'right'  => 0,
89
                            'top'    => 0,
90
                            'bottom' => 0));
91
  $media->set_pixels(1024);
92
 
93
  global $g_config;
94
  $g_config = array(
95
                    'cssmedia'     => 'screen',
96
                    'scalepoints'  => '1',
97
                    'renderimages' => true,
98
                    'renderlinks'  => true,
99
                    'renderfields' => true,
100
                    'renderforms'  => false,
101
                    'mode'         => 'html',
102
                    'encoding'     => '',
103
                    'debugbox'     => false,
104
                    'pdfversion'    => '1.4',
105
                    'draw_page_border' => false
106
                    );
107
 
108
  $pipeline->configure($g_config);
109
  $pipeline->process_batch(array($baseurl), $media);
110
}
111
 
112
convert_to_pdf(file_get_contents('../temp/long.html'), '../out/test.pdf');
113
 
114
?>