Perl可以使用CSS将图像打印成PDF吗?

时间:2016-09-26 20:23:48

标签: pdf pdf-generation

我在Perl中使用Open2打印PDF,它采用HTML模板并将其打印成可以通过按钮下载的PDF格式。

他们想要一个水印,所以我用了

<style>
   body {
      background-image: url("watermark.jpg");
      background-repeat: no-repeat;
   }
</style>
预览页面上的

看起来很棒,但是当你将它下载到PDF时它会消失。我可以用任何方式将其添加到我的PDF中吗?

PDF代码生成器

sub pdfGenerator {
my $data = shift;
my $file = "$OUTFILES/$data.html";

open(my $fileFH, '<', $file) or return "Can not find file\n";   

my $processId = open2(\*POUT, \*PIN, qq(html2ps -U -f /home/dir/cgi-bin/dir2/html2psrc-label));

my @lines = <$fileFH>;
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;

  print "Content-Type: application/pdf\n";
  print "Content-Disposition: attachment; filename=pdfName.pdf\n\n";
  print "$_\n" foreach(@pdfLines);

}

我试过改变html2ps文件但我仍然没有得到任何东西。 我的代码在下面

 @html2ps
{
   paper
   {
      type: letter;
   }
}

BODY
{
    font-family: Helvetica;
    margin: 2em 1em 2em 70px;
    font-family: Helvetica, sans-serif;
    color: black;
    background-image: url("/dir/images/watermark.jpg");
    background-repeat: no-repeat;
}

@page
{
   margin-left:   .75in;
   margin-right:  .75in;
   margin-top:    1in;
   margin-bottom: 1in;
}

1 个答案:

答案 0 :(得分:1)

  

html2ps忽略html文档中包含的css。你可以定义   配置文件中的样式。只支持css的一个子集   html2ps的。

所以你需要把它放在conf文件中。

请参阅此示例:https://en.wikibooks.org/wiki/Java_Persistence/Relationships#Serialization.2C_and_Detaching

在示例中,您可以注意到background-image代码使用了BODY