Extraire la première page de plusieurs fichiers PDF

17

Vous avez environ 500 PDF à parcourir et à extraire la première page de. Ils doivent ensuite passer par un processus de conversion qui prend beaucoup de temps, alors j'espérais essayer de gagner du temps en ayant un processus par lots pour extraire uniquement la première page des 500 fichiers PDF et la placer dans un nouveau pdf. J'ai fouillé Acrobat mais je ne trouve aucune méthode réelle pour le faire pour plusieurs fichiers. Est-ce que quelqu'un connaît d'autres programmes ou méthodes qui pourraient être atteints? Les logiciels libres et open source sont évidemment plus favorables :)

EDIT: J'ai en fait réussi à utiliser GhostScript pour extraire une seule page. Je regarde maintenant comment regrouper cela et prendre la liste des fichiers et les utiliser.

Tim Alexander
la source
Quelles sont les autres étapes du processus de conversion?
Ignacio Vazquez-Abrams
À propos de votre modification, consultez ma modification.
frabjous

Réponses:

29

Utilisation de pdftk ...

Sur mac et linux depuis la ligne de commande.

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

Sous Windows, vous pouvez créer un fichier de commandes. Ouvrez le Bloc-notes, collez-le à l'intérieur:

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

Vous devrez peut-être remplacer "pdftk.exe" par le chemin d'accès complet à pdftk, par exemple, "C:\Program Files\pdftk\pdftk.exeou quoi que ce soit. (Je n'utilise pas Windows donc je ne sais pas.)

Enregistrez-le avec une extension se terminant par .bat, déposez-le dans le dossier contenant les fichiers PDF et double-cliquez.

Vous pouvez faire la même chose avec Ghostscript, oui.

Voyons voir. Pour Mac et Linux (tous une ligne):

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

Je ne sais pas exactement quelle serait la commande correspondante pour un fichier de commandes Windows. Ma meilleure supposition (--Je n'ai pas de fenêtres donc je ne peux pas tester--):

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"

Vérifiez que le chemin d'accès à votre exécutable de script fantôme est correct, et bien, je n'ai pas testé cela depuis que je n'utilise pas Windows.


EDIT: OK, je viens de réaliser que vous ne voulez probablement pas 500 PDF d'une page, mais un seul PDF qui les combine tous. Exécutez simplement ce qui précède, et cela vous laissera 500 fichiers PDF d'une page. Pour les combiner à l'aide de pdftk ... sur mac et linux:

pdftk *-page1.pdf cat output combined.pdf

Je pense que c'est probablement la même chose sous Windows, sauf peut-être avoir besoin du chemin complet vers pdftk, comme ci-dessus. Vous pouvez simplement ajouter cette ligne après la ligne ci-dessus dans votre fichier de commandes.

Avec Ghostscript ... sur mac et linux:

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

Et c'est probablement la même chose sous Windows, sauf en remplaçant "gs" au début par le chemin complet vers gswin32c.exe, comme ci-dessus.

Il peut y avoir un moyen de ghostscript pour faire les deux en une seule étape, mais je suis trop paresseux pour le comprendre en ce moment.

Si l'ordre dans lequel les combiner est important, nous aurons besoin de plus d'informations.

frabjous
la source
c'est la commande que je cherchais. ont passé l'après-midi à lire sur les boucles if dans Linux! Votre commande initiale est la bonne, c'est-à-dire que j'ai besoin de 500 fichiers PDF d'une seule page. Avait réussi à rassembler toutes les premières pages dans un seul fichier PDF, mais la conversion en Excel le rend alors ingérable. Mes utilisateurs ont des exigences de demande et de mise en page très spécifiques, ce qui est exaspérant mais difficile. Merci pour ton aide!!
Tim Alexander
2

Je devais juste le faire aujourd'hui sous Linux. Cela devrait également fonctionner pour Mac. Exécutez la commande suivante depuis votre terminal.

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

lpr soumet des travaux à l'imprimante.

Notez l'utilisation des caractères * dans la commande. Cela exécuterait la commande pour tous vos fichiers PDF dans le répertoire.

vivek_ganesan
la source
Comme vous le faites remarquer, cela soumet les travaux à l'imprimante. Ce n'est pas ce que demande OP.
Nick K9
1

Je pense que vous pourriez utiliser une imprimante virtuelle pdf, comme pdf-forge.

Vous "imprimez" simplement la première page, je sur un Mac maintenant et je ne peux pas l'essayer mais je suis sûr que vous pouvez le faire plus d'une à la fois.

Bonne chance!!

Trufa

Trufa
la source
merci pour les pointeurs sur ceux-ci. cela m'a amené à GhostScript qui semble pouvoir faire ce que je veux. Merci
Tim Alexander
@Tim Alexander, pas de problème du tout !!
Trufa
0

comme pour la commande de fichier batch Windows (.bat) (%% est pour les variables dans un fichier bat)

extraction de la première page du pdf au format jpg avec une résolution / taille réduite

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"

(dans le post ci-dessus, sOutputFile a été mal écrit .. et avec le chemin actuel de l'installation standard de gs x86)

(regardez également Utiliser Ghostscript pour convertir un PDF de plusieurs pages en un seul JPG? )

Ebricca
la source
0

Sous Linux

J'ai écrit cette ligne de commande

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

Mais il fait l'affaire, je l'ai testé, il fonctionne également avec autant de niveaux de dossiers que vous avez. Assurez-vous simplement de l'exécuter à la racine de la structure des dossiers. Chaque dossier aura pour chaque fichier pdf un pdf supplémentaire se terminant par.firstpage.pdf

Vous avez besoin pdftket treepour cela et sur Ubuntu Linux, vous pouvez l'installer avec apt:

sudo apt install pdftk tree
Eduard Florinescu
la source