Erreur FPDF: certaines données ont déjà été sorties, ne peut pas envoyer de PDF

j'utilise le fpdf bibliothèque pour mon projet, et je l'utilise pour étendre un des modules drupal. Ces lignes

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

donnez-moi une erreur: FPDF error: Certaines données ont déjà été sortie, ne peut pas envoyer de PDF

j'ai essayé de créer ceci dans un fichier séparé en dehors du test drupal de nom de zone.php et quand vu il a fonctionné. Quelqu'un ici sait pourquoi ça ne marche pas? Ou n'importe qui ici peut me montrer une bibliothèque pdf droite que je peux utilisez drupal pour afficher le format HTML au format PDF.

21
demandé sur Christian Neverdal 2012-02-28 06:42:05

11 réponses

pour que le fpdf fonctionne correctement, il ne peut pas y avoir pas de sortie du tout à côté de ce que fpdf génère. Par exemple, cela va fonctionner:

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

alors que ce n'est pas le cas (notez l'espace de tête avant l'ouverture <? la balise

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

en outre, cela ne fonctionnera pas non plus (le echo cassera):

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

Je ne suis pas sûr du côté drupal des choses, mais je sais qu'absolument zéro sortie non-fpdf est une exigence pour fpdf à travail.

37
répondu Gordon Bailey 2012-02-28 04:00:39

donnez-moi une erreur comme ci-dessous:

FPDF error: Some data has already been output, can't send PDF

pour plus de venir cette erreur: accédez à fpdf.php en cela,aller à la ligne numéro 996

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

après cela faites des changements comme ceci:

function Output($name='', $dest='') {   
    ob_clean();     //Output PDF to so
17
répondu raghavendra 2012-10-19 10:56:55

ajouter ob_start (); en haut et à la fin, ajouter 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(); 
?>
17
répondu Behlum Noman 2015-06-18 07:35:00

essayez de sauvegarder le fichier sans l'option "bom comment", c'est-à-dire dans Adobe Dreamweaver, vous sauvegardez le fichier sous...,décocher la case la case en dessous du nom du fichier qui dit,"Inclure signature Unicode(BOM)".

sur Notepad++ vous devez sélectionner le menu:Encodage, "Encoder en UTF-8 sans BOM".

et le rendre par défaut pour les autres fichiers que vous créez, il vous épargnera beaucoup de maux de tête à l'avenir.

4
répondu Andrey Aires 2012-10-03 21:04:34

Salut Vous avez un en-tête de session en haut de votre page. ou tout inclut Si vous avez alors essayez d'ajouter ce codes sur le dessus pf votre page fonctionne très bien.

<?

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

?>

santé: -)

2
répondu Cino Jose 2012-06-05 01:30:52

le message D'erreur FPDF vous indiquera la ligne PHP qui envoie du contenu.

si vous n'avez pas d'indication sur le fichier et la ligne qui envoient du contenu, Vous avez probablement une inadéquation d'encodage dans vos fichiers include / require.

Pour moi

  • fpdf.php a été ANSI-codé,
  • mon pdf-generator.php a été codé en UTF-8 et
  • ma base de données-connexion-inlude a été codé en UTF-8 (cet encodage UTF-8-a soulevé L'erreur FPDF. J'ai eu à commutateur de retour à la norme ANSI)
2
répondu HansWurst 2012-09-22 04:42:02

Dans mon cas, j'avais mis:

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

lorsque j'ai fait la demande de générer le rapport, certains avertissements ont été affichés dans le navigateur (comme l'utilisation de fonctions obsolètes).

Tournant offdisplay_errors option, le rapport a été généré avec succès.

2
répondu Victor 2015-02-02 13:20:37

Première étape vérifiez les autorisations sur les dossiers deuxième étape mettre cette

ob_start(); 

avant la ligne

$pdf->Output();
1
répondu Santos L. Victor 2016-03-08 14:07:20

j'ai utilisé la commande suivante et il a travaillé pour moi

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();
1
répondu Wasim Khan 2017-08-04 14:25:35

Vous devez appeler la bibliothèque

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

0
répondu Proyecto Pi 2015-03-11 18:18:19

si vous êtes sortie du code notices / warnings avant la génération PDF, essayez de les désactiver. error_reporting(0). Puis travaillez sur les Avertissements là-bas-après

0
répondu Cliff Ombachi 2016-04-18 14:02:08