2016-05-13 74 views
22

我想获取PDF中的HTML页面。如何使用jquery获得打印PDF格式的结果

一些研究,我发现pdfJS插件后,它有一些问题,引导,布局将是混乱

http://jsfiddle.net/5ud8jkvf/

这里是小提琴

我发现默认的打印成PDF结果是伟大的

enter image description here

var doc = new jsPDF(); 
var specialElementHandlers = { 
    '#editor': function (element, renderer) { 
     return true; 
    } 
}; 

$('#cmd').click(function() { 
    doc.fromHTML($('#content').html(), 15, 15, { 
     'width': 170, 
      'elementHandlers': specialElementHandlers 
    }); 
    doc.save('sample-file.pdf'); 
}); 

因此,我没有解决pdfJS的问题,我不知道是否有HTML/jQuery的方式来获得从PDF格式的PDF格式的PDF。

的HTML需要转换为PDF只有一个页面的申请表,非常感谢

+2

有什么进展?我也需要相同的要求 – Nagaraju

+1

你可以在图像中包含'html'问题? – guest271314

+0

@ user782104您可以指定您面临的问题是bootstrap和jstopdf –

回答

3

当前版本允许获得pdf的blobarraybuffer。你所要做的唯一事情是从0.9更新到库的1.2.x版本,并调用保存这样

var myBlob; 

$('#cmd').click(function() { 
    doc.fromHTML($('#content').html(), 15, 15, { 
     'width': 170, 
      'elementHandlers': specialElementHandlers 
    }); 
    myBlob = doc.save('blob'); 
}); 
2

可能是你可以尝试html2canvas(它将解析DOM,计算应用的样式)。

(function(){ 
var 
form = $('.form'), 
cache_width = form.width(), 
a4 =[ 595.28, 841.89]; // for a4 size paper width and height 

$('#create_pdf').on('click',function(){ 
$('body').scrollTop(0); 
createPDF(); 
}); 
//create pdf 
function createPDF(){ 
getCanvas().then(function(canvas){ 
    var 
    img = canvas.toDataURL("image/png"), 
    doc = new jsPDF({ 
      unit:'px', 
      format:'a4' 
     });  
     doc.addImage(img, 'JPEG', 20, 20); 
     doc.save('techumber-html-to-pdf.pdf'); 
     form.width(cache_width); 
}); 
} 

// create canvas object 
function getCanvas(){ 
form.width((a4[0]*1.33333) -80).css('max-width','none'); 
return html2canvas(form,{ 
    imageTimeout:2000, 
    removeContainer:true 
    }); 
} 

}()); 

我发现这个here。如果您需要更多信息,请检查链接。

2

似乎您试图表中的数据打印成PDF Format.So您可以使用jQuery的DataTables插入。

Datatables提供button库,您可以在其中使用PDF按钮。 它支持HTML5和Flash以及按钮类型,在Flash和HTML按钮选项之间自动选择。

$('#myTable').DataTable({ 
buttons: [ 
    'pdf' 
] 
}); 

它提供了excel导出功能,您只需要添加excel按钮即可。

$('#myTable').DataTable({ 
buttons: [ 
    'copy', 'excel', 'pdf' 
] 
}); 

我已经在我们的应用程序中使用过,它不会与bootstrap发生任何冲突。