HILFE !! Keine Ausgabe - nix

Alles andere zum Thema FPDF und PDF Format
thommy1972de2
Benutzer
Beiträge: 3
Registriert: Sa 4. Mär 2017, 11:47

HILFE !! Keine Ausgabe - nix

Beitragvon thommy1972de2 » Sa 4. Mär 2017, 11:54

Hallo. Ich habe ein riesen Problem. Ich erzeuge in einer PHP mittels FPDF eine PDF Datei und will diese auf dem Monitor ausgeben.
Das ging monatelang gut.

Nun habe ich den Code geändert und schicke zusätzlich noch eine Email mit PDF Anhang.
Hier mal der Code:

Code: Alles auswählen

<?php
login_check($mysqli);

error_reporting(-1);
ini_set('display_errors', true);

require('fpdf/fpdf.php');


define('EURO',chr(128));


class myPDF extends FPDF
 {


 var $angle=0;

function WordWrap(&$text, $maxwidth)
{
    $text = trim($text);
    if ($text==='')
        return 0;
    $space = $this->GetStringWidth(' ');
    $lines = explode("\n", $text);
    $text = '';
    $count = 0;

    foreach ($lines as $line)
    {
        $words = preg_split('/ +/', $line);
        $width = 0;

        foreach ($words as $word)
        {
            $wordwidth = $this->GetStringWidth($word);
            if ($wordwidth > $maxwidth)
            {
                // Word is too long, we cut it
                for($i=0; $i<strlen($word); $i++)
                {
                    $wordwidth = $this->GetStringWidth(substr($word, $i, 1));
                    if($width + $wordwidth <= $maxwidth)
                    {
                        $width += $wordwidth;
                        $text .= substr($word, $i, 1);
                    }
                    else
                    {
                        $width = $wordwidth;
                        $text = rtrim($text)."\n".substr($word, $i, 1);
                        $count++;
                    }
                }
            }
            elseif($width + $wordwidth <= $maxwidth)
            {
                $width += $wordwidth + $space;
                $text .= $word.' ';
            }
            else
            {
                $width = $wordwidth + $space;
                $text = rtrim($text)."\n".$word.' ';
                $count++;
            }
        }
        $text = rtrim($text)."\n";
        $count++;
    }
    $text = rtrim($text);
    return $count;
}

function Code39($xpos, $ypos, $code, $baseline=0.5, $height=5){

    $wide = $baseline;
    $narrow = $baseline / 3 ;
    $gap = $narrow;

    $barChar['0'] = 'nnnwwnwnn';
    $barChar['1'] = 'wnnwnnnnw';
    $barChar['2'] = 'nnwwnnnnw';
    $barChar['3'] = 'wnwwnnnnn';
    $barChar['4'] = 'nnnwwnnnw';
    $barChar['5'] = 'wnnwwnnnn';
    $barChar['6'] = 'nnwwwnnnn';
    $barChar['7'] = 'nnnwnnwnw';
    $barChar['8'] = 'wnnwnnwnn';
    $barChar['9'] = 'nnwwnnwnn';
    $barChar['A'] = 'wnnnnwnnw';
    $barChar['B'] = 'nnwnnwnnw';
    $barChar['C'] = 'wnwnnwnnn';
    $barChar['D'] = 'nnnnwwnnw';
    $barChar['E'] = 'wnnnwwnnn';
    $barChar['F'] = 'nnwnwwnnn';
    $barChar['G'] = 'nnnnnwwnw';
    $barChar['H'] = 'wnnnnwwnn';
    $barChar['I'] = 'nnwnnwwnn';
    $barChar['J'] = 'nnnnwwwnn';
    $barChar['K'] = 'wnnnnnnww';
    $barChar['L'] = 'nnwnnnnww';
    $barChar['M'] = 'wnwnnnnwn';
    $barChar['N'] = 'nnnnwnnww';
    $barChar['O'] = 'wnnnwnnwn';
    $barChar['P'] = 'nnwnwnnwn';
    $barChar['Q'] = 'nnnnnnwww';
    $barChar['R'] = 'wnnnnnwwn';
    $barChar['S'] = 'nnwnnnwwn';
    $barChar['T'] = 'nnnnwnwwn';
    $barChar['U'] = 'wwnnnnnnw';
    $barChar['V'] = 'nwwnnnnnw';
    $barChar['W'] = 'wwwnnnnnn';
    $barChar['X'] = 'nwnnwnnnw';
    $barChar['Y'] = 'wwnnwnnnn';
    $barChar['Z'] = 'nwwnwnnnn';
    $barChar['-'] = 'nwnnnnwnw';
    $barChar['.'] = 'wwnnnnwnn';
    $barChar[' '] = 'nwwnnnwnn';
    $barChar['*'] = 'nwnnwnwnn';
    $barChar['$'] = 'nwnwnwnnn';
    $barChar['/'] = 'nwnwnnnwn';
    $barChar['+'] = 'nwnnnwnwn';
    $barChar['%'] = 'nnnwnwnwn';

    $this->SetFont('Arial', '', 10);
    //$this->Text($xpos, $ypos + $height + 4, $code);
    $this->SetFillColor(0);

    $code = '*'.strtoupper($code).'*';
    for($i=0; $i<strlen($code); $i++){
        $char = $code[$i];
        if(!isset($barChar[$char])){
            $this->Error('Invalid character in barcode: '.$char);
        }
        $seq = $barChar[$char];
        for($bar=0; $bar<9; $bar++){
            if($seq[$bar] == 'n'){
                $lineWidth = $narrow;
            }else{
                $lineWidth = $wide;
            }
            if($bar % 2 == 0){
                $this->Rect($xpos, $ypos, $lineWidth, $height, 'F');
            }
            $xpos += $lineWidth;
        }
        $xpos += $gap;
        }
    }

function Rotate($angle,$x=-1,$y=-1)
{
   if($x==-1)
      $x=$this->x;
   if($y==-1)
      $y=$this->y;
   if($this->angle!=0)
      $this->_out('Q');
   $this->angle=$angle;
   if($angle!=0)
   {
      $angle*=M_PI/180;
      $c=cos($angle);
      $s=sin($angle);
      $cx=$x*$this->k;
      $cy=($this->h-$y)*$this->k;
      $this->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
   }
}

function _endpage()
{
   if($this->angle!=0)
   {
      $this->angle=0;
      $this->_out('Q');
   }
   parent::_endpage();
}
       // Überlagerung der Header() Methode
   function Header()
   {
         $this->SetXY(10,10);
        $this->SetFont('Good-times-rg', '', 20);
        $this->Cell(0, 10, 'Computerservice Blasius Thomas', 'T', 1,'C');
        $this->SetFont('Helvetica','',8);
        $this->SetXY(10,20);
        $this->Cell(0, 5, '|:| Wo andere aufgeben, fangen wir erst an |:|', 0, 1, 'C');
        $this->SetXY(10,25);
        $this->Cell(0, 4, 'Europaring 47, 66482 Zweibrücken, Telefon: 06332 - 896 31 31, Web: www.ZWPC.de', 'B', 1, 'C');
        if($_GET["kopie"] == '1') {
            $this->SetFont('Good-times-rg','',50);
            $this->SetTextColor(255,192,203);
            $this->RotatedText(85,90,'Kopie',20);
            $this->SetFont('Helvetica','',8);
            }
         
        $this->SetDrawColor(100, 100, 100);
      $this->Line(0, 100, 5, 100);
      $this->Line(0, 148, 5, 148);
      $this->Line(0, 192, 5, 192);
      $this->SetDrawColor(0, 0, 0);
   }

   function RotatedText($x, $y, $txt, $angle)
    {
    //Text rotated around its origin
    $this->Rotate($angle,$x,$y);
    $this->Text($x,$y,$txt);
    $this->Rotate(0);
    }

   // Überlagerung der Footer() Methode
   function Footer()
   {
     // Über dem unteren Seitenrand positionieren
     $this->SetY(-28);
     // Schriftart festlegen

     $this->SetFont('Arial','',7);
     /* Linie */
    $this->Line(0, 278, 240, 278);
     // Zentrierte Ausgabe der Seitenzahl
     $this->SetXY(5,-18);
     $this->MultiCell(67,3, "Zahlungskonten:\nPayPal: paypal@zwpc.de\nPostbank Ludwigshafen\nIBAN:DE80545100670393140671\nBIC: PBNKDEFF", 0, 'T');
     $this->SetXY(70,-18);
     $this->MultiCell(72,4, "Alle Preise sind Endpreise. Keine Anrechnung von Umsatzsteuer gemäß Kleinunternehmerregelung\n(§ 19 Abs. 1 UStG).\nSt.Nr: 46/15/30386, St.Ident: 79538720410", 'LR', 'C');
     $this->SetXY(154,-18);
     $this->MultiCell(51,4, "Unsere aktuellen Servicezeiten entnehmen Sie bitte unserer Internetseite unter:\nwww.zwpc.de, www.zw-pc.de, \nwww.computerservice-zweibrücken.de", 0, 'R');

   }




 }




