Linux-Befehlszeilentool zum Zählen nicht leerer Seiten in einer PDF-Datei

Mit pdfinfokann ich die Anzahl der Seiten in einer PDF-Datei leicht zählen, aber dazu gehören auch leere Seiten, zB vor einem Kapitel. Was ist, wenn ich alle nicht leeren Pakete zählen möchte – gibt es dafür ein Tool?

Seiten, die beim Betrachten durch einen Menschen leer zu sein scheinen, sind möglicherweise nicht leer, wenn sie durch eine Maschine betrachtet werden. Viele PDF-Erzeuger versuchen, das Hinzufügen leerer Seiten zu vermeiden: Sie stellen sicher, dass dies nicht versehentlich geschieht. Wenn es notwendig ist, eine leere Seite hinzuzufügen, fügen sie normalerweise etwas zu der leeren Seite hinzu (könnte alles sein; es gibt keine Standardmethode dafür). Das macht es für Software sehr schwierig, leere Seiten zu erkennen. Sie müssten jede Seite rendern und dann prüfen, ob keine sichtbaren Elemente vorhanden sind. Das kostet viel CPU.

Antworten (1)

Wenn Sie mit "leere Seite" meinen: Beim Drucken würde es keine Toner-/Tintenflecken auf der Seite hinterlassen, könnten Sie das neue inkcovGerät von Ghostscript verwenden, das die Tintendeckung für jede Seite meldet. (Es kann etwas langsam sein, die endgültigen Ergebnisse zu melden; das liegt daran, dass jede Seite virtuell gerendert werden muss, um die Farbdeckung zu berechnen) :

Beispielbefehl:

$> gs -o -  -sDEVICE=inkcov sample2.pdf

Processing pages 1 through 8.
Page 1
 0.00000  0.00000  0.00000  0.02231 CMYK OK
Page 2
 0.02363  0.02363  0.02363  0.02363 CMYK OK
Page 3
 0.02527  0.02527  0.02527  0.00000 CMYK OK
Page 4
 0.03322  0.03322  0.03322  0.03322 CMYK OK
Page 5
 0.00000  0.00000  0.00000  0.03413 CMYK OK
Page 6
 0.00000  0.00000  0.00000  0.01984 CMYK OK
Page 7
 0.13274  0.13274  0.13274  0.03355 CMYK OK
Page 8
 0.00000  0.00000  0.00000  0.00000 CMYK OK

Die Werte sind ganze Zahlen im Bereich von 0..1, wobei ein Wert von 1 eine 100-prozentige Farbdeckung darstellt (für alle Pixel auf der Seite). Das obige Ergebnis bedeutet also:

Seite 8 verwendet beim Rendern keine Tinte und ist daher "leer".

Dies bedeutet nicht, dass diese Seite wirklich leer ist, wenn sie in einem PDF-Viewer betrachtet wird. Um nur zwei Beispiele aufzuzählen:

  1. Es könnte weißer Text auf weißem Hintergrund verwendet werden, und dieser Text könnte hervorgehoben und kopiert und eingefügt werden, wenn das PDF auf dem Bildschirm angezeigt wird. Ein Ausdruck würde jedoch nichts anzeigen.
  2. Die Seite könnte „Ebenen“ (oder „Optionale Inhaltsgruppen“ , /OCGElemente) enthalten, wobei eine Ebene so eingestellt ist, dass sie auf dem Bildschirm angezeigt wird, aber eine andere (leere) Ebene so eingestellt ist, dass sie beim Drucken verwendet wird.