как автоматически загрузить (на HD пользователя) PDF-файл, сгенерированный с помощью wkhtmltopdf или быстро? Вы знаете... пользователь щелкает ссылку ("Скачать эту страницу как PDF") и загружает PDF на свой HD.
С Уважением
Хави
как автоматически загрузить (на HD пользователя) PDF-файл, сгенерированный с помощью wkhtmltopdf или быстро? Вы знаете... пользователь щелкает ссылку ("Скачать эту страницу как PDF") и загружает PDF на свой HD.
С Уважением
Хави
Вот как я это делаю в RoR
filename = "MyNew.pdf"
fullpath = "#{RAILS_ROOT}/tmp/charts/#{filename}"
# system issues a shell command
system "/usr/local/bin/wkhtmltopdf \"http://localhost/page/to/pdf?download=t\" #{fullpath}"
send_data(File.read(fullpath), :type => 'application/pdf', :filename => filename, :disposition => "attachment;filename=\"#{filename}\"")
PHP: есть лучшие способы заставить wkhtmltopdf работать с PHP, однако мне нравится иметь возможность распечатать свою командную строку, чтобы мне было легче отлаживать результирующую страницу. Дело не только в коде, но и в правильности полей и других деталей страницы. Здесь wkhtmltopdf — это двоичный файл в корневом каталоге веб-сайта, поля равны нулю, фон выключен:
$do_it=$_SERVER["DOCUMENT_ROOT"]."/wkhtmltopdf --dpi 600 -B 0 -L 0 -R 0 -T 0 --no-background http://".$_SERVER['SERVER_NAME']."/".$filename." ".$_SERVER["DOCUMENT_ROOT"]."/".$pdf_url;
//var_dump($do_it); // uncomment to see your wkhtmltopdf parameters...
$whatever=passthru($do_it);
header('Content-disposition: attachment; filename='.$pdf_url);
header('Content-type: application/pdf');
readfile($pdf_url);
Я не думаю, что многое возвращается при запуске passthru, когда дело доходит до сообщений об ошибках, однако он запускает все, что вы отправляете. Что касается заголовка, важно установить тип содержимого PDF, иначе браузер не будет знать, что с ним делать.
На веб-сайте Snappy также есть готовый пример именно для этого.
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $snappy->getOutput('http://www.github.com');