PDF-Seitenbeschriftungen in der Befehlszeile exportieren

8

Ich möchte die in einigen PDF-Dokumenten gespeicherten Seitentexte zum einfachen Parsen exportieren. Ich weiß, dass ich in das PDF-Dokument graben könnte, nachdem es mit qpdf konvertiert wurde, aber das scheint wie Overkill.

Gibt es kein Kommandozeilenwerkzeug, das einfach die Seitenbeschriftung für jede Seite (oder zusammen mit anderen Metadaten) druckt? Ich weiß, dass PDFSpy das Etikett exportieren wird, aber $ 300 ist keine Option, vorzugsweise sollte die Lösung frei sein.

    
grovel 16.10.2012, 21:56
quelle

1 Antwort

11

Kurze Antwort:
Mir ist kein (kostenloses) Tool bekannt, das die Seitenbezeichnung für jede Seite einfach ausdrucken kann.

Außerdem können Sie die komprimierten Expansionsobjekte und Objektströme nicht umgehen, indem Sie ein Tool wie qpdf oder eines mit äquivalenten Fähigkeiten verwenden.

Lange Antwort:
Es gibt kein solches Tool, da dies die einzigen Dinge sind, auf die Sie sich verlassen können, wenn es um Seitenbeschriftungen geht. Dies sind die folgenden:

  1. Jedes PDF-Dokument muss ein Stammobjekt enthalten.
  2. Dieses Wurzelobjekt muss von /Type /Catalog .
  3. sein
  4. Der Trailer des Dokuments zeigt anhand des Schlüssels /Root , gefolgt von der indirekten Objektnummer, an, wo das Objekt zu finden ist.
  5. IF Wenn ein PDF-Dokument nicht standardmäßige Seitenbeschriftungen verwendet, muss das Dokumentenstammobjekt einen Eintrag mit dem Namen /PageLabels .
  6. haben

Hier hört es auf, relativ einfach zu sein. Weil das Objekt, auf das sich der Schlüssel /PageLabels bezieht, in einem komprimierten Objekt stream enthalten sein kann. Dies bedeutet, dass Sie diesen Objektstrom erweitern müssen.

Wenn Sie wirklich die Beschreibung der Seitenbeschriftungen als ASCII erhalten haben, werden Sie feststellen, dass es sich nicht um eine leicht analysierbare flache Liste handelt (wie dictionary ): Es ist ein Zahlenbaum .

Ich werde nicht auf die Details dieser Komplexitäten eingehen, denn es würde einen sehr langen Artikel erfordern, um alle möglichen Variationen zu beschreiben. Sie lesen es besser direkt in der offiziellen ISO PDF-1.7 Spezifikation .

Aber stattdessen gebe ich Ihnen ein Beispiel im ASCII-PDF-Code:

%Vor%

Im obigen Beispiel wird die Seitenzahl 1, 2, 3, ... (last) wie folgt beschriftet:

%Vor%

Wie Sie sehen können, ist die PDF-Methode zur Beschriftung von Seiten (Zuordnung von Seitennummern zu Seitennamen) nicht intuitiv. Sie können es nur durch das Studium der PDF-Spezifikation verstehen.

    
Kurt Pfeifle 16.10.2012 23:56
quelle