Ошибка 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.
Ответы
Ответ 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();
Ответ 11
Вам нужно вызвать библиотеку
require ('fpdf.php');
<?php
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'¡Hola, Mundo!');
$pdf->Output();
?>
http://www.fpdf.org/
http://www.fpdf.org/es/tutorial/tuto1.htm