Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как отобразить PDF-файл в браузере
Покинул форум
Сообщений всего: 11
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
Здравствуйте! Формирую имя файла и путь к нему в форме запроса. Затем считываю содержимое файла одной строкой и пытаюсь увидеть этот файл в браузере, но вижу только текст, а не изображение. Что надо сделать, чтобы увидеть изображение? У меня 3 браузера и у всех есть нужные плагины. Вот та часть PHP-скрипта, которая выполняет чтение и вывод файла (использую mPDF):
Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\Transport\archive_form.php:1) in C:\OpenServer\domains\Transport\archive_form.php on line 19
Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\Transport\archive_form.php:1) in C:\OpenServer\domains\Transport\archive_form.php on line 20
Я понимаю их важность, но не понимаю, как убедить mpdf.php.
Как я понимаю, до вызова функции file_get_contents() вывод файла не производится. Я ошибаюсь?
DlTA
Отправлено: 15 Мая, 2013 - 17:03:23
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
eastman75 пишет:
Я ошибаюсь?
да
гдето и что то у вас до этого места уже было выведено в браузер
eastman75
Отправлено: 17 Мая, 2013 - 20:11:42
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
DlTA пишет:
гдето и что то у вас до этого места уже было выведено в браузер
Отказался от mPDF, так как этот класс предназначен для формирования PDF-файла, а мне нужно просто вывести в окно браузера готовый PDF-файл, имя которого формируется из запроса в HTML-файле в переменной $filename. Вот окончательный вариант скрипта:
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
абздец
а нафига верстку выводить?
если нужно выдать только данные из файла, то и выводите данные из файла, без каких либо посторонних символов
кстати первая строчка это что? опечатка, или в выполняемом скрипте она тоже есть? ее надо убрать,
не забываем о необходимости выдать заголовки перед подачей контента
eastman75
Отправлено: 18 Мая, 2013 - 14:47:04
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
DlTA, верстку я вывожу для того, чтобы дать браузеру информацию о типе вложения. Но, оказывается, это не помогает - и без верстки, и с версткой выводится только PDF-код. А первая строчка для $html - это не опечатка; оказывается, так можно задавать длинные строки для переменной в PHP (см. например http://www[dot]mpdf1[dot]com/mpdf/download ). Я тоже не знал об этом раньше. Во всяком случае, мой скрипт обрабатывается без ошибок. А ВОТ ИЗОБРАЖЕНИЕ ИЗ КОДА НЕ ВЫВОДИТСЯ !!!
caballero
Отправлено: 18 Мая, 2013 - 15:01:08
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
верстку я вывожу для того, чтобы дать браузеру информацию о типе вложения.
не должно быть никакой верстки, вообще никакого HTML
только заголовки и тело файла (Добавление)
Цитата:
оказывается, так можно задавать длинные строки для переменной в PHP
Покинул форум
Сообщений всего: 11
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
caballero пишет:
HEREDOC
За это спасибо. Лишний раз убеждаюсь, что надо читать мануалы !!!
Что же касается никакого HTML, то я его убрал, оставил только заголовки в виде <meta ... и получил тот же результат - вывелся PDF-код. Вы скажете, что и <meta ... надо убрать, и опять я с Вами соглашусь, только вот функция header() у меня не катит - об этом написано раньше. НЕУЖЕЛИ НЕЛЬЗЯ ДАТЬ ДЕЛЬНЫЙ СОВЕТ ИЛИ ХОТЯ БЫ ССЫЛКУ?
Мелкий
Отправлено: 18 Мая, 2013 - 19:10:46
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
eastman75 пишет:
функция header() у меня не катит
Значит надо исправить.
По характерному
eastman75 пишет:
output started at C:\OpenServer\domains\Transport\archive_form.php:1)
Сохраните файл без метки BOM.
----- PostgreSQL DBA
eastman75
Отправлено: 18 Мая, 2013 - 19:26:14
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
[quote=Мелкий][/quote]
Все правильно. Действительно, файл со скриптом содержал в самом начале 3 байта, которые всовывает туда Windows. Я их убрал - никакой редактор их не показывает, пришлось использовать WinHEX. Далее - вставил вызовы функции header() в самом начале скрипта и -- УРА!!! - все заработало, то есть я увидел красивый PDF-файл. БОЛЬШОЕ СПАСИБО ВСЕМ, ПРИНЯВШИМ УЧАСТИЕ В ОБСУЖДЕНИИ !!!
Разрешите мне вернуться к теме. Итак, вот код, который работает:
Я понимаю, что ридеру передается что-то, не являющееся PDF-файлом, но как исправить эту ситуацию? Разобрался я. Отправка заголовков в скрипте стоит в самом начале скрипта и производится до того, как будет сделана проверка на существование файла. Получается, что рендеринг PDF-кода происходит всегда, независимо от того, есть ли такой код или его нет. Отсюда и сообщение об ошибке: пустой файл есть, а кода нет. Если же переставить отсылку заголовков ПОСЛЕ проверки наличия файла, то они не будут отсылаться при отсутствии файла; нужно также добавить в скрипт сообщение о том, что файла нет (в ветке ELSE). Если кому-то надо, могу выложить полный текст работающего скрипта.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.