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.
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.
Risposte:
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
.
--bbox "<left> <bottom> <right> <top>"
. Ciò consente di utilizzare l'approccio per determinare l'area del raccolto descritta nella mia risposta di seguito .
pdfcrop --help
elenca le opzioni disponibili. Non riesco a vedere nulla che consenta di specificare un intervallo di pagine.
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 --help
per 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
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdf
seguito, che ha corretto le dimensioni del file.
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):
Ora le coordinate massime:
E infine, eseguo la sceneggiatura pdf_crop_by_coordinates.sh test.pdf 45 429 38 419
producendo un test_cropped.pdf
aspetto simile al seguente:
Non ho idea di come la soluzione Ghostscript possa essere paragonata pdfcrop
in termini di qualità e correttezza.
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 \includegraphics
da 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' --keepinfo
opzione ha conservato le proprietà del documento (ad es. Titolo, autore, oggetto).
Se anche uno strumento grafico va bene, consiglierei krop
: http://arminstraub.com/software/krop
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.
È possibile utilizzare uno script pypdf da questa pagina . Ma nella risposta a questa domanda su stackexchange , sembrano esserci anche molte opzioni.
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ù