Javascript 生成pdf或其他非html文件时的错误处理

Javascript 生成pdf或其他非html文件时的错误处理,javascript,html,pdf,Javascript,Html,Pdf,在我们的web门户中,我们为某些类型的数据生成PDF。用户通过点击一个标签下载PDF,该标签引用了我们返回的内容类型:application/PDF;字符集=utf-8 这在起作用时效果很好;浏览器意识到它正在获取PDF文件,并打开内部或外部PDF阅读器,或要求用户保存文件,具体取决于浏览器和用户配置 但是,在某些情况下,我们可能无法生成PDF。首先,我们没有处理这个错误,一个NullPointerException失败了,我们得到了一个丑陋的新页面,里面充满了JSON格式的垃圾。然后,我们尝试

在我们的web门户中,我们为某些类型的数据生成PDF。用户通过点击一个标签下载PDF,该标签引用了我们返回的内容类型:application/PDF;字符集=utf-8

这在起作用时效果很好;浏览器意识到它正在获取PDF文件,并打开内部或外部PDF阅读器,或要求用户保存文件,具体取决于浏览器和用户配置

但是,在某些情况下,我们可能无法生成PDF。首先,我们没有处理这个错误,一个NullPointerException失败了,我们得到了一个丑陋的新页面,里面充满了JSON格式的垃圾。然后,我们尝试返回一个空结果,浏览器认为该结果没有问题,只是保存或发送了一个空文件。然后我尝试返回一个重定向,这让Chrome感到困惑,它显示了一个警告,告诉用户发生了奇怪的事情

标签中的href格式为“/module/showmypdf.cmd?pdfid=67482”。正如我所说,当返回一个有效的pdf文件时,这种方法可以很好地工作


那么,在向浏览器发送非HTML文件时,是否有任何错误处理的最佳实践?还有什么我可以尝试让浏览器将我的响应解释为重定向吗?

好的,我找到了重定向不起作用的原因。我在Java Spring控制器中执行此操作:

sendRedirect(“重定向:mypage.html?pdferor=true”)


“redirect:”前缀是从控制器返回视图名称时可以使用的。在sendDirect()调用中,它只会增加混乱。删除“重定向:”修复它。

application/pdf;charset=utf-8
-这没有意义:PDF文件是二进制文件,而不是文本文件,因此它们的字符集没有意义。好的一点@mkl-我会解决这个问题。谢谢