GNU/Linux >> Linux Esercitazione >  >> Linux

4 modi per modificare un PDF con il comando pdftk-java

Tra whitepaper tecnologici, manoscritti e libri di giochi di ruolo, mi occupo di molti PDF ogni giorno. Il formato PDF è popolare perché contiene codice PostScript elaborato. PostScript è il linguaggio nativo delle moderne stampanti, quindi gli editori spesso pubblicano una versione digitale di un libro come PDF perché hanno comunque investito tempo e fatica per produrre un file per la stampa. Ma un PDF non è pensato per essere un formato modificabile e, sebbene sia possibile un'elaborazione inversa, è pensato per essere l'ultima fermata per i dati digitali prima che vengano inviati alla stampante. Anche così, a volte è necessario apportare modifiche a un PDF e uno dei miei strumenti preferiti per quel lavoro è il comando pdftk-java.

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Installa pdftk-java su Linux

Come suggerisce il nome, pdftk-java è scritto in Java, quindi funziona su tutti i principali sistemi operativi purché Java sia installato.

Gli utenti Linux e macOS possono installare Java da AdoptOpenJDK.net. Gli utenti Windows possono installare la build Windows di Red Hat di OpenJDK.

Per installare pdftk-java :

1. Scarica la versione pdftk-all.jar dal suo repository Gitlab e salvala in ~/.local/bin/ o in un altro luogo nel tuo percorso.

2. Apri ~/.bashrc nel tuo editor di testo preferito e aggiungi questa riga:

alias pdftk='java -jar $HOME/.local/bin/pdftk-all.jar'

3. Carica le tue nuove impostazioni Bash:

$ source ~/.bashrc

Sintassi dei comandi

La struttura di un pdftk-java valido il comando segue un modello, ma c'è molta flessibilità in ciò che è nel modello. La sintassi è un po' insolita perché non utilizza le opzioni del terminale in stile tradizionale, ma con la pratica non è troppo difficile da ricordare.

  • pdftk :L'alias per chiamare il comando
  • file di input:il PDF che desideri modificare
  • azione:cosa vuoi fare al file di input
  • output:dove vuoi salvare il tuo file PDF modificato

È la parte d'azione più complessa, quindi inizierò con compiti semplici.

Unisci due file PDF in uno

Non è raro che la copertina di un libro venga creata in un'applicazione separata, come Inkscape o GIMP, rispetto al resto del libro, cosa che di solito viene eseguita in un'applicazione di layout come Scribus o una suite per ufficio come LibreOffice. Puoi combinare i due nella tua applicazione di layout. Un buon editore desktop come Scribus semplifica il riferimento a un'immagine in modo che quando la copertina cambia, venga automaticamente aggiornata nel layout. Tuttavia, è anche possibile anteporre la copertina a un PDF con pdftk-java :

$ pdftk cover.pdf body.pdf \
cat \
output book.pdf

In questo esempio, l'azione è cat , come in concatenare e come il comando cat di Linux, concatena uno o più file PDF in un unico flusso di dati e il flusso di dati viene indirizzato in qualsiasi file l'output argomento specifica.

Rimuovi pagine da un PDF

Non puoi rimuovere esattamente una pagina da un PDF, ma puoi creare un nuovo PDF contenente solo le pagine che desideri conservare.

$ pdftk book.pdf \
cat 1 3-end \
output shorter-book.pdf

In questo esempio, la pagina 1 del file del mio libro e tutte le pagine dalla 3 alla fine vengono salvate in un nuovo file. La pagina che ho rimosso, quindi, è la pagina 2.

Dividi un PDF in file separati

Anche la divisione di un file PDF in molti file diversi utilizza il cat azione, ed è simile in linea di principio alla rimozione di pagine. Puoi dividere un PDF inviando le pagine che desideri in un nuovo file:

$ pdftk book.pdf \
cat 1-15 \
output part-1.pdf

$ pdftk book.pdf \
cat 16-42 \
output part-2.pdf

Se devi dividere un PDF in file a pagina singola, c'è un'azione speciale, chiamata burst :

