Strumento da riga di comando per ritagliare file PDF


101

Sto cercando uno strumento da riga di comando open source per ritagliare file PDF proprio come possiamo fare in Adobe Acrobat Pro. Ho provato PdfTk, ImageMagick, PyPDF e GhostScript, tutti finora senza successo.


Puoi descrivere quale tipo di ritaglio puoi fare con Adobe Acrobat pro? Perché non ce l'ho e quindi non posso dire cosa stai cercando.
xubuntix,

In Adobe Acrobat Pro possiamo usare i controlli dei margini per ritagliare il PDF. siamo in grado di fornire il valore per la parte superiore, inferiore, destra e sinistra da ritagliare
Rakesh

Risposte:


124

Suggerirei di dare un'occhiata a PDFcrop .

Se desideri ritagliare un pdf con margini sinistro, superiore, destro e inferiore di 5, 10, 20 e 30 pt (punti), quindi esegui

pdfcrop --margins '5 10 20 30' input.pdf output.pdf

nel terminale. Per ritagliare effettivamente qualcosa, usa valori negativi nell'argomento per ritagliare. Per esempio,

pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf

ritaglia 50 punti da sinistra, in alto, a destra, in basso (in questo ordine).

Se si esegue solo il comando pdfcrop input, verrà generato un file denominato input-crop.pdf con margini zero. Lo trovo molto utile quando si includono illustrazioni in pdf nei documenti.

Ritaglio di più file

Sfortunatamente, pdfcrop non può ritagliare più file contemporaneamente. È comunque facile scrivere uno script che ritaglierà tutti i pdf nella cartella in cui si trova lo script.

Crea un nuovo file vuoto e chiamalo something.sh. Aprilo con un editor di testo e inserisci quanto segue:

#!/bin/bash
for FILE in ./*.pdf; do
  pdfcrop "${FILE}"
done

Salvalo e chiudi. Quindi fare clic con il pulsante destro del mouse sul file, selezionare Proprietà> Autorizzazioni e selezionare il campo Consenti esecuzione file come programma . Ora chiudi la finestra di dialogo. Esegui lo script facendo doppio clic su di esso e selezionando Esegui nel terminale . E la nuova versione ritagliata a margine zero di tutti i pdf con suffisso -crop verrà ora stampata nella cartella. Se vuoi margini o altre cose, puoi ovviamente solo aprire lo script e aggiungere argomenti dopo pdfcrop.


Si noti che invece di specificare margini negativi, si può anche usare --bbox "<left> <bottom> <right> <top>". Ciò consente di utilizzare l'approccio per determinare l'area del raccolto descritta nella mia risposta di seguito .
bluenote10

Esiste la possibilità di dire il numero di pagina (che deve essere ritagliato)?
LK

Temo che sia tutto o niente. pdfcrop --helpelenca le opzioni disponibili. Non riesco a vedere nulla che consenta di specificare un intervallo di pagine.
Rasmus

7
Confrontando la dimensione dell'output di PDFCrop con il suo input, sembra che pdfcrop modifichi solo i riquadri di delimitazione. Non rimuove i dati. Pertanto, questo approccio non sarebbe idoneo a ridurre le dimensioni del pdf o nascondere le informazioni.
init_js,

A meraviglia! anche con i margini necessari per il pdf!
jojo,

36

Grazie per Rasmus, puoi installare pdfcrop dal pacchetto texlive-extra-utils:

sudo apt-get install texlive-extra-utils

Quindi ritaglia i file pdf usando il comando ritaglia pdf come:

pdfcrop input.pdf output.pdf

utilizzare --helpper vedere i parametri più incredibili come--margins

pdfcrop --margins 5 input.pdf output.pdf

quale ritaglia il pdf con 5 bp da ciascun lato della pagina


1
La misurazione è bpleggermente diversa da pt. Vedi tex.stackexchange.com/questions/8260/… .
koppor,

2
Per me pdfcrop ha gonfiato le dimensioni del file da 300x (da 7 MB a 2 GB). Ho dovuto fare in gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdfseguito, che ha corretto le dimensioni del file.
fiktor,

17

Puoi anche ritagliare i file PDF semplicemente usando Ghostscript. Ho scritto una piccola sceneggiatura per semplificare il processo (ispirata a questa risposta ):

#!/bin/bash

if [ $# -lt 5 ]
then
  echo "Usage: `basename $0` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
  echo "Notes:"
  echo " - all coordinates are absolute; no calculation of width/height necessary"
  echo " - use 'gv' to determine the coordinates"
  exit 65
fi

file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"

base="${file%.*}"
outfile="${base}_cropped.pdf"

echo "writing to: $outfile"

gs \
  -o $outfile \
  -sDEVICE=pdfwrite \
  -c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
  -f $file

Per determinare le coordinate per il ritaglio, io uso gv, che stampa le coordinate del cursore del mouse usando le stesse unità di Ghostscript. Ad esempio, qui determino le coordinate minime per x / y (i valori nell'angolo in alto a sinistra):

crop1

Ora le coordinate massime:

crop2

E infine, eseguo la sceneggiatura pdf_crop_by_coordinates.sh test.pdf 45 429 38 419producendo un test_cropped.pdfaspetto simile al seguente:

risultato

Non ho idea di come la soluzione Ghostscript possa essere paragonata pdfcropin termini di qualità e correttezza.


15

Quando non riesco a fare qualcosa con pdftk, il prossimo posto in cui mi giro è PDFjam , che è un wrapper della riga di comando per il pacchetto LaTeX di pdfpages (quindi è necessario anche questo e una distribuzione TeX installata). Per un aiuto su come usarlo, raccomando la normale schermata di aiuto:

pdfjam --help

poiché la pagina man è scarsa e la pagina Web si concentra su esempi.

Per ritagliare un PDF, il comando che ti serve è qualcosa del genere:

pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf

Questo produrrà un file chiamato input-cropped.pdf. L'ordine delle finiture dovrebbe essere a sinistra, in basso, a destra, in alto, come \includegraphicsda graphicx .

Per dare un'idea di come si confronta con PDFcrop, di recente ho avuto modo di ritagliare un PDF piuttosto elaborato. Il mio originale era 675 kB, la mia versione ritagliata tramite PDFjam era 1,2 MB, mentre una versione ritagliata tramite PDFcrop era 4,5 MB. Mentre PDFjam e PDFcrop hanno eliminato i collegamenti ipertestuali e i segnalibri incorporati, PDFjam con l' --keepinfoopzione ha conservato le proprietà del documento (ad es. Titolo, autore, oggetto).


1
Nota: questo non rimuove realmente il contenuto che diventa fuori schermo dal PDF, ma lo nasconde. Lo stesso dei commenti di @init_js nella risposta più votata.
Jan Żankowski,


3

Questo può aiutarti.
Questo è in accordo con la versione più recente di Ubuntu e vita. Questo è Master PDF Editor . Puoi usarlo per ritagliare, aggiungere alcune cose, ecc.

Esempio:
questo è prima Questo è prima Questo è dopo ctrl + k inserisci qui la descrizione dell'immagine




2

Il programma pdfCropMargins è un'applicazione da riga di comando per ritagliare automaticamente i margini dei file PDF.

Questo programma dipende dal programma Ghostscript o dal programma pdftoppm installato (e localizzabile) sul sistema. E analizza le immagini di pagina con PIL per trovare i riquadri di delimitazione, usando la soglia 191.

installare usando

pip installa pdfCropMargins

Esegui utilizzando

pdf-crop-marginins -v -s -u your-file.pdf

Per un aiuto

pdf-crop-marginins -h | Di Più

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.