Подтвердить что ты не робот

Ошибка FPDF: некоторые данные уже выведены, невозможно отправить PDF

Я использую библиотеку fpdf для моего проекта, и я использую это для расширения одного из модулей drupal. Эти строки

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();

дайте мне ошибку: Ошибка FPDF: некоторые данные уже выведены, не могут отправлять PDF

Я попытался создать это в отдельном файле за пределами области имени drupal test.php, и при просмотре он сработал. Кто-нибудь знает, почему это не работает? Или кто-нибудь здесь может указать мне правую библиотеку pdf, которую я могу использовать в drupal для просмотра формата HTML в формате PDF.

4b9b3361

Ответ 1

Чтобы fpdf работал правильно, не может быть никакого вывода, кроме того, что генерирует fpdf. Например, это будет работать:

<?php
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

Пока это не будет (обратите внимание на начальное пространство перед открывающим тегом <?)

 <?php
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

Кроме того, это тоже не сработает (echo сломает его):

<?php
echo "About to create pdf";
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

Я не уверен в том, что касается drupal, но я знаю, что абсолютно нулевой вывод non-fpdf является требованием для работы fpdf.

Ответ 2

добавить ob_start (); вверху и в конце добавить ob_end_flush();

<?php
    ob_start();
    require('fpdf.php');
    $pdf = new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'Hello World!');
    $pdf->Output();
    ob_end_flush(); 
?>

Ответ 3

дайте мне ошибку, как показано ниже:
FPDF error: Some data has already been output, can't send PDF

для этой ошибки: перейдите к fpdf.php в том, что goto номер строки 996

function Output($name='', $dest='')

после этого выполните следующие изменения:

function Output($name='', $dest='') {   
    ob_clean();     //Output PDF to so

Ответ 4

Попробуйте сохранить файл без опции: "Комментарий спецификации", то есть в Adobe Dreamweaver, вы сохраняете файл как..., снимите отметку в поле под именем файла, которое гласит: "Включить подпись Unicode (BOM),".

В Notepad ++ вы должны выбрать меню: Кодирование, "Кодировать в UTF-8 без спецификации".

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

Ответ 5

Привет, у вас есть заголовок сеанса в верхней части страницы. или любой из них включает Если вы попытаетесь добавить эти коды в верхнюю часть страницы, это должно работать нормально.

<?

while (ob_get_level())
ob_end_clean();
header("Content-Encoding: None", true);

?>

приветствия: -)

Ответ 6

Сообщение об ошибке FPDF укажет вам на строку PHP, которая отправляет некоторый контент.

Если вы не понимаете, что File и Line отправляют некоторый контент, у вас, вероятно, есть несоответствие кодировки в ваших файлах include/require.

Для меня

  • fpdf.php был закодирован в ANSI,
  • my pdf-generator.php был кодирован UTF-8 и
  • my database-connect-inlude был кодирован в кодировке UTF-8 (этот UTF-8-кодирование действительно вызывало ошибку FPDF. Мне пришлось переключить его обратно на ANSI)

Ответ 7

В моем случае я установил:

ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);

Когда я сделал запрос на создание отчета, некоторые предупреждения были отображены в браузере (например, использование устаревших функций).
Повернув off параметр display_errors, отчет был сгенерирован успешно.

Ответ 8

Первый шаг проверить разрешения на папки второй шаг положите это

ob_start(); 

перед линией

$pdf->Output();

Ответ 9

если вы выведете уведомления об ошибках/предупреждения перед созданием PDF, попробуйте отключить их. error_reporting(0). Затем работайте над предупреждениями после

Ответ 10

Я использовал следующее, и это сработало для меня

require_once ('pdf/fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output(F,'/var/www/html/PATH/filename.pdf');
ob_end_flush();