Есть разные пути, простые и сложные (вплоть до написания своей PHP библиотеки для конвертации HTML в PDF). Но мы трудным путем не пойдем, а воспользуемся готовым сервером, выполняющим данный экспорт. Для самых ленивых приведу пример его использования на PHP.
Сервис расположен по адресу — pdfmyurl.com. В дебрях руководства есть примеры с использованием CURL, но мы попробуем вариант проще — используем функцию file_get_contents. Запросим pdf файл и дадим сохранить его пользователю.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php //url данной статьи $siteurl = 'shra.ru/2012/11/konvertiruem-html-v-pdf/'; //имя файла, под которым будет предложено сохранить данную страницу в PDF $filename = 'shra.ru.pdf'; //сформируем настройки потока, для подключения к серверу //имитируем работу из мозиллы $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Host: pdfmyurl.com\r\n" . "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 WebMoney Advisor\r\n" . "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" . "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\n" . "Accept-Encoding: gzip, deflate\r\n" . "DNT: 1\r\n" . "Connection: keep-alive\r\n", ) ); $context = stream_context_create($opts); //делаем запрос, качаем файл $file = file_get_contents("http://pdfmyurl.com?url=" . urlencode($siteurl), false, $context); //формируем заголовки для выдачи файла пользователю header('Content-Type: application/download; charset=utf-8'); header('Content-Disposition: attachment; filename="'. basename($filename) . '"'); header('Content-Length: ' . strlen($file)); echo $file; |
Кроме самого простого варианта — указания URL, сервер может принимать HTML-код напрямую. Экспорт можно настроить с помощью большого числа необязательных параметров.