$renr = $_GET["renr"];
$renr_barcode = substr($renr, 9,12);

$sql = "SELECT * FROM rechnungen WHERE renr = '$renr'";
if ($result = $mysqli->query($sql)) {
    while ($row = $result->fetch_assoc()) {
    $redatum = $row["datumneu"];
    $kdnr = $row["kdnr"];
    $bez = $row["bez"];
    $bezart = $row["bezahltmit"];
    if(empty($bezart)) {
       $bezart = "Barzahlung";
   }
    $bez_datum = $row["bezdatumneu"];
    $zahlungsart = $row["zahlungsart"];

   $zahlungshinweis = "";
    if($zahlungsart == "PayPal") { $zahlungshinweis = "\nZahlung bitte an unsere PayPal-Email: paypal@zwpc.de"; }
    elseif($zahlungsart == "Überweisung") { $zahlungshinweis = "\n\nZahlungen bitte an:\nPostbank Ludwigshafen\nIBAN:DE80545100670393140671\nBIC: PBNKDEFF\n"; }
    elseif($zahlungsart == "Vorkasse") { $zahlungshinweis = "\n\nZahlungen bitte an:\nPostbank Ludwigshafen\nIBAN:DE80545100670393140671\nBIC: PBNKDEFF\n"; }
   
   $lieferart = $row["lieferart"];
    $enddatum = date('d.m.Y', strtotime("+7 days"));
}
}

