Rest API 生成 PDF byte[] JSON 内容类型,使用 angularJS 在 Web 中查看
Posted
技术标签:
【中文标题】Rest API 生成 PDF byte[] JSON 内容类型,使用 angularJS 在 Web 中查看【英文标题】:Rest API generated PDF byte[] JSON content-type to be viewed in Web using angularJS 【发布时间】:2016-12-31 15:23:27 【问题描述】:我正在返回一个字节 [] 的 PDF 内容作为来自 REST API 的 JSON 响应,并尝试在 Angular JS 中呈现数据。
这是我的 JS 代码 sn-p :
if(data.appStatusCode===0)
var jsonObj = JSON.parse(data.payload);
var reportData = jsonObj.data;
var file = new Blob([reportData], type: 'application/pdf');
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
以及返回 byte[] 作为有效负载的控制器
@RequestMapping(value = "/janitramwebreport/janitramid",
method = RequestMethod.GET,
produces = Constants.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseVO> getReportWebPdf(HttpEntity<?> httpEntity)
*//returns byte[] as the payload*
当我尝试在新窗口中生成 PDF 时,我收到 PDF 文件错误消息。
【问题讨论】:
我更改了 API 以生成 application/pdf 并在 Angular 端接受为 ArrayBuffer 并且它有效! 【参考方案1】:你看过了吗:
AngularJS: Display blob (.pdf) in an angular app
AngularJS Display PDF (byte[]) received from Spring @RestController
我想这个问题已经回答了。
【讨论】:
我已经尝试了所有这些方法,但这些方法都不适合我。我将 PDF 的字节 [] 添加到 BO 对象,并在更改为 JSON 后将对象发送到 Web。如您所见,我的 API 的响应是“application/json”【参考方案2】:在下面的链接中,你应该可以找到答案:
AngularJS Display PDF (byte[]) received from Spring(@RestController) + jasper report
在此链接中,您可以了解如何使用 angularjs 在 iframe 中显示 pdf。 pdf 是使用 spring 和 jasper 报告从 API REST 接收的。
【讨论】:
以上是关于Rest API 生成 PDF byte[] JSON 内容类型,使用 angularJS 在 Web 中查看的主要内容,如果未能解决你的问题,请参考以下文章
如何记录生成文件 (pdf) 以在 Swagger 上下载的 API?
JS 框架能够基于(django)rest api 选项生成表单
是否可以使用 Resteasy 发布 byte[] 来调用 rest api?