Nix geht mehr nach Upgrade von 1.6 auf 1.8.1

Austausch über die verschiedenen Releases, Ankündigungen neuer Releases, Hürden beim Releasewechsel etc.
Benutzeravatar
vkr
Benutzer
Beiträge: 5
Registriert: Mo 2. Apr 2007, 09:28

Nix geht mehr nach Upgrade von 1.6 auf 1.8.1

Beitragvon vkr » Do 18. Feb 2016, 11:43

Ich bin kein ausgebildeter Programmierer und mehr der Anwender mit angelesenen und experimentell erhaltenen Kenntnissen - also bitte nicht schlagen, wenn ich nur irgendwo eine Kleinigkeit nicht gefunden habe :oops:
Die Nachricht über das neue Forum hier hat mich auf die Idee gebracht, man könnte doch fpdf und fpdi mal auf den aktuellen Stand bringen, da meine Seite zur Ausgabe von Urkunden für Volksläufe noch auf dem Stand von 2011 ist (FPDF 1.6, FPDI 1.4). Also habe ich die ganzen Dateien mal mit den Neuen überschrieben und getestet - leider geht dann nix mehr; es öffnet sich noch der neue Browsertab, aber das PDF-Dokument wird nicht übergeben.
Ich habe jetzt erst mal wieder auf den alten Stand zurück gesetzt und damit läuft es wieder.
PHP ist übrigens die neueste Version 5.6, falls das eine Rolle spielt.

Wenn ich einfach auf dem alten Stand bleibe, verzichte ich nur auf neue Funktionen (die ich nicht brauche) oder handele ich mir auf Dauer irgendwelche Probleme ein?

Hier mal mein uralter Code, bei dem mir damals auch ein Kumpel geholfen hat - vielleicht kann mir jemand sagen, was ich ändern müsste für die neue Version?

Code: Alles auswählen

<?PHP
// übergebener Wert aus URL auslesen
$idx = $_GET["inr"];

// Datenbank-Verbindung herstellen
include('config.php');

// individuellen Datensatz holen
$query = "SELECT * FROM ergebnisse_greifenstein WHERE inr = $idx";
$sql = mysql_query($query);
while ($ds = mysql_fetch_object($sql))
 {$id = $ds -> inr;
  $nummer = $ds -> nummer;
  $datum = $ds -> datum;
  $nr = $ds -> snr;
  $tname = $ds -> name;
  $verein = $ds -> verein;
  $jahrg = $ds -> jahrg;
  $klasse = $ds -> klasse;
  $zeit = $ds -> zeit;
  $plkl = $ds -> plkl;
  $plge = $ds -> plge;
  $plgs = $ds -> plgs;
  $urkname = $ds -> urkname;
  $diszi = $ds -> diszi;
 
   define('FPDF_FONTPATH','font/');
   require('fpdi.php');
   require('fpdf.php');

   $pdf= new fpdi();
   $pagecount = $pdf->setSourceFile($urkname);
   $tplidx = $pdf->ImportPage(1);

   $pdf->addPage();
   $pdf->useTemplate($tplidx,0,0,0);

   // Netto-Text erzeugen
   // require('fpdf.php');

   $pdf->SetDisplayMode('fullpage');
   $pdf->SetFont('Arial','B',30);
   $pdf->SetTextColor(0, 0, 0);
   $pdf->SetXY(0,-170);
   $pdf->Cell(0,6," ",0,1,'C');
   $pdf->SetFont('Arial','B',28);
   $pdf->Cell(0,15," ",0,1,'C');
   $pdf->Cell(0,10,$tname,0,1,'C');   
   $pdf->SetFont('Arial','',12);
   $pdf->Cell(0,8,"Startnummer ".$nr,0,1,'C');
   $pdf->SetFont('Arial','B',26);
   $pdf->Cell(0,10,$verein,0,1,'C');
   $pdf->Cell(0,8," ",0,1,'C');
   $pdf->SetFont('Arial','B',24);
   $pdf->Cell(0,8,"erzielte in der Klasse ".$klasse,0,1,'C');
   $pdf->Cell(0,8," ",0,1,'C');
   $pdf->Cell(0,8,"in der Zeit von ".$zeit,0,1,'C');
   $pdf->Cell(0,8," ",0,1,'C');
   $pdf->Cell(0,8,"den ".$plkl.". Platz",0,1,'C');
   $pdf->Cell(0,25," ",0,1,'C');
   $pdf->SetFont('Arial','',14);
   $pdf->Cell(0,9,"Greifenstein, den ".$datum,0,1,'C');
   $pdf->Output("Greifenstein_".$datum."_".$tname.".pdf",'D');

   // Verbindung zur Datenbank trennen
   mysql_free_result($result);
   mysql_close();
}

?>


fpdf.de
Erfahrener Benutzer
Beiträge: 185
Registriert: Di 6. Apr 2004, 08:32

Re: Nix geht mehr nach Upgrade von 1.6 auf 1.8.1

Beitragvon fpdf.de » Fr 19. Feb 2016, 00:20

Hi,

in der FPDI Bridge erbt die Klasse fpdi_bridge von FPDF (sofern TCPDF nicht verfügbar ist). Hierzu ist es aber erforderlich, dass die Klasse FPDF bereits definiert ist. Ersetze daher bitte:

Code: Alles auswählen

require('fpdi.php');
require('fpdf.php');


mit

Code: Alles auswählen

require('fpdf.php');
require('fpdi.php');


Wenn es damit immer noch nicht funktioniert, würden Informationen aus dem Error-Log hilfreich sein. Alternativ kannst Du Dir mit

