niedziela, 23 listopada 2008

Pdftk

PdfTk nie ma w zasobach fc8. W nowszych dystrybucjach też nie ma z uwagi na restrykcyjną licencję (znalazłem -- podobno działajacy -- rpm dla fc9 na stronie Gregory R. Kriehna, ale ja używam ciągle fc8). Nie idzie też tego skompilować: błąd zgłaszany przez gcj. Z opisu wynika, że sprawa jest trudna, bo pdftk jest źle zakodowany (I think all of us were amazed that it ever worked. That it did was by accident.:-)

Głupia sprawa... bo to przydatna aplikacja. Potrzebowałem akurat narzędzia do zmiany wpisów w słowniku Info plików PDF (pola Title, Author itp.). Znalazłem inne rozwiązanie wykorzystujące perlowy pakiet PDF::API2.

Najpierw instalacja (był dostępny w repozytoriach yuma):


yum install yum install perl-PDF-API2

Skrypt jest banalny:


#!/usr/bin/perl
use PDF::API2;
use Getopt::Long;

my $USAGE = "*** pdf_set_info -t title -k keywords -a author -f file ***\n";

GetOptions( 't=s' => \$title, 'a=s' => \$author, 'k=s' => \$keywords,
'f=s' => \$file, );

unless ($file) { print STDERR $USAGE; exit }

$pdf = PDF::API2->new;
$pdf = PDF::API2->open($file) || die "*** Problems opening $file ****";

%H = $pdf->info;
if ( $H{'Title'} ) {
print STDERR "**** Original title: $H{'Title'} ****\n";
if ($title) { $title .= " ($H{'Title'})" ; }
}

## Modyfikacja:
if ($title) { $H{'Title'} = $title }
if ($author) { $H{'Author'} = $author }
if ($keywords) { $H{'Keywords'} = $keywords }

unless ($title || $author || $keywords) { print STDERR $USAGE; exit }
%H = $pdf->info( %H );
$pdf->update;

Uruchomienie:


./pdf_set_info.pl -t tytuł -a autor -f słowa-kluczowe -f plik.pdf

Tytuł jest dodawany do tego co już jest w pliku PDF. Nie jest nadpisywany. Autor/Słowa kluczowe są nadpisywane. Uwaga: pakiet PDF::API2 nie jest mi bliżej znany, zatem trzeba uważać czy po zmianie Info plik PDF dalej da się oglądać.

Brak komentarzy:

Prześlij komentarz