Javascript 通过jsPDF向PDF添加多个元素';s添加HTML
我使用的是一个显示几个独立的信息位。因为不活动选项卡的实际内容是隐藏的,所以如果我只添加页面的整个主体,它就不会打印。打印后看到的唯一选项卡内容是当前活动的选项卡。我正在尝试使用Javascript 通过jsPDF向PDF添加多个元素';s添加HTML,javascript,jquery,angularjs,pdf,jspdf,Javascript,Jquery,Angularjs,Pdf,Jspdf,我使用的是一个显示几个独立的信息位。因为不活动选项卡的实际内容是隐藏的,所以如果我只添加页面的整个主体,它就不会打印。打印后看到的唯一选项卡内容是当前活动的选项卡。我正在尝试使用addHTML方法打印这些选项卡中的所有内容以及页面中的另一个元素,以保持其外观 单独打印其中任何一项都很有效,但我似乎无法找到一种方法一次性打印所有项目 例如,这是用于打印单个元素的代码 var pdf = new jsPDF('p', 'pt', 'a4'); pdf.addHTML($('#foo').first(
addHTML
方法打印这些选项卡中的所有内容以及页面中的另一个元素,以保持其外观
单独打印其中任何一项都很有效,但我似乎无法找到一种方法一次性打印所有项目
例如,这是用于打印单个元素的代码
var pdf = new jsPDF('p', 'pt', 'a4');
pdf.addHTML($('#foo').first(), function() {
pdf.save();
});
这是可行的(虽然输出全是黑色的,但我认为这是另一个问题)。现在,我想使用几个addHTML
语句来完成添加所需内容并保存。差不多
var pdf = new jsPDF('p', 'pt', 'a4');
pdf.addHTML($('#foo').first());
_.each( $('.bar').first().children(), function(e) {
pdf.addHTML(e);
});
pdf.save();
然而,采用第二种方法保存pdf时,它只是完全空白
值得注意的是,这是可行的,但它没有我想要保留的格式,并且内容比我想要的更多:
var doc = new jsPDF();
doc.fromHTML($('body').get(0), 15, 15, {
'width': 170,
}, function() {
doc.save();
});
试图强制它只选择#foo
和.bar
,结果会出现与我上面遇到的相同的问题
任何关于正确方法的建议都将不胜感激 在addHTML回调之外调用pdf.save()
很可能会在addHTML方法有机会添加html之前创建pdf。试着这样做:
未测试
var pdf = new jsPDF('p', 'pt', 'a4');
var elements = $(".bar");
var i = 0;
var recursiveAddHtml = function () {
if (i < elements.length) {
var x = 0, y = i * 20;
pdf.addHTML(elements.get(i), x, y, function () {
i++;
recursiveAddHtml();
});
} else {
pdf.save();
}
}
recursiveAddHtml();
var pdf=new-jsPDF('p','pt','a4');
变量元素=$(“.bar”);
var i=0;
var recursiveAddHtml=函数(){
if(i<元素长度){
变量x=0,y=i*20;
addHTML(elements.get(i),x,y,function(){
i++;
递归添加HTML();
});
}否则{
pdf.save();
}
}
递归添加HTML();
这应该为每个元素调用recursiveAddHtml
,每次调用一个,然后在元素到达末尾时调用save
更新
我刚刚尝试过这个方法,它似乎有效,只是它将所有元素放置在彼此的顶部。我还不确定如何检测pdf中当前内容的高度,因此我在示例中添加了x和y坐标,以便您至少可以看到pdf中的不同元素
另外,请确保将背景颜色设置为其他颜色,否则默认为黑色。在addHTML回调之外调用pdf.save()
很可能会在addHTML方法有机会添加html之前创建pdf。试着这样做:
未测试
var pdf = new jsPDF('p', 'pt', 'a4');
var elements = $(".bar");
var i = 0;
var recursiveAddHtml = function () {
if (i < elements.length) {
var x = 0, y = i * 20;
pdf.addHTML(elements.get(i), x, y, function () {
i++;
recursiveAddHtml();
});
} else {
pdf.save();
}
}
recursiveAddHtml();
var pdf=new-jsPDF('p','pt','a4');
变量元素=$(“.bar”);
var i=0;
var recursiveAddHtml=函数(){
if(i<元素长度){
变量x=0,y=i*20;
addHTML(elements.get(i),x,y,function(){
i++;
递归添加HTML();
});
}否则{
pdf.save();
}
}
递归添加HTML();
这应该为每个元素调用recursiveAddHtml
,每次调用一个,然后在元素到达末尾时调用save
更新
我刚刚尝试过这个方法,它似乎有效,只是它将所有元素放置在彼此的顶部。我还不确定如何检测pdf中当前内容的高度,因此我在示例中添加了x和y坐标,以便您至少可以看到pdf中的不同元素
另外,请确保将背景颜色设置为其他颜色,否则默认为黑色。在addHTML回调之外调用pdf.save()
很可能会在addHTML方法有机会添加html之前创建pdf。试着这样做:
未测试
var pdf = new jsPDF('p', 'pt', 'a4');
var elements = $(".bar");
var i = 0;
var recursiveAddHtml = function () {
if (i < elements.length) {
var x = 0, y = i * 20;
pdf.addHTML(elements.get(i), x, y, function () {
i++;
recursiveAddHtml();
});
} else {
pdf.save();
}
}
recursiveAddHtml();
var pdf=new-jsPDF('p','pt','a4');
变量元素=$(“.bar”);
var i=0;
var recursiveAddHtml=函数(){
if(i<元素长度){
变量x=0,y=i*20;
addHTML(elements.get(i),x,y,function(){
i++;
递归添加HTML();
});
}否则{
pdf.save();
}
}
递归添加HTML();
这应该为每个元素调用recursiveAddHtml
,每次调用一个,然后在元素到达末尾时调用save
更新
我刚刚尝试过这个方法,它似乎有效,只是它将所有元素放置在彼此的顶部。我还不确定如何检测pdf中当前内容的高度,因此我在示例中添加了x和y坐标,以便您至少可以看到pdf中的不同元素
另外,请确保将背景颜色设置为其他颜色,否则默认为黑色。在addHTML回调之外调用pdf.save()
很可能会在addHTML方法有机会添加html之前创建pdf。试着这样做:
未测试
var pdf = new jsPDF('p', 'pt', 'a4');
var elements = $(".bar");
var i = 0;
var recursiveAddHtml = function () {
if (i < elements.length) {
var x = 0, y = i * 20;
pdf.addHTML(elements.get(i), x, y, function () {
i++;
recursiveAddHtml();
});
} else {
pdf.save();
}
}
recursiveAddHtml();
var pdf=new-jsPDF('p','pt','a4');
变量元素=$(“.bar”);
var i=0;
var recursiveAddHtml=函数(){
if(i<元素长度){
变量x=0,y=i*20;
addHTML(elements.get(i),x,y,function(){
i++;
递归添加HTML();
});
}否则{
pdf.save();
}
}
递归添加HTML();
这应该为每个元素调用recursiveAddHtml
,每次调用一个,然后在元素到达末尾时调用save
更新
我刚刚尝试过这个方法,它似乎有效,只是它将所有元素放置在彼此的顶部。我还不确定如何检测pdf中当前内容的高度,因此我在示例中添加了x和y坐标,以便您至少可以看到pdf中的不同元素
另外,请确保将背景颜色设置为其他颜色,否则默认为黑色。Adam的答案n