digitorum.ru

Как меня найти

Профиль

icq: 4415944

HTML 2 PDF: php libs (html2ps)

pdf, php

Развиваем тему поста "HTML 2 PDF: php libs (...)".

html2ps and html2pdf - заявлен как достаточно мощный инструмент генерации pdf. Есть зависимости от экстеншнов, но это я не считаю "плохой чертой".

<?php
	
	define('ROOT', '/html2ps_v2043/public_html/');
	
	require_once(ROOT . '/config.inc.php');
	require_once(HTML2PS_DIR . 'pipeline.class.php');
	require_once(HTML2PS_DIR . 'fetcher.url.class.php');
	parse_config_file(HTML2PS_DIR . 'html2ps.config');
	
	$g_config = array(
		'cssmedia'     => 'screen',
		'renderimages' => true,
		'renderforms'  => false,
		'renderlinks'  => true,
		'mode'         => 'html',
		'debugbox'     => false,
		'draw_page_border' => false
	);
	
	$media = Media::predefined('A4');
	$media->set_landscape(false);
	$media->set_margins(
		array(
			'left'   => 0,
			'right'  => 0,
			'top'    => 0,
			'bottom' => 0
		)
	);
	$media->set_pixels(1024);
	
	$g_px_scale = mm2pt($media->width() - $media->margins['left'] - $media->margins['right']) / $media->pixels;
	$g_pt_scale = $g_px_scale * 1.43; 
	
	$pipeline = new Pipeline;
	$pipeline->configure($g_config);
	$pipeline->fetchers[]     = new FetcherURL;
	$pipeline->data_filters[] = new DataFilterHTML2XHTML;
	$pipeline->parser         = new ParserXHTML;
	$pipeline->layout_engine  = new LayoutEngineDefault;
	$pipeline->output_driver  = new OutputDriverFPDF($media);
	$pipeline->destination    = new DestinationDownload('html2ps_v2043.pdf');
	$pipeline->process('http://digitorum.ru/files/1688/html2pdf.html', $media);
	
?>

 

В результате получаем очень даже хороший pdf-файл. Все на месте, бэкграунд сохранился, с кодировками все хорошо (не пришлось делать лишних телодвижений). Код достаточно замороченный в сравнении с другими библиотеками, но это так же не является недостатком. Работает хорошо и ладно.