From c25155ddbc9a68ed2d6ccefe567ddb4776ac0d4c Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Mon, 3 Aug 2020 13:34:03 +0200 Subject: [PATCH] ZUGFeRD: Namen der eingebetteten Datei richtig setzen MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit '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. --- SL/Template/LaTeX.pm | 5 +++++ 1 file changed, 5 insertions(+) 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}); -- 2.20.1