Tcpdf Dateiname mit Sonderzeichen
Hallo zusammen,
ich nutze tcpdf zur Generierung von individuellen pdf. Soweit so gut.Umlaute werden korrekt dargestellt. Nur den Dateinamen bekomme ich nicht utf8.
ALso:
Herr Müller geht nach Hause in Würzburg am Fluß. Alles einwandfrei.
Exportiere ich das pdf nach zB soll : Müller_053022.pdf
Ist: MC3BCller_053022.pdf
Die Datei ist utf-8, der Charset ist utf-8 und utf8encode(filename) habe ich auch:
Ohne das urlecode bekomme ich Mller_053022pdf. Wie bekomme ich die Dateinamen "schik"?
Natürlich kann ich machen, möchte ich aber möglichst nicht.
mfG
ratzekahl
ich nutze tcpdf zur Generierung von individuellen pdf. Soweit so gut.Umlaute werden korrekt dargestellt. Nur den Dateinamen bekomme ich nicht utf8.
ALso:
Herr Müller geht nach Hause in Würzburg am Fluß. Alles einwandfrei.
Exportiere ich das pdf nach zB soll : Müller_053022.pdf
Ist: MC3BCller_053022.pdf
Die Datei ist utf-8, der Charset ist utf-8 und utf8encode(filename) habe ich auch:
$dokumentenordner="./doks/";
// $this->pdf->Output($fileNL, 'F');
// echo $dokumentenordner.$docname;
$docname=urlencode($docname);
$pdf->Output($docname, 'I');
Ohne das urlecode bekomme ich Mller_053022pdf. Wie bekomme ich die Dateinamen "schik"?
Natürlich kann ich
str_replace("ü","ue",$docname);
mfG
ratzekahl
Please also mark the comments that contributed to the solution of the article
Content-Key: 2938382731
Url: https://administrator.de/contentid/2938382731
Printed on: May 24, 2024 at 08:05 o'clock
2 Comments
Latest comment
Servus.
Das hat nichts mit dem Encoding zu tun, denn die Output-Funktion von TCPDF selbst entfernt in dessen Code alle Sonderzeichen und ersetzt Blanks durch einen Underscore im Dateinamen wenn der erste Index des zweiten Parameters nicht "F" ist ... Siehe im Quellcode von TCPDF die Zeilen ab 7635
https://github.com/tecnickcom/TCPDF/blob/main/tcpdf.php
Passe dir den zweiten Regex (Zeile 4) oben einfach mal ergänzt um die Umlaute an.
Alternativ die Zeile auskommentieren(Nebenwirkungen dieser Maßnahme habe ich aber nicht weiter geprüft). Und schon sollten die Umlaute nicht mehr entfernt werden.
Grüße Uwe
edit: regex an php angepasst
Das hat nichts mit dem Encoding zu tun, denn die Output-Funktion von TCPDF selbst entfernt in dessen Code alle Sonderzeichen und ersetzt Blanks durch einen Underscore im Dateinamen wenn der erste Index des zweiten Parameters nicht "F" ist ... Siehe im Quellcode von TCPDF die Zeilen ab 7635
https://github.com/tecnickcom/TCPDF/blob/main/tcpdf.php
* @param string $name The name of the file when saved. Note that special characters are removed and blanks characters are replaced with the underscore character.
// ...
if ($dest != 'F') {
$name = preg_replace('/[\s]+/', '_', $name);
$name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name);
}
// ...
$name = preg_replace('/[^a-z0-9_\.-\xDF\xE4\xF6\xFC]/i', '', $name);
Grüße Uwe
edit: regex an php angepasst