PDF-Seitengrößen mit PDFJS & NodeJS extrahieren

English Deutsch

Obwohl die meisten PDFs Seiten mit nur einer Seitengröße haben (z.B. DIN A4 oder Letter im Hochformat), haben PDFs manchmal auch Seiten mit einer anderen Größe oder Ausrichtung (die genauso wie eine andere Größe behandelt wird) als andere Seiten im selben Dokument.

Dieser Beitrag bietet ein leicht wiederverwendbares Beispiel, wie man PDFJS in NodeJS verwendet (obwohl es im Browser genauso einfach ist), um das PDF zu extrahieren

Es basiert auf diesem vorherigen Beitrag zum Lesen aller Seiten eines PDF-Dokuments mit PDFJS, also schau dir das zuerst an.

Installiere zuerst die erforderlichen Abhängigkeiten:

install_pdfjs2.sh
npm install bereich pdfjs-dist

dann kannst du diesen Quellcode verwenden, um die Seitengrößen von mypdf.pdf zu lesen:

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

class PageSize {
  constructor(width, height) {
    this.width = width;
    this.height = height
  }
}

function getPageSize (page) {
    const [x, y, w, h] = page.pageInfo.view;
    const width = w - x;
    const height = h - y;
    const rotate = page.pageInfo.rotate;
    // Rotation berücksichtigen
    return (rotate === 90 || rotate === 270)
        ? new PageSize(height, width) : new PageSize(width, height);
}

async function readPDFPageSizes() {
  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.map(getPageSize);
}

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

Das Ausführen mit einem Dokument, das eine einzelne A4-Seite hat, ergibt

page_sizes_output.txt
[ PageSize { width: 595, height: 842 } ]

Beachte, dass die Einheit für Breite & Höhe pt (Punkte) ist. Ein pt ist definiert als 1/72 Zoll. Eine DIN-A4-Seite (Hochformat) ist 595x842pt, daher siehst du hier diese Werte. Siehe diesen TechOverflow-Beitrag für Code zum Umrechnen von pt in mm und Zoll.


Check out similar posts by category: Javascript, PDF