Генератор случайных чисел   •   Online-инструменты
2 513 просм
0 комм
Поделиться:

Dompdf – мощнейший PHP-класс для конвертирования HTML-документов в PDF-файлы

Не так давно передо мной встала задача – организовать экспорт HTML-данных в один из популярных графических файлов или же в PDF.

Поскольку получать на выходе картинку в данном случае мне показалось безумием, я решил остановиться на PDF.

Поискав информацию в Интернете и испробовав уйму различных вариантов реализации похожего функционала, я обнаружил, что часть из них работают некорректно, а часть – попросту не работает с кириллицей (русским языком).

Это, конечно, меня не огорчило, и потратив еще немного времени (как говорится, кто ищет – тот всегда найдет), я нашел-таки тот инструмент, который помог мне решить поставленные задачи.

Это класс «Dompdf» для PHP. Что же он из себя представляет?

  1. Есть поддержка русского языка.
  2. Полностью бесплатен.
  3. Легок в использовании.
  4. Открытый исходный код.
  5. Поддержка HTML-разметки и CSS-стилей.
  6. Поддержка изображений.

Возможно, что-то забыл упомянуть, но согласитесь – звучит впечатляюще.

Так вот, именно этот класс помог мне превратить некий документ HTML в идентичный PDF. Именно тому, как им пользоваться, и будет посвящена эта статья.

Итак, прежде всего, для того чтобы воспользоваться этим классом, вы скачиваете архив в конце статьи.

Далее загружаете файлы к себе на сервер и осуществляете подключение скрипта в вашем PHP-файле:

require_once("dompdf/dompdf_config.inc.php");

Отлично, теперь для примера добавим некий HTML-документ:

$html = <<<HTML

	<!DOCTYPE html>
	
	<html>
	
		<head>
		
			<meta charset="utf-8">
			<title>Test Page</title>
			
		</head>
		
		<body>
			
			<p>Привет, <span style="color: green">Мир</span>!</p>
			
		</body>
		
	</html>
	
HTML;

Здесь мы указываем документ непосредственно в теле скрипта, но также вы можете заменить всю строку, например, на:

$html = file_get_contents("LINK");

Где «LINK» – ссылка на HTML-страницу, которую нужно конвертировать.

Ну и финальные штрихи – это добавить соответствующие теги класса:

$dompdf = new DOMPDF(); // Создаем обьект
$dompdf->load_html($html); // Загружаем в него наш HTML-код
$dompdf->render(); // Конвертируем HTML в PDF
$dompdf->stream("new_file.pdf"); // Выводим результат на скачивание

И общая картина получается такая:

<?php

	header("Content-Type: text/html; charset=utf-8");

	$html = <<<HTML

		<!DOCTYPE html>
	
		<html>
	
			<head>
		
				<meta charset="utf-8">
				<title>Test Page</title>
			
			</head>
		
			<body>
			
				<p>Привет, <span style="color: green">Мир</span>!</p>
			
			</body>
		
		</html>
	
HTML;

	$dompdf = new DOMPDF();
	$dompdf->load_html($html);
	$dompdf->render();
	$dompdf->stream("new_file.pdf");

?>

Если вы не хотите, чтобы при посещении скрипта происходило скачивание полученного PDF-файла, а хотите поместить данные в переменную для дальнейшего использования, то строку:

$dompdf->stream("new_file.pdf");

замените на:

$new_file = $dompdf->output(0);

Еще один важный момент: если ссылки на изображения прописаны не относительные, а абсолютные (то есть не «/logo.png», а «https://your_site.com/logo.png»), то в таком случае откройте файл dompdf_config.inc.php в папке /dompdf/ и строку:

def("DOMPDF_ENABLE_REMOTE", false);

замените на:

def("DOMPDF_ENABLE_REMOTE", true);

Вот, собственно, и все. Очень важный момент: если вы получаете ошибку при конвертировании, то всего скорее, вы используете новые свойства стилей (как было у меня), в таком случае – просто постарайтесь оптимизировать (упростить) свой код.

ФайлРазмерСсылка
0
комментариев
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.