Code: Alles auswählen

error_reporting(E_ALL);
ini_set('display_errors', true);


am Skriptanfang helfen.

Ab PHP7 sind Konstruktoren die mit dem Klassennamen benannt sind DEPRECATED (http://php.net/manual/de/migration70.deprecated.php), werden also ab einer der folgenden PHP Versionen nicht mehr unterstützt. Im Zweifelsfall würdest Du aber mit

Code: Alles auswählen

function FPDF($orientation='P', $unit='mm', $format='A4')
// ändern in
function __construct($orientation='P', $unit='mm', $format='A4')


Abhilfe schaffen können.

Spiro
Benutzer
Beiträge: 10
Registriert: Mi 2. Nov 2016, 09:07

Re: Nix geht mehr nach Upgrade von 1.6 auf 1.8.1

Beitragvon Spiro » Fr 11. Nov 2016, 11:30

Hi,
ich weiß der Beitrag hier ist schon älter, aber ich habe ein ähnliches Problem.
Wir sind mit unserer Domain umgezogen zu einem anderen Hoster.
Seitdem kann ich keinen Output mehr im Browser erzeugen. Bei dem neuen Hoster haben wir nun PHP7.

Mit der FPDF Version 1.81 erhalte ich diese Fehlermedlung:
Fatal error:
Uncaught Exception: FPDF error: Some data has already been output, can't send PDF file (output started at /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/drucken.php:1) in /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/fpdf/fpdf.php:271
Stack trace: #0 /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/fpdf/fpdf.php(1052):
FPDF->Error('Some data has a...') #1 /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/fpdf/fpdf.php(999):
FPDF->_checkoutput() #2 /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/drucken.php(1056):
FPDF->Output('I', '3003.pdf') #3 {main} thrown in /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/fpdf/fpdf.php on line 271

Daher bin ich zurück auf meine Version 1.70
Mit $pdf->Output("$bestellnummer.pdf", "I");
bekomm ich folgende Meldung:
Ich bin jetzt wieder zurück auf die Version 1.7 .... Damit bekomme ich nur diese Fehlermeldung
FPDF error: Some data has already been output, can't send PDF file (output started at /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/drucken.php:1)

Ändere ich den output in
$pdf->Output("$bestellnummer.pdf");
erzeugt er mir eine einwandfreie PDF auf meinem Server. Das ist aber ziemlich nervig, denn dann muss ich die pdf-Dateien ja immer vom Server runterladen bevor ich die ausdrucken kann.

error_reporting(E_ALL);
Das hab ich auch schon versucht und das einzige was er mir ausgibt sind undefinierte Variablen. Sprich, alle Felder die nicht gefüllt sind, da meckert er dann auch wegen dem number_format. Sonst gibt er mir keine Fehler aus.
Das einzig interessante dabei ist:
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; FPDF has a deprecated constructor in /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/fpdf/fpdf.php on line 12

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

Re: Nix geht mehr nach Upgrade von 1.6 auf 1.8.1

Beitragvon Wirus! » Sa 12. Nov 2016, 20:36

Ich würde mal vermuten, daß Deine drucken.php nicht mit "<?php ... " sondern mit einem Leerzeichen oder einer Leerzeile beginnt.

Spiro
Benutzer
Beiträge: 10
Registriert: Mi 2. Nov 2016, 09:07

Re: Nix geht mehr nach Upgrade von 1.6 auf 1.8.1

Beitragvon Spiro » Fr 18. Nov 2016, 12:20

Doch tut sie.

Hier die ersten Zeilen:

Code: Alles auswählen

<?php
//error_reporting(E_ALL);
include ("update.php");
include ("config/variablen.php");


FPDF Version 1.70
Fehlermeldung
FPDF error: Some data has already been output, can't send PDF file (output started at /www/htdocs/w0153e07/deine-gravur.de/adminbereich/rechnungen/drucken.php:1)

Hubert
Benutzer
Beiträge: 10
Registriert: Di 3. Sep 2013, 11:22

Re: Nix geht mehr nach Upgrade von 1.6 auf 1.8.1

Beitragvon Hubert » Di 10. Jan 2017, 11:40

Ja, ohne eine kleine Änderung am Quelltext kann man nicht auf die Versionen 1.8.x wechseln, wie ich diese Tage feststellen musste.
(Da muss nicht mal ein BOM / Leerzeile / Leerzeichen usw. schuld sein.)

Denn sieht man sich die Dokumentation für ->Output() an, wurde im Vergleich mit älteren Versionen die Reihenfoge der Parameter geändert.
Vorher 1. NAME / 2. DESTINATION
Jetzt 1. DESTINATION / 2. NAME

Der alte Aufruf mit ->Output($name); alleine läuft darum nicht mehr, wenn eine PDF Datei am Server gespeichert werden soll.
Er muss z.B. durch ->Output('F', $name); ersetzt werden. (Bitte zu Alternativen von 'F' auch in das /PDF/DOC/-Verzeichnis sehen)

Ausserdem noch ein Problem:
Manche Provider (in meinem Fall all-inkl) haben dieses Modul selbst am Server, aber noch in einer älteren Version.
Somit kann es sein, dass man trotz Update auf die alte Version zugreift.
Hier hilft eine .htaccess Datei z.B. mit folgendem Eintrag: php_value include_path ".:/www/htdocs/DEIN-FTP-LOGIN/DEIN-VERZEICHNIS/DEIN-FPDF-VERZEICHNIS/"

Jetzt wird die Version 1.8.1 verwendet.
Das behebt auch die unbeliebte deprecated - Meldung für den Konstruktor.


Zurück zu „Releases“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste