Как я могу отобразить существующий вид для вывода в PDF? - PullRequest
0 голосов
/ 31 августа 2010

Я использую приложение TCPDF в CakePHP в качестве поставщика. У меня все настроено по инструкции. Я могу создать действительный PDF, и он прекрасно работает. Теперь я хочу взять результаты уже созданного HTML-представления и создать из него PDF-файл.

Я устанавливаю переменную HTML и использую ее в виде: $pdf->writeHTML($html, true, false, true, false, '');

Вот что я пробовал, и он отображает пустой экран:

ob_start();
$this->render('results', 'pdf');
$data = ob_get_contents();
ob_end_clean();
$this->set('html', $data);

Я также пробовал:

$data = $this->results();
$this->set('html', $data);

Но он показывает только PDF со словом OBJECT.

Как я могу отобразить существующее представление, но выводить его в PDF?

Ответы [ 2 ]

1 голос
/ 31 августа 2010

Я бы сделал

ob_start();
....
ob_end_clean();

в макете. Для меня еще рано собирать данные в контроллере:)

В основном я использую wkhtmltopdf для создания PDF-содержимого. Он действительно автономен и производит HTML, как это выглядит в современных браузерах.

как я это использую: Существует макет pdf.ctp, где я использую ob_start () ... ob_end_clean () для сбора содержимого (включая макет).

затем я запускаю команду wkhtmltopdf с выводом ранее сгенерированного html, затем читаю этот файл и распечатываю его в браузере.

Вы можете посмотреть мои /app/views/layouts/pdf.ctp здесь . Есть комментарии, поэтому вы должны это понять.

При таком подходе я могу запустить все свое приложение в PDF:)

Я недавно не использовал TCPDF, поэтому я не знаю, что он делает. Это может быть похоже:)

Я создал сайт с таким подходом: http://html -2-pdf.com , чтобы вы могли увидеть это в действии.

НТН

0 голосов
/ 31 августа 2010

Попробуйте использовать обратный вызов и выходные атрибуты Controller afterFilter. Вот пример:

function afterFilter(){
    $pdf->writeHTML($this->output, true, false, true, false, '');
}
...