ファイル入力があり、「アップロード」する前に、JAVASCRIPTでその.pdfのページ数を計算する必要があります(例:JQuery ...)
Pdf.jsを使用する場合は、PDFファイルのページ数を出力する次のコードで githubの例 ( '.../examples/node/getinfo.js')を参照できます。
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);
}
と純粋な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 );
}
他の回答で述べられているように、pdf.jsのようなものがあなたが探しているものです。 APIを確認しましたが、合計ページ数を返すnumPages()関数が含まれています。また、Mozillaから デモページを表示すると、ページ数がカウントされるようです。
ソリューションに最新のブラウザと実験的なテクノロジーを使用できるかどうかによって異なります。 pdf.jsは非常に印象的ですが、 githubページ によるとまだ実験的です。
アップロード後にサーバー上のページを数えることができる場合は、 pdftools などを確認する必要があります。
何かのようなもの pdftools --countpages
はあなたが探しているものです
pdf-lib
を使用することもできます。
入力フィールドからファイルを読み取り、pdf-lib
を使用してページ数を取得する必要があります。コードは次のようになります。
import { PDFDocument } from 'pdf-lib';
...
const readFile = (file) => {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
reader.readAsArrayBuffer(file);
});
}
const async getNumPages = (file) => {
const arrayBuffer = await readFile(file);
const pdf = await PDFDocument.load(arrayBuffer);
return pdf.getPages();
}
そして、添付ファイルのページ数を次のように取得します。
const numPages = await getNumPages(input.files[0]);
input
であるファイル入力のDOM要素への参照を格納する変数。