PDF-Erstellungs- & Änderungsdatum in NodeJS auslesen
English
Deutsch
Problem:
Du hast eine PDF-Datei, von der du das Erstellungs- und Änderungsdatum wissen möchtest: Nicht die in der Datei selbst gespeicherten Daten, sondern die aus den PDF-Metadaten.
Lösung
Diese Lösung setzt voraus, dass du NodeJS-Version 8+ verwendest, die async/await unterstützt.
Du kannst pdfjs verwenden, um diese Daten auszulesen. Installiere es zuerst mit
install_pdfjs3.sh
npm install pdfjs-distVerwende dann diesen Code, um die Daten zu extrahieren.
read_pdf_dates.js
const pdfjs = require('pdfjs-dist');
async function readPDFDates() {
const pdf = await pdfjs.getDocument('mypdf.pdf');
const metadata = await pdf.getMetadata();
const modDate = new Date(metadata.metadata._metadata['xmp:modifydate']);
const createDate = new Date(metadata.metadata._metadata['xmp:createdate']);
return [modDate, createDate]
}
readPDFDates().then(([modDate, createDate]) => {
console.log(`Creation date: ${createDate}`)
console.log(`Modification date: ${modDate}`)
}).catch(err => {
console.error(`Error while reading PDF: ${err}`)
})Die PDF-Dateien, die ich gesehen habe, verwenden ISO8601-ähnliche Formatierung, aber ohne Zeitzonenangabe. Der Code geht daher davon aus, dass die Zeiten in der lokalen Zeitzone sind.
Hinweis: metadata ist z.B. das folgende Objekt (nicht alle Attribute sind für alle PDFs vorhanden):
pdf_metadata_example.txt
{ info:
{ PDFFormatVersion: '1.5',
IsAcroFormPresent: false,
IsXFAPresent: false,
Title: 'Microsoft Word - mypdf',
Author: 'uli',
Creator: 'PScript5.dll Version 5.2.2',
Producer: 'Acrobat Distiller 9.3.0 (Windows)',
CreationDate: 'D:20100209100924+01\'00\'',
ModDate: 'D:20100209100924+01\'00\'' },
metadata:
Metadata {
_metadata:
{ 'dc:format': 'application/pdf',
'dc:creator': 'peter',
'dc:title': 'Microsoft Word - mypdf',
'xmp:createdate': '2010-02-09T10:09:24+01:00',
'xmp:creatortool': 'PScript5.dll Version 5.2.2',
'xmp:modifydate': '2010-02-09T10:09:24+01:00',
'pdf:producer': 'Acrobat Distiller 9.3.0 (Windows)',
'xmpmm:documentid': 'uuid:2fd66f45-5f2a-4dd6-8cb0-297ce85ee9e1',
'xmpmm:instanceid': 'uuid:f6e62218-4b40-47c7-837b-6cb1e6e90995' } },Check out similar posts by category:
Javascript, PDF
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow