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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2938382731
Url: https://administrator.de/contentid/2938382731
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
2 Kommentare
Neuester Kommentar
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