2010-09-24 3 views
4

Я не очень часто использую PHP, и сейчас у меня проблема. Мне нужно сохранить сайт веб-браузера в формате pdf. Я использую сейчас mPDF (что было предложено в wiki stackoverflow), и, похоже, он работает очень хорошо (я просто просто написал короткий html-код в php-переменную, а затем создал pdf-файл).получить html-код в переменную php

Но теперь я должен получить html-код фактического сайта в браузере и сохранить его в переменной php. Как я могу это сделать?

+0

Хорошо, мне нужно добавить более подробную информацию. Сайт создается php-кодом. Поэтому, если я передам этот код принтеру, это будет беспорядок. Кроме того, он должен быть удобным для пользователя, что означает, что пользователь просто может нажать кнопку сохранения, а затем будет создан файл pdf. (Пользователь видит страницу подтверждения html, и он хочет сохранить эту страницу подтверждения как pdf) – mkn

ответ

7

Вы, вероятно, может принести удаленное содержимое с помощью ПГПС file_get_contents()-function:

$html = file_get_contents('http://example.org'); 

Если это не убедитесь, что у вас есть allow_url_fopen в вашем php.ini.

+0

проблема заключается в том, что во время процесса ссылка не изменяется. например, ваш заказ содержит 2 страницы. первая страница = выберите продукт, вторая страница = подтверждение. теперь я просто хочу сохранить страницу подтверждения в формате pdf. когда я использую ваше решение, то у меня есть файл pdf, содержащий первую страницу, которая также пуста (вы не выбрали свой выбор), потому что с файлом_get_contents ('') он загружает страницу из новой на ... – mkn

+0

Хорошо, я получаю проблема. Проблема заключается в том, что сервер не может (или не должен) использовать сеанс клиентов, чтобы получить тот же вид веб-сайта. Я думаю, вам может понадобиться ['ob_ *' -functions] (http://php.net/ob_), чтобы захватить вывод страницы, которую вы хотите поместить в свой PDF-файл. Сделайте это так: если пользователь вызывает страницу с параметром печати (предоставленным вашей ссылкой на печать), вы печатаете страницу как обычно. Но вы делаете это, как предложил Сарфраз. 'ob_start()' перед тем, как ваша страница будет напечатана, 'ob_get_contents()' потом, чтобы получить результат. 'ob_end_clean()' предотвращает отправку PHP на выходе. – jwueller

+0

Что значит «распечатать вашу страницу как обычно?». На странице написано php, что означает, что в нем содержится сочетание html и php-кода. прямо сейчас кнопка печати просто вызывает другой .php-файл (action = 'printpdf.php'), и этот файл имеет небольшой код, который печатает содержимое моей предоставленной переменной php. – mkn

1

Это, вероятно, слишком много, но вы можете попробовать использовать SimpleHTML DOM, который может загружать удаленный веб-сайт и извлекать его HTML.

6

Если я вас правильно понимаю, вы можете хранить содержимое страницы в переменную PHP, как это:

ob_start(); 

// your html code goes here 

$contents = ob_get_contents(); 
ob_end_clean(); 

// see the contents now 
echo $contents; 
+2

'$ contents = ob_get_clean();' самостоятельно выполнит задание, так как ob_get_clean() возвращает значение буфера и очищает его. – Peeeech

Смежные вопросы