Как экспортировать страницы HTML/PHP в PDF
, Как экспортировать HTML-страницу в PDF-файл?
, Имеющих документ, в котором по умолчанию можно изменить переменные внутри этого шаблона, чтобы затем экспортировать эту страницу в PDF-файл в формате А4, не испортив макет.
Пример кода:
$conteudo_html = '
<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="stylesheet.css"/>
<title></title>
</head>
<body>
<div id="header">'.$titulo.'</div>
<div class="left">'.$conteudo_esq.'</div>
<div class="right">'.$conteudo_dto.'</div>
<div id="footer">'.$rodape.'</div>
</body>
</html>';
8 answers
Я использую инструмент, который называется DOMPDF (английском языке) dompdf, что это конвертер HTML в PDF.
То, что он делает, это чтение ДАР HTML-страницы на вопрос, и преобразовать же в один документ PDF:
, Есть много примеров, от их странице (английском языке), но находится здесь работать:
QualquerCoisa.php
<?php
/* Preparação do conteúdo
* (costumo ter uma função a realizar esta tarefa)
*/
$html = '
<p>O meu HTML como quero ver no navegador!</p>
<p>Já formatado e com CSS.</p>';
/* Preparação do documento final
*/
$documentTemplate = '
<!doctype html>
<html>
<head>
<link rel="stylesheet" media="screen" href="http://www.site.com/css/style.css" type="text/css">
</head>
<body>
<div id="wrapper">
'.$html.'
</div>
</body>
</html>';
// inclusão da biblioteca
require_once("dompdf/dompdf_config.inc.php");
// alguns ajustes devido a variações de servidor para servidor
if ( get_magic_quotes_gpc() )
$documentTemplate = stripslashes($documentTemplate);
// abertura de novo documento
$dompdf = new DOMPDF();
// carregar o HTML
$dompdf->load_html($documentTemplate);
// dados do documento destino
$dompdf->set_paper("A4", "portrail");
// gerar documento destino
$dompdf->render();
// enviar documento destino para download
$dompdf->stream("dompdf_out.pdf");
exit(0);
?>
Примечания:
Это особенно требовательными, то есть, HTML-зло отформатирован будут игнорироваться.
Поддерживает практически все CSS 2.1.
Аннотация:
Находится здесь, в сокращенной версии, например, в верхней отображается, чтобы продемонстрировать, что можно генерировать PDF-файл с помощью нескольких строк кода -
<?php
$html = 'o meu HTML pronto tal como vai para o navegador!';
$documentTemplate = '
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://www.example.com/style.css">
</head>
<body>
<div id="wrapper">
'.$html.'
</div>
</body>
</html>';
require_once("dompdf/dompdf_config.inc.php");
if ( get_magic_quotes_gpc() )
$documentTemplate = stripslashes($documentTemplate);
$dompdf = new DOMPDF();
$dompdf->load_html($documentTemplate);
$dompdf->set_paper("A4", "portrail");
$dompdf->render();
// enviar documento destino para download
$dompdf->stream("dompdf_out.pdf");
exit(0);
?>
Хотя желательно иметь собственную реализацию этого типа библиотеки на языке, который мы используем, важно рассмотреть варианты, которые могут быть интегрированы в язык без больших трудностей.
Нашел в этом разделе, цитирует WKHTMLTOPDF. Это не библиотека PHP, но программа командной строки, которая делает преобразование HTML
PDF
и может быть интегрирован в PHP, как , описанная здесь - . Он основан на WebKit, и есть несколько сообщений о том, что output хорошо верным оригиналу.
Есть расширение для PHP и реализации более высокого уровня, ищет облегчения использования.
Очевидно, что вопрос о необходимости доступа в качестве root операционной системы, чтобы сделать установку и настройку, не всегда доступна hosts подрядчиков. Кроме того, некоторые пользователи испытывали трудности в установки библиотеки в некоторые дистрибутивы Linux или определенные типы процессоров.
Я уже использую Обезглавленный Браузер PhantomJS для загрузки ВЕБ-страниц, Полных подготовлены таким образом, ВЕРНЫМ отображается в обычном браузере (он интерпретирует JS и CSS), но с ним также можно провести print screen нужную страницу из подробно образом:
- Создайте файл с расширением .js
- Вставьте и сохраните следующего содержания:
Команда, которая обращается к определенной веб-страницы и сохраняет содержимое так же на .png (но можно сохранить как PDF):
var page = require('webpage').create();
page.open('http://stackoverflow.com/', function() {
page.render('stackoverflow.png');
phantom.exit();
});
-
Вызовите его следующим фома в командной строке: имя программы (в случае, если он вставлен в путь) подробнее npath в javascript-файл, созданный в пункте выше, становится следующим образом:
Phantomjs тест.js
С ним также можно установить размеры окна, в котором отображается веб-узла (это полезно, если вы хотите увидеть, как отображается сайт отзывчивым) следующим образом (это конфигурации должны быть сделаны перед page.open()):
var webPage = require('webpage');
var page = webPage.create();
page.viewportSize = {
width: 480,
height: 800
};
Вы можете вызывает его с помощью команды shell_exec таким образом:
$pathToPhantomJS = 'C:\phantomjs-2.0.0-windows\bin\phantomjs';
$pathToJSScript = 'GetPage.js';
$comand = $pathToPhantomJS . ' ' . $pathToJSScript . ' ' . $site;
shell_exec($comand);
Примечание: шаг третий переменную, которая представляет сайта, имеют своей странице printada сайт подобрал вектор аргументы, передаваемые в shell.
Можно создать ХРОН работу, чтобы выполнить команду phantomjs teste.js
в определенное время.
PhantomJS мне было очень полезно и очень configuravel и не смогу описать все по возможности, вот тогда-то я вставляя некоторые ссылки, Официальных и не Официальных, которые могут быть полезны:
Скачать
Link: http://phantomjs.org/download.html
Документация
Screen Capture: Ссылке
ViewportSize: Ссылке
Shell_exec (PHP): Ссылке
Используйте FPDF посмотрите http://www.fpdf.org/ - это очень интересно, это библиотека.
Для всех библиотек, которые я использовал, что понравилось больше всего было TCPDF
На мой взгляд, наиболее полный и простой в использовании.
, Имеет хорошую документацию и несколько практических примеров, .
Некоторые из функций доступны:
- Рендеринга содержимого HTML
- Вставить Штрих-Код (1D/2D)
- Работы с цветами CMYK
- Вставка Изображений в Векторные (EPS/AI)
- Перемещение, копирование и удаление страниц
Если вы предпочитаете, которые распознает свойства CSS, рекомендую - mPDF
Возможностей:
- Принимает UTF-8 -
- Поддержка CSS -
- Поддержка изображений JPEG, GIF, PNG, WMF и SVG
- водяного
- Библиотеке PHP Standalone
- Etc...
См. все функции http://mpdf.bpm1.com/index.php?page=Features
Я рекомендую использовать html2pdf, он всего лишь нужно положить содержимое HTML-и к выходу.
<?php
date_default_timezone_set('America/Sao_Paulo');
$content = "<!DOCTYPE html><html><body><h1>This is heading 1</h1>
<h2>This is heading 2</h2><h3>This is heading 3</h3>
<h4>This is heading 4</h4><h5>This is heading 5</h5>
<h6>This is heading 6</h6></body></html>";
require_once(dirname(__FILE__).'\html2pdf\html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->WriteHTML($content);
$html2pdf->Output('example.pdf', 'F');
?>
$html2pdf->Output
без 'F'
делает печать PDF на экране, записывает в локальный файл, без просмотра. В приведенном выше примере PDF сохраняется на сервере, и могут быть загружены позже.
Для отображения установите наружу так $html2pdf->Output('example.pdf');
Скачать http://sourceforge.net/projects/phphtml2pdf/
Примеры http://html2pdf.fr/en/example
С Помощью библиотеки jsPDF.
Колесо на стороне клиента без необходимости какой-либо обработки на сервере. Это не означает, что вам не нужен веб-сервер, конечно, но делает jsPDF совместим с любой технологией на стороне сервера, потому что вы можете обрабатывать данные на сервере и использовать результаты этой обработки в качестве источника данных, для создания файлов Pdf с помощью JavaScript.