PDF:: Фоновое изображение Tk

#perl #pdf-generation #pdftk

#perl #pdf-генерация #pdftk

Вопрос:

У меня есть код, который выдает кучу строк HTML, превращается в PSLines, with превращается в строки PDF. После строк PDF мне нужен PDF ::Tk для вставки фонового изображения.

Ниже приведен мой код с комментарием о том, где, я думаю, мне нужен код. Кто-нибудь может мне помочь с этим фрагментом кода?

 sub printFilePdf {
    my $unique_id = shift;
    my ($file) = "$OUTFILES/$id.html";

    open(my $htmlFH, '<', $file) or die "Can't open file $file $!n";

    my $processId = open2(*POUT, *PIN, qq(html2ps -U -f /home/apache/cgi-bin/test/html2psrc-tst));

    my @lines = <$htmlFH>;
    print PIN @lines;
    close PIN;

    my @psLines;
    while (<POUT>) 
    {
        chomp;
        push(@psLines,$_);
    }
    waitpid $processId, 0;

    $processId = open2(*POUT, *PIN, qq(ps2pdf -sPAPERSIZE=letter - -));
    print PIN "$_n" foreach(@psLines);
    close PIN;

    my @pdfLines;
    while (<POUT>) {
        chomp;
        push(@pdfLines, $_);
    }
    waitpid $processId, 0;

    #Insert Code Here

    print "Content-Type: application/pdfn";
    print "Content-Disposition: attachment; filename=driverhistoryrecord.pdfnn";
    print "$_n" foreach(@pdfLines);
    }
  

Ответ №1:

PDF::Tk не совсем интуитивно понятен, call_pdftk($INPUT, $OUTPUT, @ARGS) выполняется pdftk $INPUT @ARGS output $OUTPUT … Вы можете получить справку о том, что вводить в @ARGS от man pdftk.

 my $pdftk = PDF::Tk->new;
$pdftk->call_pdftk($PDF_AS_STRING, $OUT, 'background', 'bg.pdf');

print "Content-Type: application/pdfrn";
print "Content-Disposition: attachment; filename=done.pdfrnrn";
print $OUT;
  

В качестве альтернативы вы можете захотеть взглянуть на что-то вроде HTML::HTMLDoc, который имеет поддержку <body background="bg.jpg"> и set_bodyimage($image) функцию.

 use HTML::HTMLDoc;
my $htmldoc = new HTML::HTMLDoc;
$htmldoc->set_html_content(<<"EOF");
<html><body>   
This is my <b>pdf</b>...
</body></html>
EOF

$htmldoc->set_bodyimage('bg.png');
print $htmldoc->generate_pdf()->to_string();