Blob pdf 呈现给出错误 无效的 XRef 流标头



我正在尝试通过 Angular Blob 在我的 Web 应用程序上显示来自我的服务器的 pdf 文件,但我在那里收到一些错误。我已经坚持了太久,并尝试了其他不起作用的事情。请指教。我的 Spring 控制器返回字节[]:

    @RequestMapping(value = "/showpdf", method = RequestMethod.POST, produces="application/octet-stream")
        @ResponseBody
        public byte[] showPDFFile(@RequestBody FilePath filePath, final HttpServletResponse response) throws IOException {
                  return org.apache.commons.io.FileUtils.readFileToByteArray(file);             
    }

我的角度代码:

$http.post('/showpdf',{responseType: 'arrayBuffer'}).success(
                            function(response) {
                                console.log(response);
                                var file = new Blob([response], {type: 'application/pdf'});
                                   var fileURL = URL.createObjectURL(file);
                                   $scope.content = $sce.trustAsResourceUrl(fileURL);
                            });

我的网页:

<div>
    <object data="{{content}}" type="application/pdf" style="width: 100%; height: 1000px;"></object>
</div>

pdf窗口即将到来,但它不显示任何数据并继续在工具栏中加载(见附件),浏览器工具中出现以下错误。

Error: Invalid XRef stream header
pdf.worker.js (line 250)
<System>
XRef_readXRef@resource://pdf.js/build/pdf.worker.js:3693:13
XRef_parse@resource://pdf.js/build/pdf.worker.js:3289:23
PDFDocument_setup@resource://pdf.js/build/pdf.worker.js:2484:7
PDFDocument_parse@resource://pdf.js/build/pdf.worker.js:2371:7
LocalPdfManager_ensure/<@resource://pdf.js/build/pdf.worker.js:1934:20
LocalPdfManager_ensure@resource://pdf.js/build/pdf.worker.js:1929:1
BasePdfManager_ensureDoc@resource://pdf.js/build/pdf.worker.js:1861:14
loadDocument/</<@resource://pdf.js/build/pdf.worker.js:33208:11
pdf.worker.js (line 252)
<System>
Warning: Unsupported feature "unknown"
pdf.worker.js (line 235)
<System>
Warning: Unsupported feature "unknown"
Warning: Indexing all PDF objects
pdf.worker.js (line 235)
<System>
PDF 0d3cdf6286f2947410f0d270a249f816 [1.4 iText 2.1.3 (by lowagie.com)      kSar Version:5.0.6] (PDF.js: 1.0.1149)
 Error: Bad uncompressed block length in flate stream
pdf.worker.js (line 250)
<System>
FlateStream_readBlock@resource://pdf.js/build/pdf.worker.js:31244:9
DecodeStream_getByte@resource://pdf.js/build/pdf.worker.js:30882:9
Lexer_nextChar@resource://pdf.js/build/pdf.worker.js:30125:34
Lexer@resource://pdf.js/build/pdf.worker.js:30067:5
EvaluatorPreprocessor@resource://pdf.js/build/pdf.worker.js:12105:30
PartialEvaluator_getOperatorList@resource://pdf.js/build     /pdf.worker.js:10616:26
Page_getOperatorList/pageListPromise<@resource://pdf.js/build/pdf.worker.js:2216:16
pdf.worker.js (line 252)
<System>
Warning: Unsupported feature "unknown"
pdf.worker.js (line 235)

我尝试硬编码此pdf,它呈现良好。

使用"arraybuffer"而不是"arrayBuffer"作为responseType参数应该可以解决问题:

$http.post('showpdf',{responseType: 'arraybuffer'}).success(
...

最新更新