FPDF вернуть мне текст вместо PDF-файла - PullRequest
0 голосов
/ 27 января 2012

Я использую FPDF для генерации PDF из PHP.Он отлично работал для небольшого примера, но теперь у меня возникла проблема: он возвращает некоторые данные, которые я видел в консоли, но не файл!

вывод выглядит как - это PDF нет?

%PDF-1.4
 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Group <</Type /Group /S /Transparency /CS /DeviceRGB>>
......
<<
/Size 15
/Root 14 0 R
/Info 13 0 R
>>
startxref
22291
%%EOF

И мой php довольно длинный, вот его вставка http://pastebin.com/ri5uAeie

Мой php выглядит правильно, действительно странно, нет?

ОБНОВЛЕНИЕ

Я передаю свой параметр и добавляю URL с $ _GET, и это хорошо работает :) Спасибо за вашу помощь, ребята!

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Возможно, вы где-то добавили пустую строку, возможно, по адресу inc/DataLib.php.

Обновление № 1:

Согласно вашим ответам, есть два подозрительных момента:

  1. Content-Type должно быть application/pdf.Теоретически метод PDF :: Output () добавляет его для вас (если php_sapi_name() не возвращает cli, что не должно быть возможно в веб-среде).

  2. Получение пустой страницы в настольном PDF-ридере (а не ошибка) предполагает, что документ поврежден так, что ридер даже не может его обнаружить ... или что документ на самом деле пустой.

Понятия не имею о # 1 (брандмауэр? Прокси? Антивирус?), Но вы можете по крайней мере проверить источник PDF в поисках сообщений об ошибках PHP или чего-то, что там не принадлежит.

Обновление № 2:

Мне кажется, я наконец понял, в чем ваша проблема.Вы не можете использовать JavaScript для получения PDF-файла, хотя AJAX.Все, что может сделать JavaScript, это:

  1. Управление DOM страницы (и PDF не HTML).
  2. Замена всей страницы DOM чем-то другим (и нет способа сообщить браузерукакой это тип контента).

Я подозреваю, что с вашим генератором PDF все в порядке, если вы вызываете его прямо из адресной строки.

0 голосов
/ 27 января 2012

Вот как работает FPDF::Output() без аргументов.Он просто устанавливает соответствующие заголовки и отправляет PDF в виде текста в браузер.Если вы хотите, чтобы файл был загружен, вам нужно предоставить Output() имя файла и установить второй аргумент в 'D'

...