Package: libpdf-api2-perl Version: 0.57-1 Severity: normal Tags: patch l10n
PDF::API2 includes Encode but doesn't use it when checking for UTF-16 strings in metadata ($pdf->info() hash). This causes the output to be garbled in our UTF-8 (perl -CSD) environment. The attached patch uses Encode::detect to decode UTF-16BE/LE strings; it might be useful to simply Encode::Guess the values but this approach is more conservative. -- System Information: Debian Release: 4.0 APT prefers stable APT policy: (990, 'stable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18-5-686 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Versions of packages libpdf-api2-perl depends on: ii libcompress-zlib-perl 1.42-2 Perl module for creation and manip ii perl 5.8.8-7etch1 Larry Wall's Practical Extraction libpdf-api2-perl recommends no packages. -- debconf-show failed
--- /usr/share/perl5/PDF/API2.pm 2006-10-04 16:55:53.000000000 -0700 +++ /tmp/API2.pm 2008-01-16 17:23:05.000000000 -0800 @@ -590,12 +590,8 @@ foreach my $k (@{$self->{infoMeta}}) { next unless(defined $self->{pdf}->{'Info'}->{$k}); $opt{$k}=$self->{pdf}->{'Info'}->{$k}->val; - if(unpack('n',$opt{$k})==0xfffe) { - my ($mark,@c)=unpack('n*',$opt{$k}); - $opt{$k}=pack('U*',@c); - } elsif(unpack('n',$opt{$k})==0xfeff) { - my ($mark,@c)=unpack('v*',$opt{$k}); - $opt{$k}=pack('U*',@c); + if ((unpack('n',$opt{$k})==0xfffe) or (unpack('n',$opt{$k})==0xfeff)) { + $opt{$k} = decode('UTF-16', $self->{pdf}->{'Info'}->{$k}->val); } } }