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/kivitendo-erp.git/commitdiff_plain/c25155ddbc9a68ed2d6ccefe567ddb4776ac0d4c 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});