ratzekahl1
Goto Top

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:
$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);  
machen, möchte ich aber möglichst nicht.
mfG
ratzekahl

Content-Key: 2938382731

Url: https://administrator.de/contentid/2938382731

Printed on: May 24, 2024 at 08:05 o'clock

Member: colinardo
Solution colinardo May 30, 2022 updated at 14:57:34 (UTC)
Goto Top
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
* @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);  
}
// ...
Passe dir den zweiten Regex (Zeile 4) oben einfach mal ergänzt um die Umlaute an.
$name = preg_replace('/[^a-z0-9_\.-\xDF\xE4\xF6\xFC]/i', '', $name);  
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
Member: ratzekahl1
ratzekahl1 May 30, 2022, updated at May 31, 2022 at 06:37:23 (UTC)
Goto Top
@uwe: Vielen Dank, das werde ich morgen mal testen! RegEx ist bei mir wie der Teufel mit dem Weihwasser. ;)
Day after:
Den Block auskommentiert. Underscore mache ich eh selber und es läuft. Vielen lieben Dank!!!

@all. Das find eich an Administrator.de Klasse. Man bekommt relativ schnell Hilfe und keine Klugsche??er, die erstmal eine Diskussion lostreten über Sinn und Zweck und ob BMW besser ist oder Mercedes. ;)