Extrahieren Sie die erste Seite aus mehreren PDFs


17

Sie müssen ungefähr 500 PDFs durchgehen und die erste Seite von extrahieren. Sie mussten dann einige zeitaufwendige Konvertierungsprozesse durchlaufen und hofften, durch einen Batch-Prozess etwas Zeit zu sparen, um nur die erste Seite aus den 500 PDFs zu extrahieren und sie in ein neues PDF zu platzieren. Ich habe mich in Acrobat umgesehen, kann aber keine richtige Methode finden, um dies für mehrere Dateien zu tun. Kennt jemand andere Programme oder Methoden, mit denen dies erreicht werden könnte? Free und Open Source sind natürlich günstiger :)

BEARBEITEN: GhostScript wurde zum Extrahieren von nur einer Seite bereits erfolgreich eingesetzt. Ich schaue jetzt nach, wie man das stapelt, und nehme die Liste der Dateien und verwende diese.


Was beinhalten die anderen Schritte des Konvertierungsprozesses?
Ignacio Vazquez-Abrams

Informationen zu Ihrer Bearbeitung finden Sie unter Meine Bearbeitung.
Frabjous

Antworten:


29

Mit pdftk ...

Auf Mac und Linux über die Befehlszeile.

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

Unter Windows können Sie eine Batchdatei erstellen. Öffne Notepad, füge das hier ein:

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

Möglicherweise müssen Sie "pdftk.exe" durch den vollständigen Pfad zu pdftk ersetzen, z. B. "C:\Program Files\pdftk\pdftk.exeoder wie auch immer. (Ich benutze kein Windows, also weiß ich es nicht.)

Speichern Sie es mit einer Erweiterung mit der Endung .bat, legen Sie es im Ordner mit den PDF-Dateien ab und doppelklicken Sie darauf.

Sie können dasselbe mit Ghostscript tun, ja.

Mal sehen. Für Mac und Linux (alle eine Zeile):

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

Ich bin nicht genau sicher, was der entsprechende Befehl für eine Windows-Batchdatei wäre. Meine beste Vermutung (--Ich habe keine Fenster, daher kann ich nicht testen--):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

Überprüfen Sie noch einmal, ob der Pfad zu Ihrer Ghost-Skript-Programmdatei korrekt ist. Nun, ich habe dies nicht getestet, da ich kein Windows verwende.


EDIT: OK, ich habe gerade festgestellt, dass Sie wahrscheinlich keine 500 1-Seiten-PDFs wollen, sondern ein einziges PDF, das alle kombiniert. Führen Sie einfach die obigen Schritte aus, und Sie erhalten 500 PDFs mit einer Seite. So kombinieren Sie sie mit pdftk ... auf Mac und Linux:

pdftk *-page1.pdf cat output combined.pdf

Ich denke, es ist wahrscheinlich das gleiche unter Windows, außer vielleicht den vollständigen Pfad zu pdftk, wie oben. Sie können diese Zeile einfach nach der obigen Zeile in Ihre Batch-Datei einfügen.

Mit Ghostscript ... auf Mac und Linux:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

Und es ist wahrscheinlich dasselbe unter Windows, außer dass "gs" am Anfang durch den vollständigen Pfad zu gswin32c.exe ersetzt wird, wie oben.

Es mag eine Art von Ghostscript geben, um beides in einem Schritt zu erledigen, aber ich bin zu faul, um es jetzt herauszufinden.

Wenn die Reihenfolge, in der sie kombiniert werden sollen, wichtig ist, benötigen wir weitere Informationen.


Das ist der Befehl, den ich gesucht habe. habe den nachmittag damit verbracht zu lesen, ob schleifen unter linux funktionieren! Ihr anfänglicher Befehl ist der richtige, dh ich benötige 500 einseitige PDFs. Hatte es geschafft, alle ersten Seiten in ein einziges PDF zu bekommen, aber die Konvertierung in Excel macht es dann unüberschaubar. Meine Benutzer haben einige sehr spezifische Anforderungen an Anforderungen und Layouts, die ärgerlich, aber herausfordernd sind. Danke für deine Hilfe!!
Tim Alexander

2

Musste es heute einfach unter Linux machen. Es sollte auch für Mac funktionieren. Führen Sie den folgenden Befehl von Ihrem Terminal aus.

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lpr übergibt Aufträge an den Drucker.

Beachten Sie die * -Zeichenverwendung im Befehl. Dies würde den Befehl für alle Ihre PDF-Dateien im Verzeichnis ausführen.


Auf diese Weise werden Aufträge an den Drucker gesendet. Darum bittet OP nicht.
Nick K9

1

Ich denke, Sie könnten einen virtuellen PDF-Drucker wie pdf-forge verwenden.

Sie "drucken" nur die erste Seite, ich habe jetzt einen Mac und kann es nicht ausprobieren, aber ich bin mir ziemlich sicher, dass Sie es mehr als eine nach der anderen tun können.

Viel Glück!!

Trufa


danke für die hinweise darauf. Diese haben mich zu GhostScript geführt, das anscheinend in der Lage sein könnte, das zu tun, was ich will. Vielen Dank
Tim Alexander

@ Tim Alexander, überhaupt kein Problem !!
Trufa

0

wie für den Windows-Batchdateibefehl (.bat) (%% steht für Variablen in einer Bat-Datei)

erste Seite Extraktion von PDF als JPG mit reduzierter Auflösung / Größe

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(im post oben wurde sOutputFile falsch geschrieben .. und mit dem aktuellen pfad der standard gs x86 install)

( Siehe auch Verwenden von Ghostscript zum Konvertieren von mehrseitigen PDF-Dateien in einzelne JPG-Dateien? )


0

Unter Linux

Ich habe diese Befehlszeile geschrieben

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

Aber es macht den Job, ich habe es getestet, es funktioniert auch mit so vielen Ordnerebenen, wie Sie haben. Stellen Sie einfach sicher, dass Sie es als Stammverzeichnis der Ordnerstruktur ausführen. Jeder Ordner enthält für jede PDF-Datei ein zusätzliches PDF mit der Endung.firstpage.pdf

Du brauchst pdftkund treedafür und unter Ubuntu Linux kannst du es mit apt installieren:

sudo apt install pdftk tree

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.