Создать PDF с DOMPDF и перенаправить - PullRequest
1 голос
/ 18 февраля 2012

В проекте PHP мне нужно создать PDF-файл и перенаправить на другую страницу, когда пользователь нажимает кнопку «Отправить». Мне удалось создать PDF-файл, используя DOMPDF . Создание PDF выполняется в отдельном файле ('PDFRecipt.php'). Я назвал эту страницу, когда пользователь нажимает кнопку на главной странице. Вот так называют PDF страницу

header('location:PDFRecipt.php');

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

header('location:Other.php');

Не создает PDF (только перенаправляет). Я пытался изменить header('location:PDFRecipt.php'); в include_once('PDFRecipt.php');

тогда он не создает PDF правильно (поврежденный файл PDF)

Как создать файл PDF и перенаправить на другую страницу?

EDIT:

код в PDFRecipt.php

$html='SOME HTML';
include("../../dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream('FileName.pdf');        
//header('location:Other.php);

1 Ответ

1 голос
/ 18 февраля 2012

Ответ на вопрос

Чтобы это работало, вам нужно переместить второй header вызов в файл PDFRecipt.В настоящее время, когда они оба находятся в одном файле, ваш второй вызов header переопределяет первый.

Помните, что заголовки отправляются при отправке вывода в браузер пользователей, поэтому вы часто видителюди, вызывающие exit() сразу после header('Location: http://example.org');.

Так что любые последующие вызовы для установки того же заголовка, в данном случае Location, будут переопределять первый, пока не будут отправлены заголовки.

Также стоит указать, что вы должны использовать полные веб-URL в Location:

HTTP / 1.1 требует абсолютного URI в качестве аргумента для »Местоположение: включая схему, имя хоста и абсолютный путь, но некоторые клиенты принимают относительные URI.Обычно вы можете использовать $ _SERVER ['HTTP_HOST'], $ _SERVER ['PHP_SELF'] и dirname (), чтобы самостоятельно создать абсолютный URI из относительного

в соответствии со страницей header вруководство: http://php.net/manual/en/function.header.php

Обновление из комментариев

Итак, вы используете метод stream() для отправки клиенту PDF - вы не можете объединить это с заголовком Location:.Это потому, что DOMPDF уже сбросил содержимое на экран.Я предполагал, что ваш PDFRecipt.php файл где-то хранит PDF на диск.

См. Исходный код DOMPDF для более подробной информации: http://code.google.com/p/dompdf/source/browse/trunk/dompdf/lib/class.pdf.php#3061

...