$ pdftk book.pdf burst

$ ls
book.pdf pg_0001.pdf pg_0002.pdf
pg_0003.pdf pg_0004.pdf pg_0005.pdf
[...]

Compila i moduli

Pochi sosterrebbero che il formato PDF non si sia gonfiato nel corso degli anni e una caratteristica che a volte trovi in ​​un file PDF è un modulo compilabile. Lo vedi nei documenti fiscali statunitensi, nelle schede dei personaggi dei giochi di ruolo, nei libri di lavoro scolastici online e in altri file PDF che devono essere interattivi. Mentre la maggior parte dei moderni visualizzatori PDF, come Evince di GNOME e Okular di KDE, possono compilare moduli PDF, puoi anche compilare un modulo PDF con l'aiuto di pdftk-java .

Innanzitutto, devi estrarre i dati del modulo utilizzando generate_fdf azione. Questo estrae gli ID degli elementi del modulo e li inserisce in un file di testo.

$ pdftk character-sheet.pdf \
generate_fdf \
output chsheet-form.txt

Il tuo file di destinazione (in questo esempio, chsheet-form.txt ) contiene i dati del modulo contenuto nel PDF, ma solo le parti di testo. Puoi modificarlo in qualsiasi editor di testo standard, come Atom o Gedit.

In uno sguardo a volte ammirevole ea volte imbarazzante del flusso di lavoro dell'organizzazione che produce il PDF, scoprirai che alcuni moduli sono chiaramente etichettati, mentre altri hanno nomi predefiniti come "Casella di controllo_001" e "Campo di testo-021", quindi potresti dover attraversare -fai riferimento al tuo file di testo con il tuo PDF, ma potrebbe essere utile se stai scrivendo uno script per compilare automaticamente i moduli. Ogni etichetta è contrassegnata da un /T item e nella riga successiva c'è spazio (contrassegnato come /V ) previsto per l'inserimento del testo. Ecco uno snippet di uno che ha il contesto per le sue etichette e alcuni dati inseriti:

/T (CharacterName 2)
/V (Abaddon)
>>
<<
/T (SlotsTotal 24)
/V ()
>>
<<
/T (Hair)
/V (Brown)
>>
<<
/T (AC)
/V (15)
>>
<<
/T (Background)
/V ()
>>
<<
/T (DEXmod )
/V ()

Una volta inseriti i dati del modulo, puoi combinare il tuo input di testo con la struttura PDF con il fill_form azione:

$ pdftk character-sheet.pdf \
fill_form chsheet-form.txt \
output completed.pdf

Ecco un esempio del risultato:

Modifica PDF semplificata

Quando gestisci molti file PDF o file PDF tramite script di shell, uno strumento come pdftk-java è prezioso perché ti libera dal dover fare tutto manualmente. Quando creo un PDF dall'output di Docbook, è un Makefile che chiama pdftk-java per un numero qualsiasi di attività, quindi non c'è alcuna possibilità che dimentichi un passaggio o digiti male il comando, e non c'è bisogno che ci dedichi il mio tempo. Ci sono molti altri motivi per cui potresti usare pdftk-java nel tuo flusso di lavoro e molte altre cose pdftk-java può fare, comprese azioni come shuffle , rotate , dump_data , update_info e attach_files . Se ti ritrovi spesso a gestire file PDF, fornisci pdftk-java una prova.


Linux
  1. Pianificazione delle attività con il comando cron di Linux

  2. 4 modi per modificare le foto sulla riga di comando di Linux

  3. Ordina con l'ordinamento dalla riga di comando

  4. 4 modi per mantenere un comando in esecuzione dopo esserti disconnesso dalla sessione SSH

  5. Ecco tutto ciò che puoi fare con Nmap – Esempi di comandi

3 modi interessanti per usare il comando cowsay di Linux

13 modi in cui puoi aiutare Linux

7 modi per usare il comando Linux Head

7 modi per usare il comando Linux Watch

Usando –exclude con il comando Du?

Come si usano le espressioni regolari con il comando cp in Linux?