Come estrarre e / o rimuovere l'ultima pagina di un gruppo di PDF?


14

Uno dei nostri fornitori ha iniziato a puntare su un'immagine inutilmente enorme all'ultima pagina di PDF che otteniamo da loro. Devo tagliare questo. Tuttavia, ne abbiamo centinaia, quindi è proibitivo entrare manualmente. Quali sono i modi migliori per estrarre e quindi eliminare (preferibilmente prima uno, poi l'altro; devo ancora confermare tramite dimensione file che non sto eliminando uno che non ha l'immagine) l'ultima pagina di un PDF automaticamente? Il sistema operativo è Linux.

Posso estrarlo usando ghostscript, con qualcosa sulla falsariga di gs -dFirstPage=5 -dLastPage=5, ma ho bisogno di automatizzare questo, non posso passare attraverso e scoprire manualmente qual è il numero dell'ultima pagina.

Qualche idea?

Modifica: per chiarire, voglio semplicemente dividere / eliminare l'ultima pagina. Non l'immagine in esso, accisa il periodo dell'ultima pagina.


1
Guarda, pdftksono sicuro che può essere fatto funzionare in generale per questo tipo di attività.
Daniel Andersson,


2
Non da remoto un duplicato di quello.
Andrew,

Sento che dovrei chiarire però: non sono interessato a rimuovere un'immagine nell'ultima pagina. Sono interessato a rimuovere l'ultima pagina, punto.
Andrew,

1
Domanda correlata con più risposte diverse su Ask Ubuntu: askubuntu.com/questions/221962/…
TuringTux,

Risposte:


2

Come già commentato da @Daniel Andersson, questo può essere fatto facilmente con pdftk:

pdftk input.pdf cat end-1 output temp.pdf
pdftk temp.pdf  cat end-2 output output.pdf
rm temp.pdf

Non so se si possa fare con una chiamata a pdftk però ...

Modifica : puoi combinarlo con la risposta di thanosk e usare (in bash):

pdftk input.pdf cat 1-$((last-1)) output output.pdf

quando hai già estratto l'ultima pagina nella variabile $last.


L'esempio non funziona. Ho trovato la risposta di @Sid Steward per lavorare meglio.
Reado,

14

Per migliorare ulteriormente la risposta di @ eldering, la versione 1.45 di pdftk e successive ha i mezzi per fare riferimento alle pagine in ordine inverso anteponendo la lettera minuscola r al numero di pagina. La pagina finale in un PDF è r1, la penultima pagina è r2, ecc.

Ad esempio, la singola chiamata pdftk:

pdftk input.pdf cat 1-r2 output output.pdf

eliminerà la pagina finale da input.pdf - l'input dovrebbe essere lungo almeno due pagine.

Per estrarre solo la pagina finale di un PDF per testarne le dimensioni, eseguire:

pdftk input.pdf cat r1 output final_page.pdf

Pdftk è disponibile su Linux. Molte distro hanno un file binario che puoi installare. Tuttavia, dovresti assicurarti che sia la versione 1.45 o successive. Altrimenti, puoi creare pdftk dal codice sorgente.


la cosa rN è esattamente ciò di cui avevo bisogno, perché il mio sistema di generazione di pdf basato su lattice produceva sempre delle pagine vuote all'inizio e quasi alla fine del documento, alla fine ho dovuto rimuoverle manualmente. Ora chiamo solo: pdftk A = pocket20.pdf cat A3-r6 r3-end output pocket_to_print.pdf che rimuove le prime due e la quarta, la quinta, ultima pagina.
Martin T.

1

pdfinfo ti fornirà le dimensioni del file pdf effettivo e pdfimages ti fornirà un indice delle immagini nel file pdf indicato. Quindi puoi scrivere una sceneggiatura nel modulo

#!/bin/bash
for i in *.pdf
do
        j=$(pdfinfo "$i" |awk '/^Pages/ { print $2}')
        pdfimages -list -p -f "$j" "$i"
done

che dovrebbe restituire se un determinato file ha un'immagine nell'ultima pagina. In tal caso, puoi fare qualsiasi manipolazione tu debba fare.


0

Ecco una soluzione che utilizza pdfjam invece di pdftk:

#!/bin/sh
fname=`basename $1`
pdfjam $1 1-$((`pdfinfo $1 | grep Pages | grep -shoPe '\d+'` - ${2:-1})) -o ${fname%.*}-trimmed.pdf

Dove il primo argomento è il file da tagliare e il secondo argomento la quantità di pagine da tagliare (il valore predefinito è 1).


0

Una soluzione di una fodera sarebbe usare findinsieme pdftk:

find . -name "*.pdf" -exec pdftk {} cat 1-r2 output cut/{} \;

NOTA : i file ritagliati sono memorizzati in questo esempio in una sottodirectory chiamata cutper mantenere il nome file originale in quanto pdftknon consente la sovrascrittura dei file di input.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.