PHP: как использовать Snappy (оболочка wkhtmltopdf)

Я пытаюсь создать PDF-файл с помощью Snappy. Я уже прочитал документацию по адресу https://github.com/KnpLabs/snappy и попробовал код.

require_once '/KnpLabs/src/autoload.php';

use Knp\Snappy\Pdf;

$snappy = new Pdf('C:\Program Files (x86)\wkhtmltopdf');

// Display the resulting image in the browser
// by setting the Content-type header to jpg
$snappy = new Pdf('C:\Program Files (x86)\wkhtmltopdf');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $snappy->getOutput('http://localhost/pdfTester/try.php');

когда я нажимаю ссылку на try.php, появляется всплывающее окно для открытия файла PDF, и когда я выбираю открыть, появляется сообщение.

Adobe Reader не смог открыть «file.pdf», потому что это либо неподдерживаемый тип файла, либо файл был поврежден.

Кстати, я только что получил один месячный опыт работы с php, и я уже ищу ту же тему, но похоже, что это мало чем поможет. Любая помощь приветствуется.


person CodeGlock    schedule 14.08.2012    source источник


Ответы (1)


  • Ваш путь C:\Program Files (x86)\wkhtmltopdf выглядит так, будто указывает на папку, а не на двоичный файл. Если ваш wkhtmltopdf установлен в папку C:\Program Files (x86)\wkhtmltopdf\, двоичный файл, вероятно, будет C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe, может, попробуйте указать на исполняемый файл, чтобы посмотреть, работает ли он?
  • Если это не сработает, что произойдет, когда вы попытаетесь запустить команду из командной строки? Тогда это работает?

    wkhtmltopdf http://localhost/pdfTester/try.php test.pdf

person Joel Peltonen    schedule 14.08.2012
comment
уже сделал бинарный, но все еще не может решить.. и 2-й способ, он работает в командной строке @Nnotlep - person CodeGlock; 14.08.2012
comment
проблема решена..путь должен быть как C://"Program Files (x86)"/wkhtmltopdf/wkhtmltopdf.exe - person CodeGlock; 14.08.2012
comment
Хороший! Пример пути на их сайте также указывает на двоичный файл, но он просто выглядит как папка, поэтому там, где указано new Pdf('/usr/local/bin/wkhtmltopdf'), /usr/local/bin — это папка, а wkhtmltopdf — исполняемый двоичный файл. Я думаю, что им также следует добавить пример Windows, чтобы прояснить такие вопросы. - person Joel Peltonen; 14.08.2012
comment
@kaklr Спасибо - это спасло меня! - person JonoB; 22.10.2012
comment
@Nnotlep, я попробовал код OP с предложенным ответом, где последняя строка кода была echo $snappy->getOutput('http://www.github.com');, и я получил ту же ошибку, что и в сообщении. По этой ссылке ( github.com/KnpLabs/snappy/issues/44) также обсуждается проблема без ответа, наконец. Тем не мение ? - person Istiaque Ahmed; 20.12.2013
comment
@Nnotlep, почему в адресе пути должно быть (x86), поскольку его нет в Windows 7? - person Istiaque Ahmed; 20.12.2013
comment
@IstiaqueAhmed Я действительно не знаю о вашей ситуации, но этот x86 исходит из пути автоматической установки. Часто есть две папки Program Files: одна для 64-битных программ, другая для 32-битных программ, а x86 — для 32-битных. Лично мне нравится устанавливать wkhtmltopdf в `c:\wkhtmltopdf`, потому что этот путь легко записать и запомнить. Может быть, вы могли бы попробовать это тоже? Путь должен указывать на то место, где у вас установлен wkhtmltopdf :). - person Joel Peltonen; 20.12.2013