$sqlkd = "SELECT * FROM kunden WHERE kdnr = '$kdnr'";
if ($result2 = $mysqli->query($sqlkd)) {
    while ($rowkd = $result2->fetch_assoc()) {
    $anrede = $rowkd["anrede"];
    $firma = $rowkd["firma"];
    $name = $rowkd["nachname"]." ".$rowkd["vorname"];
    $strasse = $rowkd["strasse"]." ".$rowkd["hsnr"];
    $ort = $rowkd["plz"]." ".$rowkd["ort"];
    $kd_telefon = $rowkd["telefon"];
    $kd_mobil = $rowkd["mobil"];
    $kd_email = $rowkd["email"];

}
}



$pdf = new myPDF();
$pdf->AddFont('Good-times-rg', '', 'Good-times-rg.php');

$pdf->SetLeftMargin(30);

$pdf->AddPage();



     // Header generieren
        $pdf->SetXY(20, 98);
        $pdf->MultiCell( 207, 4,'Vielen Dank für Ihren Auftrag. Wir berechnen Ihnen folgende Produkte oder Leistungen:', 0, 'L', 0);

        $pdf->SetXY(15, 105);
        $pdf->MultiCell( 15, 4, 'Anz', 0, 'C', 0);

      
      $pdf->SetXY(25, 105);
        $pdf->MultiCell( 20, 4, 'Einh.', 0, 'C', 0);

      
        $pdf->SetXY(10, 105);
        $pdf->MultiCell( 97, 4, 'Produkt oder Service', 0, 'C', 0);

        $pdf->SetXY(155, 105);
        $pdf->MultiCell( 30, 4, 'E-Preis', 0, 'C', 0);

        $pdf->SetXY(170, 105);
        $pdf->MultiCell( 30, 4, 'Gesamt', 0, 'R', 0);

// Kundendaten

