gpt4 book ai didi

javascript - 调用 jasper PDF 并向客户端显示或能够下载它?

转载 作者:行者123 更新时间:2023-11-28 08:28:06 24 4
gpt4 key购买 nike

我使用 DOJO + Spring MVC,我调用 ExportPDF.html 来生成我的 pdf但由于我的脚本中的 xhr 函数,您在控制台中有这样的字符 @"x13&"#%"我认为这是我的 pdf。我如何在新网页中显示或允许客户端下载它?

这是我的 exporPDF.html Controller

@RequestMapping(value = "/exportarPDF", method = {
RequestMethod.GET, RequestMethod.POST })
private @ResponseBody
void exportarPDF(@ModelAttribute("someBean") somebean someBean,
BindingResult result,HttpServletRequest request,HttpServletResponse response) throws Exception {
response.setContentType("application/pdf");
JasperReport mainReporte = (JasperReport) JRLoader.loadObject(mainJasper);
JasperPrint mainPrint = JasperFillManager.fillReport(mainReporte, parameters, new JRBeanCollectionDataSource(SOMELIST));

ServletOutputStream output = response.getOutputStream();
JasperExportManager.exportReportToPdfStream(mainPrint, output);
output.close();

}

我的 pdf 生成很棒,但我可以在页面中看到或下载它,请帮助我

这是我的脚本方法

                xhr("exportarPDF.html", {
query : {
someValue: This Value is received well in the Spring Controller
},
handleAs : "json",
method : "post"
}).then(function(data) {
//I thinks this data is my pdf!
}, function(err) {
alert("Error Interno");
}, function(evt) {
// Handle a progress event from the request if the
// browser supports XHR2
});

这是我用 firebug 进行的调试

enter image description here

最佳答案

我也遇到过这种情况。正如 XMLHttpRequest to open PDF in browser 中的回答“如果您查询的 URL 实际上返回 PDF 数据,则无法通过 xhr 执行此操作。”请参阅链接以获取解释。我所做的是将生成的 pdf 保存在服务器上并将其名称放入 cookie 中。收到回复时,我验证它是一个 pdf(通过检查是否 resp.headers('Content-Type')=='application/pdf')。然后我调用了另一个 url,它使用 window.open 呈现 pdf。使用第二个参数('_self')以便不会打开新选项卡。

 if (isPDF(response))
{
var url=$cookies['fileurl'].substring(1,$cookies['fileurl'].length-1);
$window.open('/ws/print?action='+url,'_self');
delete $cookies['fileurl'];
return;
}

关于javascript - 调用 jasper PDF 并向客户端显示或能够下载它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com