如何获取用户上传的.PDF页数?

spa*_*kle 10 javascript pdf jquery adobe jquery-plugins

我有一个文件输入,在"上传"之前,我需要在JAVASCRIPT中计算该.pdf的页数(例如JQuery ......)

Sid*_*kur 32

如果您使用pdf.js,您可以在github('.../examples/node/getinfo.js')引用一个示例,其中包含以下代码,用于打印pdf文件中的页数.

const pdfjsLib = require('pdfjs-dist');
...
pdfjsLib.getDocument(pdfPath).then(function (doc) {
    var numPages = doc.numPages;
    console.log('# Document Loaded');
    console.log('Number of Pages: ' + numPages);
}
Run Code Online (Sandbox Code Playgroud)


Saj*_*azy 6

和纯JavaScript解决方案:

var input = document.getElementById("files");
var reader = new FileReader();
reader.readAsBinaryString(input.files[0]);
reader.onloadend = function(){
    var count = reader.result.match(/\/Type[\s]*\/Page[^s]/g).length;
    console.log('Number of Pages:',count );
}
Run Code Online (Sandbox Code Playgroud)

  • 该正则表达式适用于满足许多假设的文档,特别是对于具有多个修订或频繁使用对象流的文档可能会失败。 (4认同)
  • 我可以创建任意数量的示例:您肯定知道,字节级别的 PDF 格式允许添加注释;因此,我可以简单地将包含“/Type /Page”的任意数量的注释添加到现有文档中,从而使正则表达式返回过高的结果。但你可能不是指构建的例子,而是现实世界的例子。为此,您可能想查看 [this one](http://stackoverflow.com/q/30236358/1729265) 等问题。 (3认同)
  • 我收到此消息 - 类型“string | ”上不存在属性“match” 数组缓冲区'。类型“ArrayBuffer”上不存在属性“match”。ts(2339) (2认同)