$pdf->SetFont('Helvetica','',8);
$pdf->SetXY(120,40);
$pdf->Cell(0, 4, 'RE-Nr: '.$_GET["renr"], 0, 1, 'R');
$pdf->SetX(130);
$pdf->Cell(0, 4, 'RE-Datum: '. $redatum, 0, 1, 'R');
$pdf->SetX(140);
$pdf->Cell(0, 4, 'KD-Telefon: '.$kd_telefon, 0, 1, 'R');
$pdf->SetX(140);
$pdf->Cell(0, 4, 'KD-Mobil: '.$kd_mobil, 0, 1, 'R');
$pdf->SetX(140);
$pdf->Cell(0, 4, 'KD-Email: '.$kd_email, 0, 1, 'R');


$pdf->Code39(161, 73, $renr_barcode, 1, 5);


$pdf->SetFont('Helvetica','',6);
$pdf->SetXY(25,45);
$pdf->Cell(67, 4, 'Computerservice Blasius Thomas, Europaring 47, 66482 Zweibrücken', 'B', 1);

$pdf->SetY(50);
$pdf->SetX(25);
$pdf->SetFont('Helvetica','B',9);
$pdf->Cell(10, 4, $anrede, 0, 1);
if(!empty($firma)) {
$pdf->SetX(25);
$pdf->Cell(10, 4, $firma, 0, 1);
}
$pdf->SetX(25);
$pdf->Cell(10, 4, $name, 0, 1);
$pdf->SetX(25);
$pdf->Cell(10, 4, $strasse, 0, 1);
$pdf->SetX(25);
$pdf->Cell(10, 4, $ort, 0, 1);

if(empty($_GET["was"])) {$_GET["was"] = "Rechnung"; }
// Was wird gedruckt ?
$pdf->SetFont('Good-times-rg', '', 20);
$pdf->SetXY(151,85);
$pdf->Cell(50, 10, $_GET["was"], 0, 1,'R');

$pdf->SetXY(151,95);
$pdf->SetFont('Helvetica','',8);
$pdf->Cell(50, 10, 'Druckdatum: '.date("d.m.Y - H:i", time()). ' Uhr', 0, 1,'R');
$pdf->Line(20, 104, 200, 104);

$pdf->SetFont('Helvetica','',9);
// Artikel einfügen
$string = "";
$i = 0;
$pdf->SetY(100);

$newY = $pdf->getY();
$newX = $pdf->getX();
$total = 0;

echo "<table width='75%' border='1'>";


/* Artikel einfügen START */
$sql3 = "SELECT * FROM reart WHERE renr = '$renr'";
if ($result3 = $mysqli->query($sql3)) {
    $anzahl_art = $result3->num_rows;
    while ($rowart = $result3->fetch_assoc()) {
    $i++;
        $gesamt = $rowart["anz"] * $rowart["epreis"];
        $total = $total+$gesamt;

 $pdf->SetXY(12, $newY+12);
 $pdf->MultiCell( 20, 4, $rowart["anz"] , 0, 'C', 0);
 
   if($rowart["einheit"] == "") { $rowart["einheit"] = "Std."; }
 
  $pdf->SetXY(25, $newY+12);
 $pdf->MultiCell( 20, 4, $rowart["einheit"] , 0, 'C', 0);
 
 $pdf->SetXY(140, $newY+11);
 $pdf->MultiCell( 35, 4, $rowart["epreis"]." ".EURO , 0, 'R', 0);
 $pdf->SetXY(165, $newY+11);
 $pdf->MultiCell( 35, 4, number_format( $gesamt,2 )." ".EURO , 0, 'R', 0);
// TEXT //
$pdf->SetXY(45, $newY+12);
 // Zeilenanzahl errechnen $nb
$nb=$pdf->WordWrap($rowart["text"], 120);
/*Reihe ausgeben*/
$pdf->MultiCell( 120, 4, $rowart["text"] , 0, 'L', 0);
/*Linie zeichnen*/
$pdf->Line(20, $newY+9, 200, $newY+9);
/* Neuen Abstand berechnen newY+zeilenanzahl*6+3 =Abstand */
$newY = $newY+$nb*6+3;

if($newY >= 220) { $pdf->AddPage(); $newY=20; }


}
}

