isset($_REQUEST['compress']),
'cssmedia' => get_var('cssmedia', $_REQUEST, 255, "screen"),
'debugbox' => isset($_REQUEST['debugbox']),
'debugnoclip' => isset($_REQUEST['debugnoclip']),
'draw_page_border' => isset($_REQUEST['pageborder']),
'encoding' => get_var('encoding', $_REQUEST, 255, ""),
'html2xhtml' => !isset($_REQUEST['html2xhtml']),
'imagequality_workaround' => isset($_REQUEST['imagequality_workaround']),
'landscape' => isset($_REQUEST['landscape']),
'margins' => array(
'left' => (int)get_var('leftmargin', $_REQUEST, 10, 0),
'right' => (int)get_var('rightmargin', $_REQUEST, 10, 0),
'top' => (int)get_var('topmargin', $_REQUEST, 10, 0),
'bottom' => (int)get_var('bottommargin', $_REQUEST, 10, 0),
),
'media' => get_var('media', $_REQUEST, 255, "A4"),
'method' => get_var('method', $_REQUEST, 255, "fpdf"),
'mode' => 'html',
'output' => get_var('output', $_REQUEST, 255, ""),
'pagewidth' => (int)get_var('pixels', $_REQUEST, 10, 800),
'pdfversion' => get_var('pdfversion', $_REQUEST, 255, "1.2"),
'ps2pdf' => isset($_REQUEST['ps2pdf']),
'pslevel' => (int)get_var('pslevel', $_REQUEST, 1, 3),
'renderfields' => isset($_REQUEST['renderfields']),
'renderforms' => isset($_REQUEST['renderforms']),
'renderimages' => isset($_REQUEST['renderimages']),
'renderlinks' => isset($_REQUEST['renderlinks']),
'scalepoints' => isset($_REQUEST['scalepoints']),
'smartpagebreak' => isset($_REQUEST['smartpagebreak']),
'transparency_workaround' => isset($_REQUEST['transparency_workaround'])
);
$proxy = get_var('proxy', $_REQUEST, 255, '');
// ========== Entry point
parse_config_file('../html2ps.config');
// validate input data
if ($GLOBALS['g_config']['pagewidth'] == 0) {
die("Please specify non-zero value for the pixel width!");
};
// begin processing
$g_media = Media::predefined($GLOBALS['g_config']['media']);
$g_media->set_landscape($GLOBALS['g_config']['landscape']);
$g_media->set_margins($GLOBALS['g_config']['margins']);
$g_media->set_pixels($GLOBALS['g_config']['pagewidth']);
// Initialize the coversion pipeline
$pipeline = new Pipeline();
$pipeline->configure($GLOBALS['g_config']);
// Configure the fetchers
if (extension_loaded('curl')) {
require_once(HTML2PS_DIR.'fetcher.url.curl.class.php');
$pipeline->fetchers = array(new FetcherUrlCurl());
if ($proxy != '') {
$pipeline->fetchers[0]->set_proxy($proxy);
};
} else {
require_once(HTML2PS_DIR.'fetcher.url.class.php');
$pipeline->fetchers[] = new FetcherURL();
};
// Configure the data filters
$pipeline->data_filters[] = new DataFilterDoctype();
$pipeline->data_filters[] = new DataFilterUTF8($GLOBALS['g_config']['encoding']);
if ($GLOBALS['g_config']['html2xhtml']) {
$pipeline->data_filters[] = new DataFilterHTML2XHTML();
} else {
$pipeline->data_filters[] = new DataFilterXHTML2XHTML();
};
$pipeline->parser = new ParserXHTML();
// "PRE" tree filters
$pipeline->pre_tree_filters = array();
$header_html = get_var('headerhtml', $_REQUEST, 65535, "");
$footer_html = get_var('footerhtml', $_REQUEST, 65535, "");
$filter = new PreTreeFilterHeaderFooter($header_html, $footer_html);
$pipeline->pre_tree_filters[] = $filter;
if ($GLOBALS['g_config']['renderfields']) {
$pipeline->pre_tree_filters[] = new PreTreeFilterHTML2PSFields();
};
//
if ($GLOBALS['g_config']['method'] === 'ps') {
$pipeline->layout_engine = new LayoutEnginePS();
} else {
$pipeline->layout_engine = new LayoutEngineDefault();
};
$pipeline->post_tree_filters = array();
// Configure the output format
if ($GLOBALS['g_config']['pslevel'] == 3) {
$image_encoder = new PSL3ImageEncoderStream();
} else {
$image_encoder = new PSL2ImageEncoderStream();
};
switch ($GLOBALS['g_config']['method']) {
case 'fastps':
if ($GLOBALS['g_config']['pslevel'] == 3) {
$pipeline->output_driver = new OutputDriverFastPS($image_encoder);
} else {
$pipeline->output_driver = new OutputDriverFastPSLevel2($image_encoder);
};
break;
case 'pdflib':
$pipeline->output_driver = new OutputDriverPDFLIB16($GLOBALS['g_config']['pdfversion']);
break;
case 'fpdf':
$pipeline->output_driver = new OutputDriverFPDF();
break;
case 'png':
$pipeline->output_driver = new OutputDriverPNG();
break;
case 'pcl':
$pipeline->output_driver = new OutputDriverPCL();
break;
default:
die("Unknown output method");
};
// Setup watermark
$watermark_text = trim(get_var('watermarkhtml', $_REQUEST, 65535, ""));
if ($watermark_text != '') {
$pipeline->add_feature('watermark', array('text' => $watermark_text));
};
if ($GLOBALS['g_config']['debugbox']) {
$pipeline->output_driver->set_debug_boxes(true);
}
if ($GLOBALS['g_config']['draw_page_border']) {
$pipeline->output_driver->set_show_page_border(true);
}
if ($GLOBALS['g_config']['ps2pdf']) {
$pipeline->output_filters[] = new OutputFilterPS2PDF($GLOBALS['g_config']['pdfversion']);
}
if ($GLOBALS['g_config']['compress'] && $GLOBALS['g_config']['method'] == 'fastps') {
$pipeline->output_filters[] = new OutputFilterGZip();
}
if (get_var('process_mode', $_REQUEST) == 'batch') {
$filename = "batch";
} else {
$filename = $g_baseurl;
};
switch ($GLOBALS['g_config']['output']) {
case 0:
$pipeline->destination = new DestinationBrowser($filename);
break;
case 1:
$pipeline->destination = new DestinationDownload($filename);
break;
case 2:
$pipeline->destination = new DestinationFile($filename, 'File saved as: %name%');
break;
};
// Add additional requested features
if (isset($_REQUEST['toc'])) {
$pipeline->add_feature('toc', array('location' => isset($_REQUEST['toc-location']) ? $_REQUEST['toc-location'] : 'after'));
};
if (isset($_REQUEST['automargins'])) {
$pipeline->add_feature('automargins', array());
};
// Start the conversion
$time = time();
if (get_var('process_mode', $_REQUEST) == 'batch') {
$batch = get_var('batch', $_REQUEST);
for ($i=0; $iprocess_batch($batch, $g_media);
} else {
$status = $pipeline->process($g_baseurl, $g_media);
};
error_log(sprintf("Processing of '%s' completed in %u seconds", $g_baseurl, time() - $time));
if ($status == null) {
print($pipeline->error_message());
error_log("Error in conversion pipeline");
die();
}
?>