一:首先需要后端生成pdf文件
Java为例:
目前开源、成熟、稳定的第三方包有iText。而用iText生成PDF有三种方式:
调用iText API,用代码“写”出PDF,依赖包:com.itextpdf:itextpdf:5.5.11
结合XmlWorker,从HTML模板生成PDF,依赖包:com.itextpdf.tool:xmlworker:5.5.11
结合Flying Saucer,从HTML模板生成PDF,依赖包:org.xhtmlrenderer:flying-saucer-pdf-itext5:9.1.6
二:前段页面处理
1:返回的是pdf文件路径处理方式
HTML定义一个
<iframe src="" frameborder="0" id="pdfContainer" name="pdfContainer" style="display: none;"></iframe>
js
$(".print").click(function(){
$("#pdfContainer").attr("src","../../../print_pdf/web/sql问题.pdf")
setTimeout(function () {
$("#pdfContainer")[0].contentWindow.print();
},500);
})
2:返回的是pdf文件流或pdf路径带预览功能
这需要pdf.js
官网下有demo不赘述,
var DEFAULT_URL = "";
var PDFData = "";
$.ajax({
type:"post",
async:false,
crossDomain: true,
contentType:'application/json; charset=utf-8',
mimeType: 'text/plain; charset=x-user-defined',
url:"",
success:function(data){
PDFData = data;
var rawLength = PDFData.length;
//转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068
var array = new Uint8Array(new ArrayBuffer(rawLength));
for(i = 0; i < rawLength; i++) {
array[i] = PDFData.charCodeAt(i) & 0xff;
}
DEFAULT_URL = array;
}
});
这段代码要写在viewer.html中在引用viewer.js之前