Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将PDF流使用到jsp中_Javascript_Ajax_Jsp_Pdf_Jasper Reports - Fatal编程技术网

Javascript 将PDF流使用到jsp中

Javascript 将PDF流使用到jsp中,javascript,ajax,jsp,pdf,jasper-reports,Javascript,Ajax,Jsp,Pdf,Jasper Reports,我试图在jsp中显示PDF报告 我有可用的PDFstream,使用以下代码 private void generatePDFReport(OutputStream stream, JasperPrint jasperPrint) throws JRException { JRPdfExporter jrpdfexporter = new JRPdfExporter(); jrpdfexporter.setExporterInput(new SimpleExporterInput(jasperPr

我试图在jsp中显示PDF报告

  • 我有可用的PDFstream,使用以下代码

    private void generatePDFReport(OutputStream stream, JasperPrint jasperPrint) throws JRException {
    JRPdfExporter jrpdfexporter = new JRPdfExporter();
    jrpdfexporter.setExporterInput(new SimpleExporterInput(jasperPrint));
    jrpdfexporter.setExporterOutput(new SimpleOutputStreamExporterOutput(stream));
    SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
    jrpdfexporter.setConfiguration(configuration);
    jrpdfexporter.exportReport();
    
    }

  • 现在我是outputstream,它基本上是PDF流,我想显示到jsp中,我不想将整个响应contenttype设置为application/PDF,但我想将PDF嵌入到jsp输出的一部分中

    所以我将pdfstream输出转换为bytearray,并尝试使用以下命令显示

    <script language="Javascript">
    function loadDoc() {
        alert('called loadDoc');
        var xhr = new XMLHttpRequest();
        alert('called xhr');
    
        xhr.responseType = 'arraybuffer';
        alert('called responseType');
    
        alert('called xhr.onload ');
    
        // Create the Blob URL:
        var buffer = xhr.response;
        var blob = new Blob([<%=byteCharSet%>], {
            type: 'application/pdf'
        });
        var objectURL = URL.createObjectURL(blob);
        alert(objectURL);
    
        // Create an iframe to demonstrate it:
        var iframe = document.createElement('iframe');
        iframe.className = 'sample-iframe';
        iframe.src = objectURL;
        document.body.appendChild(iframe);
        console.log(objectURL);
    
        //xhr.open('GET', 'https://cors-anywhere.herokuapp.com/http://www.xmlpdf.com/manualfiles/hello-world.pdf', true);
        //xhr.send();
    }
    </script>
    
    
    函数loadDoc(){
    警报(“称为loadDoc”);
    var xhr=new XMLHttpRequest();
    警报(“称为xhr”);
    xhr.responseType='arraybuffer';
    警报(“称为响应类型”);
    警报(“称为xhr.onload”);
    //创建Blob URL:
    var buffer=xhr.response;
    var blob=新blob([]{
    键入:“应用程序/pdf”
    });
    var objectURL=URL.createObjectURL(blob);
    警报(objectURL);
    //创建一个iframe来演示它:
    var iframe=document.createElement('iframe');
    iframe.className='sample iframe';
    iframe.src=objectURL;
    document.body.appendChild(iframe);
    log(objectURL);
    //xhr.open('GET','https://cors-anywhere.herokuapp.com/http://www.xmlpdf.com/manualfiles/hello-www.world.pdf',true);
    //xhr.send();
    }
    
    但当我试图执行javascript时,无法理解bytearray的输出,它只是在查看页面源代码中显示失败的blob值,如下所示

         var blob = new Blob([%PDF-1.4
        %����
        3 0 obj
       <</Filter/FlateDecode/Length 625>>stream
       x���M��0@��>��um�'�v�������C
       ^���V�����Ķ�H����3�?�}� �    �q�D3�
       q�`�e��˼'��Do?1�(Ξ�h��2s�S(^�����gĈ^�/b��a�r"\"���_���Г�Lw
    
    var blob=新blob([%PDF-1.4
    %����
    30 obj
    流动
    x���M��0@��>��嗯�'�v�������C
    ^���v�����Ķ�H����3.�?�}� �    �Q�D3�
    Q�`�E��˼'��做什么�(Ξ�H��2s�(^�����gĈ^�/B��A.�r“\”���_���Г�Lw
    
    我使用Iframe解决了这个问题

    在src的iframe中,我使用了另一个jsp

           out.write("<iframe src= displayPDF.jsp" + " " + "type=application/pdf width=100% height=600px ");
                out.write("</iframe>");
    

    out.write(“PDF是一个二进制文件/流,您不能简单地将其包含到HTML/JS代码中。
    
        <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%><%
        byte[] pdfByteArray = (byte[]) session.getAttribute("PDFbyteArray");
        if (pdfByteArray == null)
            System.out.println("pdfByteArray is null");
        response.setHeader("Content-Disposition", "inline; filename=\"MyFile.pdf\"");
        response.setContentType("application/pdf; name=\"MyFile.pdf\"");
        ServletOutputStream serv_out = response.getOutputStream();
        serv_out.write(pdfByteArray);
        serv_out.flush();
        serv_out.close();
        out.clear();
        session.removeAttribute("PDFbyteArray");%>