我正在使用Ajax功能来获取我的内容,当jQuery.ajax()
成功时,我需要导出PDF。我该怎么做?
jQuery(因为JavaScript不能)无法从数据创建PDF,但是它可以从服务器获取(像任何其他请求一样),但是无法生成一个。JavaScript没有机制(尽管现在正在实现一些HTML5选项)来创建/保存跨浏览器工作的文件,特别是二进制文件。
$.ajax({
type: "POST", url: "/test", data: someData, success: function(response, status, xhr){
var ct = xhr.getResponseHeader("content-type") || "";
if (ct.indexOf(‘xml’) > -1) {
// handle xml here
}
if (ct.indexOf(‘pdf’) > -1) {
// handle pdf here
}
}
});
2)一旦您获得了PDF内容,您可以使用base64数据技巧将浏览器重定向以显示PDF。首先,将数据内容编码为base64。有几种库可帮助您在Javascript中完成此操作。然后,通过document.location.href返回您的内容:
document.location.href = 'data:application/pdf;base64,' + base64PDFData;
这应该可以满足您的需求。理论上,您可以使用此方法将任何内容类型转发到浏览器。
编辑:
我应该提到,由于安全限制,数据URI在IE中不起作用。
添加此代码:
<script src="https://docraptor.com/docraptor-1.0.0.js"></script>
DocRaptor.createAndDownloadDoc("YOUR_API_KEY_HERE", {
test: false, // test documents are free, but watermarked
type: "pdf",
name: planStatus+"_" +assessmentYear+"_"+employeeId+ ".pdf",
document_content: document.querySelector('#MyDoc').innerHTML, // use this page's HTML
// document_content: "<h1>Hello world!</h1>", // or supply HTML directly
// document_url: "http://example.com/your-page", // or use a URL
// javascript: true, // enable JavaScript processing
// prince_options: {
// media: "screen", // use screen styles instead of print styles
// }
})
通过使用以下代码,我们可以在jQuery中生成PDF。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.22/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
<script type="text/javascript">
$("body").on("click", "#btnExport", function () {
html2canvas($('[id*=table2]')[0], {
onrendered: function (canvas) {
var data = canvas.toDataURL();
var docDefinition = {
content: [{
image: data,
width: 520,
}]
};
pdfMake.createPdf(docDefinition).download("Paper.pdf");
}
});
function1 ()
html2canvas($('[id*=tab1]')[0], {
onrendered: function (canvas) {
var data = canvas.toDataURL();
var docDefinition = {
content: [{
image: data,
width: 520,
}]
};
pdfMake.createPdf(docDefinition).download("Paper.pdf");
}
});
});
</script>