【发布时间】:2020-11-19 20:31:29
【问题描述】:
我需要对齐jspdf中的文本和图像。我可以很好地渲染所有内容,但这与它在 html 中的样式不同。 请看图片:
但这就是它在 PDF 上的样子
我想我必须先将 hml 转换为图像,然后将图像添加到 PDF,所以我安装了 html2canvas。但我不知道如何同时使用这两者。请看我的代码;
<div class="container" id="pdfView" #pdfView>
<div class="card card-profile shadow mt--300">
<div class="px-4">
<div class="row justify-content-center">
<div class="col-lg-3 order-lg-2">
<div class="card-profile-image">
<a href="javascript:void(0)">
<img
src="./assets/img/brand/autosweeprfid.png"
class="rounded-circle"
style="display: none"
/>
</a>
</div>
</div>
<div class="col-lg-4 order-lg-3 text-lg-right align-self-lg-center">
<div class="card-profile-actions py-4 mt-lg-0">
<!-- <a href="javascript:void(0)" class="btn btn-sm btn-info mr-4">Connect</a>
<a href="javascript:void(0)" class="btn btn-sm btn-default float-right">Message</a> -->
</div>
</div>
<div class="col-lg-4 order-lg-1">
<div class="card-profile-stats d-flex justify-content-center">
<div>
<span class="heading"> </span>
<span class="description"> </span>
</div>
</div>
</div>
</div>
<div class="text-center">
<h3>Some Application</h3>
</div>
<div class="border-top text-left">
<div class="row justify-content-center">
<div class="col-lg-9">
<section class="section pb-0 section-components">
<div class="container">
<div class="row">
<div class="col-md-8">
<p>Hi There!</p>
<p>
<!-- Thank you for using Autosweep RFID Online Appointment. -->
Thank you for using Application.
</p>
<p>Let us review the information that you gave us.</p>
</div>
<div class="col-md-4">
<ngx-qrcode
[elementType]="elementType"
[value] = "value"
cssClass = "aclass"
errorCorrectionLevel = "L">
</ngx-qrcode>
</div>
</div>
<div class="row">
<div class="col-md-12">
<table class="table table-sm table-bordered">
<thead>
<tr>
<th>Properties</th>
<td>Value</td>
</tr>
<tr>
<th>Email Address</th>
<td>myMail@gmail.com</td>
</tr>
<tr>
<th>Customer Name</th>
<td>Some Name</td>
</tr>
<tr>
<th>Plate Number</th>
<td>AAA111</td>
</tr>
<tr>
<th>Date</th>
<td>2020-11-28</td>
</tr>
<tr>
<th>Time</th>
<td>18:00</td>
</tr>
<tr>
<th>Station</th>
<td>Some Station</td>
</tr>
<tr>
<th>Rerence Number</th>
<td>123456789</td>
</tr>
</thead>
</table>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</div>
</div>
</div>
ts
declare var jsPDF: any;
@ViewChild('pdfView', {static: false}) pdfView: ElementRef;
downloadAsPDF() {
const doc = new jsPDF('p', 'pt', 'letter');
const content = this.pdfView.nativeElement;
const margins = {
top: 30,
left: 40,
width: 300,
height: 800
};
doc.fromHTML(content.innerHTML, margins.left, margins.top, {}, function () {
doc.save('export.pdf');
}, margins);
}
你能告诉我怎么做吗?谢谢。
【问题讨论】:
-
您可以使用 doc.text 和 doc.addImage() 来显示图像和文本。您可以添加位置 x 和 y 作为 addImage() 方法的参数。并使用 jspdf-autotable 来显示表格。更好的布局和减少pdf文件的大小。
-
@crazydev901,你能给我一个关于如何做的样本吗?谢谢。
标签: angular jspdf html2canvas