错误:PDFDocument:流必须有数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:PDFDocument:流必须有数据相关的知识,希望对你有一定的参考价值。
我正在使用pdf.js来解析pdf文件。首先,我上传文件,然后尝试解析该文件。我正在将url传递给parse函数,以便在PDFJS.getDocument(url)中读取它
如果我不使用上传部分并对其工作的pdf文件的URL进行硬编码。
代码:
var parse = function(payload,callback){
var data = payload;
if(data.file){
var name = data.file.hapi.filename;
var ext = name.split('.');
var extension = ext[1];
if(extension == "pdf"){
var path = __dirname + "/uploads/" + name;
checkFileExist();
var file = fs.createWriteStream(path);
file.on('error', function (err) {
console.error(err)
});
data.file.pipe(file);
var fileName = data.file.hapi.filename;
console.log(fileName);
var fileAbsolutepath = __dirname + "/uploads/" + fileName ;
console.log(fileAbsolutepath);
var parser = script.pdfParser(fileAbsolutepath,function(err,resp){
if(err){
callback(err);
}
else {
callback(resp);
}
})
callback(JSON.stringify(fileName));
}
else{
console.log("Invalid fileType");
callback(JSON.stringify("Invalid FileType"));
}
}
}
var checkFileExist = function() {
var path = __dirname + '/uploads';
fs.exists(path, function(exists) {
if (exists === false) fs.mkdirSync(path);
});
};
exports.pdfParser = function(url,callback){
PDFJS.workerSrc = 'pdf.worker.js';
PDFJS.getDocument(url).then(function (pdf) {
var pdfDocument = pdf;
}}
文件上传正确,上传文件夹中的预期文件大小仍然出现错误:“错误:PDFDocument:流必须有数据”
要使用pdf.js解析文件,而不是使用PDFJS.getDocument加载文件,请尝试将pdf文件转换为arrayBuffer或Uint8Array,并使用它来创建新的LocalPdfManager对象。然后你可以直接调用LocalPdfManager的方法来解析pdf。
像这样的东西:
import { LocalPdfManager } from 'pdfjs-dist/lib/core/pdf_manager';
pdfManager = new LocalPdfManager(1, arrayBuffer, '', {}, '');
// parameters = (docId, data, password, evaluatorOptions, docBaseUrl)
pdfManager.ensureDoc('parseStartXRef', []); // [] = arguments
pdfManager.ensureDoc('parse', false); // false = recoveryMode
pdfManager.ensureDoc('numPages');
pdfManager.ensureDoc('fingerprint');
然后查看pdfManager.pdfDocument
获取解析的pdf数据。
例如,主“/ Catalog”条目将在pdfManager.pdfDocument.catalog.catDict
中。
我已经使用此方法在浏览器中本地成功解析和修改pdf文件。我没有在node.js的服务器上试过它,但我希望它应该工作相同。
以上是关于错误:PDFDocument:流必须有数据的主要内容,如果未能解决你的问题,请参考以下文章
对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段
如何在 Android 上使用 PdfDocument 设置 PDF 文件大小
使用 AWS KMS 返回的数字签名签署 PdfDocument
如何将 List<PdfDocument> 合并为单个 PdfDocument
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段