Javascript 将PDF流使用到jsp中
我试图在jsp中显示PDF报告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
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();
}<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");%>