web-dev-qa-db-fra.com

Erreur FPDF: Certaines données ont déjà été sorties, impossible d'envoyer PDF

J'utilise la bibliothèque fpdf pour mon projet, et je l'utilise pour étendre l'un des modules de 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: erreur FPDF: certaines données ont déjà été sorties, impossible d'envoyer PDF

J'ai essayé de créer cela dans un fichier séparé en dehors du nom de zone de la drupal test.php et lorsque visualisé, cela fonctionnait. Quelqu'un ici sait pourquoi cela ne fonctionne pas? Ou n'importe qui ici peut me proposer une bibliothèque de pdf que je peux utiliser dans Drupal pour afficher le format HTML au format PDF.

21
Wondering Coder

Pour que fpdf fonctionne correctement, il ne doit pas y avoir de sortie any à côté de ce que fpdf génère. Par exemple, cela fonctionnera:

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

Cela ne sera pas le cas (notez l’espace devant la balise <? d’ouverture)

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

De plus, cela ne fonctionnera pas non plus (la echo le 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’une sortie absolument non-fpdf est une exigence pour que fpdf fonctionne.

38
Gordon Bailey

ajoutez ob_start (); en haut et à la fin ajoutez 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
Behlum Noman

donnez-moi une erreur comme ci-dessous:
FPDF error: Some data has already been output, can't send PDF 

pour surmonter cette erreur: passez à fpdf.php dans cela, allez à la ligne numéro 996 

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

après cela, faites les changements comme ceci: 

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

Essayez de sauvegarder le fichier sans l'option: "Commentaire de la nomenclature", c'est-à-dire que dans Adobe Dreamweaver, vous enregistrez le fichier sous ..., décochez la case la case située sous le nom du fichier indiquant "Inclure la signature Unicode (BOM) ".

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

Et faites-le par défaut pour les autres fichiers que vous créez, cela vous évitera beaucoup de maux de tête à l'avenir.

4
Andrey Aires

Le message d'erreur FPDF vous indiquera la ligne PHP qui envoie du contenu.

Si vous ne savez pas quel fichier & Line envoie du contenu, il existe probablement une différence d'encodage dans vos fichiers include/require. 

Pour moi 

  • fpdf.php était encodé en ANSI, 
  • mon pdf-generator.php était codé en UTF-8 et 
  • ma base de données-connect-inlude était encodée en UTF-8 (cet encodage en UTF-8 a généré l'erreur FPDF. Je devais le remettre en ANSI)
2
HansWurst

Dans mon cas j'avais mis:

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

Lorsque j'ai fait la demande pour générer le rapport, certains avertissements étaient affichés dans le navigateur (comme l'utilisation de fonctions obsolètes).
En tournant off l'option display_errors, le rapport a été généré avec succès.

2
Victor

Bonjour, avez-vous un en-tête de session en haut de votre page ... ou tout autre fichier inclus. Si vous essayez ensuite d’ajouter ces codes en haut de votre page, cela devrait fonctionner correctement 

<?

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

?>

à votre santé :-)

2
Cino Jose

Première étape Vérifier les autorisations sur les dossiers Deuxième étape Mettre ceci 

ob_start(); 

avant la ligne 

$pdf->Output();
1
Santos L. Victor

J'ai utilisé ce qui suit et cela a fonctionné 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
Wasim Khan

si vous êtes un code qui émet des avis/avertissements avant la génération PDF, essayez de les désactiver. error_reporting(0). Ensuite, travaillez sur les avertissements qui suivent

0
Cliff Ombachi

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
Proyecto Pi