2013-09-09 1 views
1

В настоящее время я работаю на полу динамической странице, где я использую некоторые функции GET для ее персонализации. Я также повторяю дату нескольких мест. В нижней части этой страницы я хотел бы иметь кнопку, которая дает посетителю возможность загрузить/открыть эту страницу в формате PDF. Без заголовка. Я интегрировал DOMPDF, но я просто не могу заставить его работать правильно и нуждаться в некоторой помощи. Я пробовал пару вещей, найденных здесь на Stackoverflow, без успеха.Открыть страницу как pdf с DOMPDF

В основном, мне нужна вся страница, напечатанная в PDF, но она не должна открываться при загрузке страницы. Но срабатывает кнопка. А затем без заголовка (один spesific div). Это возможно?

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

    $html = 
     '<html><body>'. 
     '<p>This is a test for '. 
     '<?php echo htmlentities(substr(urldecode($_SERVER["QUERY_STRING"]), 1)); ?> </p>'. 
     '<p>Thank you for reading.</p>'. 
     '</body></html>'; 

    $dompdf = new DOMPDF(); 
    $dompdf->load_html($html); 
    $dompdf->render(); 
    $dompdf->stream("the_inquiry.pdf"); 
    return true; 
    ?> 
<html> 
<body> 
<div class="shouldnotPrintToPDF"> 
Content. 
</div> 
<div class="shouldPrintToPDF"> 
Sensitive content. 
<a href="the_inquiry.pdf">Open or save as PDF</a> 
</div> 
</body> 
</html> 

Это в основном наша презентация на одной странице. И содержит много текста, поэтому я не буду здесь приводить все это. Но таким образом, я должен написать страницу дважды, в $ html =, а также внутри фактического тега. И опция сохранения/открытия PDF открывается с самого начала, чего не должно быть. Я также хочу добавить часть echo htmlentities к фактическому pdf-названию .. возможно ли это? PDF открывается и содержит то, что помещено в $ html = просто отлично. Но не вызвано ссылкой.

Обновление: Когда я выполняю именно то, что вы здесь делаете, я получаю сообщение об ошибке «Запрошенный URL /inquiry.php & pdf = 1 не был найден на этом сервере». У меня есть страница, которую я пытаюсь напечатать в pdf на корневом уровне, но DOMPDF находится в/dompdf .. Я не знаю, имеет ли это какое-либо отношение к этому?

Обновление: Когда я отредактировал эту ссылку, я получу всю эту информацию на новой странице, как показано ниже.

[_parse_properties(margin:=1.2cm)(empty)_parse_properties] 
[_parse_sections[section[_parse_properties(display:=-dompdf-page) 
(counter-reset:=page)(empty)_parse_properties]#html#section] 
[section[_parse_properties(empty)_parse_properties]#empty#section] 
_parse_sections][_parse_sections[section[_parse_properties(display:=block) 
(empty)_parse_properties]#div##map##dt##isindex#section] 
[section[_parse_properties(empty)_parse_properties]#empty#section] 
_parse_sections][_parse_sections[section[_parse_properties(page-break 
-before:=avoid)(display:=block)(counter-increment:=page) 
(empty)_parse_properties]#body#section] 
[section[_parse_properties(empty)_parse_properties]#empty#section]_parse_sections] 
[_parse_sections[section[_parse_properties(display:=block)(margin:=1em 
0)(empty)_parse_properties]#p##dl##multicol#section] 
[section[_parse_properties(empty)_parse_properties]#empty#section]_parse_sections] 
[_parse_sections[section[_parse_properties(display:=block)(margin-left:=40px) 
(empty)_parse_properties]#dd#section] 
[section[_parse_properties(empty)_parse_properties]#empty#section]_parse_sections] 
[_parse_sections[section[_parse_properties(display:=block)(margin:=1em 
40px)(empty)_parse_properties]#blockquote#section] 
[section[_parse_properties(empty)_parse_properties]#empty#section]_parse_sections] 
[_parse_sections[section[_parse_properties(display:=block)(font-style:=italic) 
(empty)_parse_properties]#address#section] 
[section[_parse_properties(empty)_parse_properties]#empty#section]_parse_sections] 
[_parse_sections[section[_parse_properties(display:=block)(text-align:=center) 
(empty)_parse_properties]#center#section] 

Вы не знаете, что может быть вызвано?

прорыв:

Когда я активировал DOMPDF_DPI она открывает в PDF, но теперь весь текст идет на первой строке второй странице PDF. Например, весь текст выходит поверх друг друга. Кроме того, когда он открывает PDF-файл, & pdf = 1 включены в строку запроса htmlentities, которая выглядит очень грязной, поскольку она должна быть персонализированной страницей, а также PDF.

+0

Показать код. Что именно вы пробовали? – Cfreak

+0

Добавлена ​​некоторая информация только сейчас, не может вставить всю страницу, так как она содержит какую-то важную информацию. –

ответ

1

Вы можете установить dompdf для анализа запросов CSS @media для стандартных типов носителей (экран, печать, голос и т. Д.). По умолчанию dompdf анализирует стили типа «экран», но вы можете изменить это в файле конфигурации. См. Настройку конфигурации DOMPDF_DEFAULT_MEDIA_TYPE. Затем вам просто нужно передать исходную URL-цепочку с добавленной переменной, сообщающей страницу для рендеринга в PDF. Если ваш исходный URL-адрес примерно the_inquiry.php?name=Joe, то ваш URL-адрес в формате PDF может быть the_inquiry.php?name=Joe&pdf=1.

Ваш код будет выглядеть примерно следующим образом:

<?php 
ob_start(); 
?> 
<html> 
<head> 
    <style> 
    @media print { 
     .shouldnotPrintToPDF, .pdflink { display: none; } 
    } 
    </style> 
</head> 
<body> 
    <div class="shouldnotPrintToPDF"> 
    Content. 
    </div> 
    <div class="shouldPrintToPDF"> 
    Sensitive content. 
    <a href="<?php echo $_SERVER['PHP_SELF'] , '?' , http_build_query($_GET); ?>&amp;pdf=1" class="pdflink">Open or save as PDF</a> 
    </div> 
</body> 
</html> 
<?php 
if (isset($_GET['pdf'])) { 
    require_once 'dompdf/dompdf_config.inc.php'; 
    $html = ob_get_clean(); 
    $dompdf = new DOMPDF(); 
    $dompdf->load_html($html); 
    $dompdf->render(); 
    $dompdf->stream("the_inquiry.pdf"); 
} 
?> 
+0

Когда я делаю именно то, что вы здесь делаете, я получаю сообщение об ошибке «Запрошенный URL /inquiry.php&pdf=1 не найден на этом сервере». У меня есть страница, которую я пытаюсь напечатать в pdf на корневом уровне, но DOMPDF находится в/dompdf .. Я не знаю, имеет ли это какое-либо отношение к этому? –

+0

@ John-EilifEliassen ах, извините. Я забыл «?» в URL-адресе он должен выйти 'request.php? & pdf = 1'. Я обновил образец кода. – BrianS

+0

вы бы посмотрели мое обновление и сообщите мне, что я делаю неправильно? –