JSPDF的addHTML方法没有显示背景图片

7

我有一个简单的HTML页面,其中标题部分有一个背景图像。

使用jspdf将页面转换为Html以生成pdf后,所有内容都显示,但背景图像不显示。

请参见此fiddel链接

html:

<body id="pdf">
    <!-- header section -->
     <div class="section-header" id="main_d">
         <h1>
            data
        </h1>
     </div>
</body>

css

.section-header{
//background-color:red;
  background-image: url("https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSkxORFDMPY7v_DGrlgBxnFBHtwifP9Uz28Y5-8TcNpdTwILs3E");
  background-repeat: no-repeat;
  max-height: 200px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

js

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/" crossorigin="anonymous"></script>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script>
<script>

    var pdf = new jsPDF('1', 'pt', 'a4');
    pdf.addHTML($('#pdf')[0], function () {
       // pdf.output("dataurlnewwindow");
   pdf.save('Test.pdf');
 });


</script>
1个回答

7
为了回答这个问题,我首先尝试使用更新版本的html2canvas(1.0.0-rc.5)来看是否具有添加背景图像的功能。尽管进行了几次尝试,但都没有成功。以下是我的解决方案(更正确地定义为解决方法):
由于该库只考虑background-color属性,因此我们无法直接在CSS中放置图像。此时的解决方案是直接将图像插入到jsPDF中,并在其上方写上标题或其他文本。
如果页眉几乎始终相同,则此解决方案仅在特定情况下可行和方便。
var imgData = 'data:image/jpeg;base64,'+ Base64.encode('your-image.jpeg');
doc.addImage(imgData, 'JPEG', 15, 40, 180, 160);

之后可以通过addHTML添加其余内容,考虑到文本相对于图像的坐标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接