我正在尝试通过 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(
...