Rechnungs-PDF erstellen (tcpdf)

8 views
Skip to first unread message

Rudolf Harras

unread,
Jan 26, 2021, 5:22:40 PMJan 26
to
Hallo!

Ich habe da Mithilfe folgenden Beispiels ein PHP gebastelt, das ein PDF
erstellt:
https://www.php-einfach.de/experte/php-codebeispiele/pdf-per-php-erstellen-pdf-rechnung/

Leider scheint tcpdf nicht mehr für PHP Version 7 aktualisiert worden zu
sein, jetzt kommen da Fehler wie folgende:

Warning: "continue" targeting switch is equivalent to "break". Did you
mean to use "continue 2"? in tcpdf.php on line 17778

Deprecated: Array and string offset access syntax with curly braces is
deprecated in /.../tcpdf/tcpdf.php on line 16893

Warning: chr() expects parameter 1 to be int, string given in
/.../tcpdf/include/tcpdf_fonts.php on line 1671

Deprecated: The each() function is deprecated. This message will be
suppressed on further calls in /.../tcpdf/tcpdf.php on line 16542


Soll ich das beheben? Wobei ich erst mal rausfinden müsste, wie.
Oder besser ein anderes PHP-Skript nehmen?

Stefan Froehlich

unread,
Jan 26, 2021, 6:21:19 PMJan 26
to
On Tue, 26 Jan 2021 23:22:38 Rudolf Harras wrote:
> Ich habe da Mithilfe folgenden Beispiels ein PHP gebastelt, das
> ein PDF erstellt:
> https://www.php-einfach.de/experte/php-codebeispiele/pdf-per-php-erstellen-pdf-rechnung/
>
> Leider scheint tcpdf nicht mehr für PHP Version 7 aktualisiert worden zu
> sein, jetzt kommen da Fehler wie folgende:
>
> Warning: "continue" targeting switch is equivalent to "break". Did you
> mean to use "continue 2"? in tcpdf.php on line 17778

Diese Warnung scheint mir sehr beliebt zu sein; ich verwende anstatt
tcpdf dompdf, aber siehe da:

| Warning: "continue" targeting switch is equivalent to "break". Did
| you mean to use "continue 2"? in /.../dompdf/include/stylesheet.cls.php
| on line 1054

> Soll ich das beheben? Wobei ich erst mal rausfinden müsste, wie.
> Oder besser ein anderes PHP-Skript nehmen?

Umstieg auf ein anderes Skript hilft nur marginal, siehe oben.

Ich habe es bislang tapfer ignoriert. Solange das resultierende PDF
so aussieht, wie es aussehen soll, kann ich damit leben. Schön ist
es freilich nicht.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Was für ein hurtiger Gedanke: Stefan!
(Sloganizer)

Rudolf Harras

unread,
Jan 27, 2021, 4:05:45 AMJan 27
to
On 27.01.2021 00:21, Stefan Froehlich wrote:
> Ich habe es bislang tapfer ignoriert. Solange das resultierende PDF
> so aussieht, wie es aussehen soll, kann ich damit leben. Schön ist
> es freilich nicht.

Leider kommt da kein PDF mehr raus. Also einer von den Fehlern
verhindert offenbar die Verarbeitung.

Stefan Froehlich

unread,
Jan 27, 2021, 5:11:24 AMJan 27
to
Ok, das ist blöd (und der Umstieg auf ein anderes Paket vermutlich
eher mühsam).

Die Meldungen sollten rasch erledigt sein:

Einmal probeweise das continue durch ein "continue 2" ersetzen (was
wohl gemeint war) und schauen ob es hilft; wahrscheinlich nicht,
weil sich PHP in seinem Verhalten ja nicht geändert hat und
lediglich die Warnung neu hinzugekommen ist.

Einmal schauen, was da an chr() übergeben wird und - wenn es ein als
String maskierter Integer ist, den entsprechenden cast ergänzen.

Die beiden deprecated-Warnungen kannst Du ignorieren, die sind ja
*noch* irrelevant. Ansonsten halt die Klammerung beim Array-Zugriff
ausbessern; beim each() braucht es etwas mehr Kontext für eine
Lösung.


Aber helfen wird das, so wie die Meldungen auf den ersten Blick
aussehen, nicht viel; das Verhalten von PHP hat sich in diesen
Fällen (noch) nicht geändert, es wurden lediglich Warnungen ergänzt.
Das eigentliche Problem liegt also wahrscheinlich ganz woanders...

tcpdf steckt in vielen anderen Projekten mit drin, darum sollte sich
eigentlich bald jemand kümmern; wenigstens each() fällt mit PHP8
nämlich komplett weg.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan kann mehr als Freude machen!
(Sloganizer)

Rudolf Harras

unread,
Jan 27, 2021, 9:04:34 AMJan 27
to
On 27.01.2021 11:11, Stefan Froehlich wrote:
> Aber helfen wird das, so wie die Meldungen auf den ersten Blick
> aussehen, nicht viel; das Verhalten von PHP hat sich in diesen
> Fällen (noch) nicht geändert, es wurden lediglich Warnungen ergänzt.
> Das eigentliche Problem liegt also wahrscheinlich ganz woanders...

Das dürfte stimmen. Wenn ich "continue" durch "continue 2" ersetze kommt
trotzdem die genau gleiche warnung.

> tcpdf steckt in vielen anderen Projekten mit drin, darum sollte sich
> eigentlich bald jemand kümmern; wenigstens each() fällt mit PHP8
> nämlich komplett weg.

Es sieht so aus als hätte jemand das ganze zumindest bei Sourceforge auf
PDF7 angepasst: https://sourceforge.net/projects/tcpdf/

Da steht im Changelog: "Merge various fixes for PHP 7.3 compatibility
and security."

Seltsamerweise ändert das an meinen Fehler nichts. Hm.

Tcpdf selbst wurde offenbar durch das da abgelöst - aber dort finde ich
keine PHP-Dateien: https://github.com/tecnickcom/tc-lib-pdf

Rudolf Harras

unread,
Jan 27, 2021, 9:48:17 AMJan 27
to
On 27.01.2021 11:11, Stefan Froehlich wrote:
> tcpdf steckt in vielen anderen Projekten mit drin, darum sollte sich
> eigentlich bald jemand kümmern; wenigstens each() fällt mit PHP8
> nämlich komplett weg.

Nun, ich habe es geschafft!
Offenbar war das Problem nur, dass die Dateien - warum auch immer - in
einem anderen Verzeichnis landen.

Aber diese ganzen Warnungen sollten natürlich bis zur nächsten
PHP-Version behoben werden.

Arno Welzel

unread,
Jan 27, 2021, 12:58:26 PMJan 27
to
Rudolf Harras:

> Hallo!
>
> Ich habe da Mithilfe folgenden Beispiels ein PHP gebastelt, das ein PDF
> erstellt:
> https://www.php-einfach.de/experte/php-codebeispiele/pdf-per-php-erstellen-pdf-rechnung/
>
> Leider scheint tcpdf nicht mehr für PHP Version 7 aktualisiert worden zu
> sein, jetzt kommen da Fehler wie folgende:

tcpdf war immer schon recht bescheiden. Nimm fpdf: <http://www.fpdf.org/>


--
Arno Welzel
https://arnowelzel.de
Reply all
Reply to author
Forward
0 new messages