From: Moritz Bunkus Date: Mon, 3 Aug 2020 11:34:03 +0000 (+0200) Subject: ZUGFeRD: Namen der eingebetteten Datei richtig setzen X-Git-Tag: release-3.5.6.1~83 X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/commitdiff_plain/c25155ddbc9a68ed2d6ccefe567ddb4776ac0d4c?hp=115b92fcab786104b08b05cfe5119a5cc2b5aa4f ZUGFeRD: Namen der eingebetteten Datei richtig setzen 'ucfilespec' wird erst ab PDF 1.7 unterstützt, was wir nicht erzeugen. Daher wurde bisher der Name der temporären Datei auch im PDF als Dateiname verwendet. Jetzt wird korrekt »ZUGFeRD-invoice.xml« als Name des Anhangs im PDF angezeigt. --- diff --git a/SL/Template/LaTeX.pm b/SL/Template/LaTeX.pm index 4915c86a0..b2b6838ab 100644 --- a/SL/Template/LaTeX.pm +++ b/SL/Template/LaTeX.pm @@ -400,6 +400,10 @@ sub _embed_file_directive { my $file_name = blessed($file->{source}) && $file->{source}->can('filename') ? $file->{source}->filename : "" . $file->{source}->filename; my $embed_name = $file->{name} // $file_name; $embed_name =~ s{.*/}{}; + + my $embed_name_ascii = $::locale->quote_special_chars('filenames', $embed_name); + $embed_name_ascii =~ s{[^a-z0-9!@#$%^&*(){}[\],.+'"=_-]+}{}gi; + my @options; my $add_opt = sub { @@ -408,6 +412,7 @@ sub _embed_file_directive { push @options, sprintf('%s={%s}', $name, $value); # TODO: escaping }; + $add_opt->('filespec', $embed_name_ascii); $add_opt->('ucfilespec', $embed_name); $add_opt->('desc', $file->{description}); $add_opt->('afrelationship', $file->{relationship});