web网页端打印功能实现—方案

一:首先需要后端生成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之前

猜你喜欢

转载自blog.csdn.net/qq_24892029/article/details/81211132