PDF::Tk 背景图片
PDF::Tk Background Image
我有一个代码可以吐出一堆 HTML 行,变成 PSLines,然后变成 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/pdf\n";
print "Content-Disposition: attachment; filename=driverhistoryrecord.pdf\n\n";
print "$_\n" foreach(@pdfLines);
}
PDF::Tk 并不完全直观,call_pdftk($INPUT, $OUTPUT, @ARGS)
执行 pdftk $INPUT @ARGS output $OUTPUT
...您可以从 man pdftk.[=18= 获得关于向 @ARGS 提供什么的帮助]
my $pdftk = PDF::Tk->new;
$pdftk->call_pdftk($PDF_AS_STRING, $OUT, 'background', 'bg.pdf');
print "Content-Type: application/pdf\r\n";
print "Content-Disposition: attachment; filename=done.pdf\r\n\r\n";
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();
我有一个代码可以吐出一堆 HTML 行,变成 PSLines,然后变成 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/pdf\n";
print "Content-Disposition: attachment; filename=driverhistoryrecord.pdf\n\n";
print "$_\n" foreach(@pdfLines);
}
PDF::Tk 并不完全直观,call_pdftk($INPUT, $OUTPUT, @ARGS)
执行 pdftk $INPUT @ARGS output $OUTPUT
...您可以从 man pdftk.[=18= 获得关于向 @ARGS 提供什么的帮助]
my $pdftk = PDF::Tk->new;
$pdftk->call_pdftk($PDF_AS_STRING, $OUT, 'background', 'bg.pdf');
print "Content-Type: application/pdf\r\n";
print "Content-Disposition: attachment; filename=done.pdf\r\n\r\n";
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();