PDFJS: Alle Seiten mit async/await in NodeJS lesen

English Deutsch

PDFJS hat ein offizielles Beispiel, das — unter anderem — alle Seiten eines PDF-Dokuments liest. Jedoch ist ihre Promise-basierte Methode recht komplex zu verstehen und zu schreiben. Glücklicherweise gibt es einen einfacheren Weg mit async/await (welches ab NodeJS 8.x unterstützt wird).

Ich verwende die bereich-Bibliothek (bereich ist deutsch für Bereich), um ein Array von Seitenzahlen (1..numPages) zu generieren. Installiere die erforderlichen Bibliotheken mit

install_pdfjs.sh
npm install pdfjs-dist bereich

Hier ist das Quellcode-Beispiel:

read_pdf_pages.js
const pdfjs = require('pdfjs-dist');
const bereich = require('bereich');

async function readPDFPages() {
  const pdf = await pdfjs.getDocument('mypdf.pdf');
  const numPages = pdf.numPages;

  const pageNumbers = Array.from(bereich(1, numPages));
  // Alle Seiten 1...numPages lesen
  const promises = pageNumbers.map(pageNo => pdf.getPage(pageNo));
  // Warten, bis alle Seiten gelesen wurden
  const pages = await Promise.all(promises);
  // Hier kannst du etwas mit den Seiten tun.
  return pages;
}

readPDFPages().then(pages => {
    console.log(pages)
}).catch(err => {
    console.error(`Error while reading PDF: ${err}`)
})

Check out similar posts by category: Javascript, PDF