$new2 = $pdf->GetY();
$pdf->Line(20, $newY+13, 200, $newY+13);
$pdf->SetXY(125, $newY+15);
$pdf->SetFont('Helvetica','I',10);
$pdf->MultiCell( 70, 4, 'Gesamtpreis: '.number_format( $total,2 )." ".EURO , 0, 'R', 0);


/* Artikel einfügen ENDE  */




/* Zahlungsmodalitäten  */
$newY2 = $pdf->getY();
$newX2 = $pdf->getX();
$pdf->SetXY(20, $newY+17);
$pdf->SetFont('Helvetica','',8);

if($bez == '1') {
     $pdf->MultiCell( 190, 4, "Der Rechnungsbetrag wurde am ".$bez_datum." mit ".$bezart." beglichen.\n\nLieferart: ".$lieferart."\nZahlungsart: ".$zahlungsart."\nLieferdatum entspricht Rechnungsdatum\n\nIch bedanke mich für Ihr Vertrauen und würde mich freuen,\nSie auch in Zukunft beraten zu dürfen." , 0, 'L', 0);
} else  {
     $pdf->MultiCell( 100, 4, "Zahlbar bis spätestens: ".$enddatum.".\n\nZahlungsart: ".$zahlungsart." ".$zahlungshinweis."\nLieferart: ".$lieferart."\nLieferdatum entspricht Rechnungsdatum" , 0, 'L', 0);
     }

$neuY = $pdf->GetY();
if($bez == '1' AND $zahlungsart = 'Überweisung') { $plus = "-30"; }
if($bez == '1' AND $zahlungsart = 'Vorkasse') { $plus = "-30"; }
if($bez == '1' AND $zahlungsart = 'PayPal') { $plus = "-20"; }
if($bez == '0' AND $zahlungsart = 'Überweisung') { $plus = "-30"; }
if($bez == '0' AND $zahlungsart = 'PayPal') { $plus = "-10"; }

//$pdf->Image('images/paypal-text2.png', 165, $neuY+$plus, 30, 18, 'Png');

// AUSGABE //

$tag = date("d", TIME());
$monat = date("m", TIME());
$jahr = date("Y", TIME());


ob_clean();
flush();

$re_neu2 = str_replace("|", "-", $_GET["renr"]);
$re_nr_3 = explode("-", $re_neu2);

$re_nr_3 = $re_nr_3[1];

$pdf->Output('PDF-Dateien/rechnungen/Rechnung-'.$re_neu2.'.pdf','F');
//$pdf->Output('Rechnung_'.$re_nr_3.' vom '.$tag.'_'.$monat.'_'.$jahr.'.pdf','S');



