我有一个对象列表,在获取对象的每个元素时,我想将每个元素导出到PDF中的各个页面。
我通过迭代列表对象来获取数据(例如$scope.employees
)。目前,当用户单击导出按钮时,数据将导出到PDF。我的要求是每个对象,而迭代应该存储在PDF的各个页面中。例如,带有pageHeader的对象“这在第1页中显示”应该在第1页中显示,“这在第2页中显示”应该在PDF的第2页显示时打开等...
对此有任何建议将不胜感激。
请在此处找到一个plunker演示:https://plnkr.co/edit/HvKipjWCYsgujJOv6You?p=preview
在迭代pageSplit:true
,任何输入时,是否需要使用$scope.employees
选项?
js code:
$scope.export = function(){
alert("in pdf export");
var pdf = new jsPDF('landscape');
var width1 = pdf.internal.pageSize.width;
var height = pdf.internal.pageSize.height;
var source = "";
$scope.employees.forEach(function(value){
source+= value.pageHeader + "\n" +"\n";
})
specialElementHandlers = {
// element with id of "bypass" - jQuery style selector
'#bypassme': function (element, renderer) {
// true = "handled elsewhere, bypass text extraction"
return true
}
};
margins = {
top: 80,
bottom: 60,
left: 10,
width: '100%'
};
// all coords and widths are in jsPDF instance's declared units
// 'inches' in this case
pdf.fromHTML(
source, // HTML string or DOM elem ref.
margins.left, // x coord
margins.top, { // y coord
'width': width1, // max width of content on PDF
'elementHandlers': specialElementHandlers
},
function (dispose) {
// dispose: object with X, Y of the last line add to the PDF
// this allow the insertion of new lines after html
pdf.save('test.pdf');
},
margins
);
答案 0 :(得分:0)
只需使用<!--ADD_PAGE-->
(ADD_PAGE与注释的角度&lt;&gt;大括号),您希望新页面的位置如下
source+= "<div>"+value.pageHeader + "</div><!--ADD_PAGE-->";