Как экспортировать страницы 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>';
 68
Author: Maniero, 2013-12-20

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);

?>
 56
Author: Zuul, 2020-06-11 14:45:34

Хотя желательно иметь собственную реализацию этого типа библиотеки на языке, который мы используем, важно рассмотреть варианты, которые могут быть интегрированы в язык без больших трудностей.

Нашел в этом разделе, цитирует WKHTMLTOPDF. Это не библиотека PHP, но программа командной строки, которая делает преобразование HTML PDF и может быть интегрирован в PHP, как , описанная здесь - . Он основан на WebKit, и есть несколько сообщений о том, что output хорошо верным оригиналу.

Есть расширение для PHP и реализации более высокого уровня, ищет облегчения использования.

Очевидно, что вопрос о необходимости доступа в качестве root операционной системы, чтобы сделать установку и настройку, не всегда доступна hosts подрядчиков. Кроме того, некоторые пользователи испытывали трудности в установки библиотеки в некоторые дистрибутивы Linux или определенные типы процессоров.

 17
Author: utluiz, 2017-05-23 12:37:23

Я уже использую Обезглавленный Браузер 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): Ссылке

 10
Author: Ricardo, 2015-04-25 14:59:06

Используйте FPDF посмотрите http://www.fpdf.org/ - это очень интересно, это библиотека.

 4
Author: Leandro Amorim, 2014-01-30 03:34:52

Для всех библиотек, которые я использовал, что понравилось больше всего было TCPDF

На мой взгляд, наиболее полный и простой в использовании.

, Имеет хорошую документацию и несколько практических примеров, .

Некоторые из функций доступны:

  • Рендеринга содержимого HTML
  • Вставить Штрих-Код (1D/2D)
  • Работы с цветами CMYK
  • Вставка Изображений в Векторные (EPS/AI)
  • Перемещение, копирование и удаление страниц
 4
Author: Luiz Reginaldo, 2014-01-31 14:09:43

Если вы предпочитаете, которые распознает свойства CSS, рекомендую - mPDF

Возможностей:

  • Принимает UTF-8 -
  • Поддержка CSS -
  • Поддержка изображений JPEG, GIF, PNG, WMF и SVG
  • водяного
  • Библиотеке PHP Standalone
  • Etc...

См. все функции http://mpdf.bpm1.com/index.php?page=Features

Download: http://www.mpdf1.com/mpdf/index.php?page=Download

 4
Author: byteman, 2014-05-29 19:56:30

Я рекомендую использовать 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

 3
Author: Rogerio de Moraes, 2015-08-04 11:22:08

С Помощью библиотеки jsPDF.

Колесо на стороне клиента без необходимости какой-либо обработки на сервере. Это не означает, что вам не нужен веб-сервер, конечно, но делает jsPDF совместим с любой технологией на стороне сервера, потому что вы можете обрабатывать данные на сервере и использовать результаты этой обработки в качестве источника данных, для создания файлов Pdf с помощью JavaScript.

 0
Author: Ulysses Alves, 2015-11-24 23:07:00