如何在AngularJS中处理来自Web API的PDF文件?
我有这个Web API post方法来生成PDF:
[HttpPost] [Route("api/pdf")] public HttpResponseMessage Post(CustomType type) { StreamContent pdfContent = PdfGenerator.GeneratePdf(); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = pdfContent; response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = "PDFName.pdf" return response; } 在AngularJS中我想得到这样的PDF文件: $http.post("api/pdf",object).then(function (results) { var data = results.data; //TODO: got PDF,how to handle? },function (results) { console.log(results); }); 但是我应该如何处理AngularJS中的PDF数据?在iPad上,我希望PDF能够打开,但如果文件被下载或只是在桌面上打开并不重要. EDIT1: 使用SaveAS JS library我可以在桌面上制作出可行的解决方案: $http.post("api/pdf",object).then(function (results) { var data = results.data; var file = new Blob([data],{ type: 'application/pdf' }); saveAs(file,"test.pdf"); },function (results) { console.log(results); }); 该文件正在直接下载到我的桌??面,但出于某种原因,此解决方案在iOS中无法正常工作.什么都没发生.见JSFiddle. 有没有其他方法可以在我的iPad上显示PDF而无需将文件嵌入我的网站?
您可能很清楚,ios设备不允许您将文件下载并存储到内存/磁盘,就像在台式机/笔记本电脑上一样.
下载的项目必须由应用程序打开 由于您已经在网站上工作,浏览器似乎是一个自然的候选人. 我猜测你不希望将pdf文件嵌入你的网站,另一种方法是在新的浏览器选项卡中打开pdf. 如果您可以接受这样的解决方案,请查看此SO帖子: window.open() in an iPad 提供的解决方案确实有效,但只有在配置Safari时才能阻止弹出窗口. 我担心这可能是你唯一可行的选择. Having the iPad store the pdf into apps like iBooks will not work,根据这篇文章.它不能用javaScript自动化. 据我所知,在这种情况下没有完美的解决方案,只是一个最可接受的解决方案:如果检测到ios,则在浏览器的新选项卡中打开pdf. 如果您对此妥协感兴趣,并遇到使用window.open()实现它的问题,我将很乐意提供帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |