2015-12-18 1 views
2

страницу с log.php, что я прохожу на входе для преобразования в PDF, как это:Как включить внешний файл в DOMPDF загружен файл, чтобы сделать

<p>title</p> 
    <?php include 'log.html'?> 

Я м, используя этот код: только

require_once("dompdf_config.inc.php"); 
$file = "log.php"; 
$dompdf = new DOMPDF(); 
$dompdf->load_html_file($file); 
$dompdf->render(); 
$dompdf->stream("sample.pdf"); 

результат PDF-шоу "название"

Как я могу добавить внешний файл в log.php, а затем распечатать все в pdf?

ответ

1

Это происходит потому, что log.php скрипт не на стороне сервера истолковано, прежде чем передать его DOMPDF: он просто загружается как «общий» файл

Если вы используете file_get_contents и перейти к нему URL файла, файл будет интерпретирован и его содержимое будет отображаться в строке вы перейдёте к DOMPDF:

require_once("dompdf_config.inc.php"); 

//this will be something like: http://www.yourapp.com/templates/log.php 
$fileUrl = YOUR_APP_URL . "log.php"; 

//get file content after the script is server-side interpreted 
$fileContent = file_get_contents($fileUrl) ; 

$dompdf = new DOMPDF(); 

//load stored html string 
$dompdf->load_html($fileContent); 
$dompdf->render(); 
$dompdf->stream("sample.pdf"); 
+0

Это может сработать, но лучше всего использовать буферизацию вывода и визуализировать ваш PHP, прежде чем передавать его в dompdf, например. 'Ob_start(); require 'log.php'; $ html = ob_get_clean(); ob_end_clean(); '. Связанный: мой комментарий к [этому ответу] (http://stackoverflow.com/a/34355543/264628). – BrianS

+0

@BrianS: Я знаю, что вы являетесь автором dompdf, поэтому я воспользуюсь им: D: Каков недостаток использования 'file_get_content' в отношении того, что вы предложили? Я использую метод 'fgc' полностью, потому что я предпочитаю избегать буферизации вывода, пока я могу – Moppo

+0

это действительно зависит от вашего использования dompdf. В версиях dompdf до 0.6.1 (подробнее об этом следует) вы * можете * иметь dompdf анализировать PHP в своем документе. Проблема в том, что это подвергает вас потенциальному использованию системы. Если 'DOMPDF_ENABLE_PHP' истинно, вход в этих версиях является первым' eval() 'ed с выходом, захваченным буферизацией вывода. Если вы разрешаете пользовательский ввод и не строго фильтруете пользовательский контент (а иногда даже если вы это делаете), злоумышленник может запустить произвольный PHP в вашей системе. – BrianS

0

Я думаю, что вам нужно включить DOMPDF_ENABLE_PHP в вашей конфигурации.

+0

Не делай этого, если не знаешь, что делаешь.Это может привести вас к использованию системы в зависимости от того, как вы используете dompdf. Кроме того, начиная с 0.6.1 dompdf, прежде чем выводить HTML-код, он не предварительно анализирует PHP-код (например, '<% ... %>'). Встроенный скрипт по-прежнему поддерживается (например, ''), но дает вам доступ к объекту canvas, он не позволяет вам выписывать HTML для рендеринга. – BrianS