| 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 |
?>
|