//$pdf_anhang = $pdf->Output('Rechnung_'.$re_nr_3.'.pdf','S');


 // email information
  $rand = rand(11111, 99999999);
  $security = md5($rand);
 
  $to = $_GET["email"];
  $from = "Computerservice Blasius Thomas <info@zwpc.de>";
  $subject = "Ihre Rechnung als PDF Datei";
  $message = "<table style='width:100%; background: #fff; color:#000; font-family:verdana, sans-serif; font-size:.8em;'>";

  $message .= "<tr><td valign='top'>Sehr geehrter Kunde.<br /><br />Sie haben vor kurzem meinen EDV-Service in Anspruch genommen. Dafür bedanke ich mich.<br />";
  $message .= "Als Anlage darf ich Ihnen heute ihre Rechnung im PDF Format übersenden.<hr>Zum Anzeigen der Rechnung wird ein PDF-fähiges Programm, wie zb. Adobe PDF Reader, benötigt.";
  $message .= "<br /><br />Falls Sie die Datei nicht öffnen können, laden Sie sich bitte den Adobe PDF Reader: <a href='https://get.adobe.com/de/reader/' target='_blank'>https://get.adobe.com/de/reader</a>.";
  $message .= "<br />Dieses Programm ist für Sie kostenfrei.<hr><b>WICHTIG</b>: Bitte entfernen Sie vor dem Download die beiden Häkchen bei &Prime;Optionales Angebot&Prime;.<hr>";
   
   $message .= "<b>Jetzt NEU</b>:<br>Den Status ihrer laufenden Reparaturen können Sie direkt unter:<br><br><center><href='http://reparatur.zwpc.de'>http://reparatur.zwpc.de</a></center><br>einsehen und sehen dort direkt, wie lange die Reparatur ihres Gerätes noch andauern wird.";
 
  $message .= "<td width='130px' rowspan='5'><img src='http://www.zwpc.de/images/emails/Screen_1.png' border='0' width='130px' /></td>";

  $message .="</table>";
 
  $message .= "<img src='http://www.zwpc.de/record.php?e=".$_GET['email']."&security=".$security."' style='float:right' alt='Blank' />";
  // a random hash will be necessary to send mixed content
  $separator = '-=-=-'.md5(microtime()).'-=-=-';

  // attachment name
  $filename = "Rechnung_".$re_nr_3.".pdf";

  // Generate headers
  $headers = "From: $from\r\n"
           . "MIME-Version: 1.0\r\n"
           . "Content-Type: multipart/mixed; boundary=\"$separator\"\r\n"
           . "X-Mailer: PHP/" . phpversion();

  // Generate body
  $body = "This is a multipart message in MIME format\r\n"
        . "--$separator\r\n"
        . "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"
        . "\r\n"
        . "$message\r\n"
        . "--$separator\r\n"
        . "Content-Type: application/pdf\r\n"
        . "Content-Transfer-Encoding: base64\r\n"
        . "Content-Disposition: attachment; filename=\"$filename\"\r\n"
        . "\r\n"
        . chunk_split(base64_encode($pdf->Output("Rechnung_".$re_nr_3.".pdf", "S")))."\r\n"
        . "--$separator--";

  // send message
  mail($to, $subject, $body, $headers);

ob_clean();
ob_flush();

$mysqli->query("INSERT INTO email2 (kdnr, datum_send, betreff, security, dateiname) VALUES ('".$_GET['kdnr']."','".date("d.m.Y - H:i", TIME())." Uhr','Rechnung ".$re_nr_3." wurde an ".$to." gesendet','".$security."','".$re_neu2."')");


?>

<script type="text/javascript" language="JavaScript">
window.history.back();
 </script>


Dieser Code erstellt die PDF und sendet Sie an die angegebene Email Adresse. Klappt - Wunderbar.
Will ich aber jetzt ohne Email mit dem Paramenter $pdf->Output('Rechnung-'.$re_neu2.'.pdf','I'); ausgeben, passiert nichts - Weisser Bildschirm oder Fehler:

Code: Alles auswählen

<b>Fatal error</b>:  Uncaught exception 'Exception' with message 'FPDF error: Some data has already been output, can't send PDF file (output started at /var/www/k103238web/htdocs/administration_neu/index.php:51)' in /var/www/k103238web/htdocs/administration_neu/fpdf/fpdf.php:271
Stack trace:
#0 /var/www/k103238web/htdocs/administration_neu/fpdf/fpdf.php(1052): FPDF-&gt;Error('Some data has a...')
#1 /var/www/k103238web/htdocs/administration_neu/fpdf/fpdf.php(999): FPDF-&gt;_checkoutput()
#2 /var/www/k103238web/htdocs/administration_neu/seiten/re_pdf.php(462): FPDF-&gt;Output('Rechnung-201703...', 'I')
#3 /var/www/k103238web/htdocs/administration_neu/index.php(88): include('/var/www/k10323...')
#4 {main}
  thrown in <b>/var/www/k103238web/htdocs/administration_neu/fpdf/fpdf.php</b> on line <b>271</b><br />


Ich kann mir nicht erklären woran es liegen könnte.

Benutzeravatar
Wirus!
Beiträge: 1485
Registriert: Do 22. Jun 2006, 18:23

Re: HILFE !! Keine Ausgabe - nix

Beitragvon Wirus! » Sa 4. Mär 2017, 21:29

Die Fehlermeldung ist doch eindeutig: Dein Script gibt irgend was aus. Das zerstört das PDF und führt zur Fehlermeldung


Zurück zu „Sonstiges“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast