Mezi technologickými bílými knihami, rukopisy a RPG knihami se každý den zabývám spoustou PDF. Formát PDF je oblíbený, protože obsahuje zpracovaný PostScriptový kód. PostScript je nativní jazyk moderních tiskáren, takže vydavatelé často uvolňují digitální verzi knihy jako PDF, protože investovali čas a úsilí do vytvoření souboru pro tisk. Ale PDF není zamýšleno jako upravitelný formát, a i když je možné určité zpětné zpracování, má být poslední zastávkou pro digitální data před jejich odesláním do tiskárny. Přesto někdy potřebujete provést úpravy v PDF a jedním z mých oblíbených nástrojů pro tuto práci je příkaz pdftk-java.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Nainstalujte pdftk-java na Linux
Jak jeho název napovídá, pdftk-java
je napsán v Javě, takže funguje na všech hlavních operačních systémech, pokud máte nainstalovanou Javu.
Uživatelé Linuxu a macOS si mohou nainstalovat Javu z AdoptOpenJDK.net. Uživatelé Windows si mohou nainstalovat sestavení OpenJDK pro Windows Red Hat.
Chcete-li nainstalovat pdftk-java
:
1. Stáhněte si vydání pdftk-all.jar z jeho úložiště Gitlab a uložte jej do ~/.local/bin/
nebo nějaké jiné místo ve vaší cestě.
2. Otevřete ~/.bashrc
ve svém oblíbeném textovém editoru a přidejte do něj tento řádek:
alias pdftk='java -jar $HOME/.local/bin/pdftk-all.jar'
3. Načtěte svá nová nastavení Bash:
$ source ~/.bashrc
Syntaxe příkazu
Struktura platného pdftk-java
příkaz se řídí vzorem, ale v tom, co je ve vzoru, je velká flexibilita. Syntaxe je trochu neobvyklá, protože nepoužívá možnosti terminálu tradičního stylu, ale s praxí není příliš těžké si ji zapamatovat.
pdftk
:Alias pro volání příkazu- vstupní soubor:soubor PDF, který chcete upravit
- akce:Co chcete udělat se vstupním souborem
- výstup:Místo, kam chcete uložit upravený soubor PDF
Je to akční část, která je nejsložitější, takže začnu jednoduchými úkoly.
Spojení dvou souborů PDF do jednoho
Není neobvyklé, že přední obálka knihy je vytvořena v samostatné aplikaci, jako je Inkscape nebo GIMP, než zbytek knihy, což se obvykle provádí v aplikaci pro rozložení, jako je Scribus, nebo v kancelářském balíku, jako je LibreOffice. Ve své aplikaci pro rozvržení můžete obojí zkombinovat. Dobrý desktopový vydavatel, jako je Scribus, usnadňuje odkazování na obrázek, takže když se změní obálka, automaticky se aktualizuje v rozložení. Je však také možné přidat obálku k PDF pomocí pdftk-java
:
$ pdftk cover.pdf body.pdf \
cat \
output book.pdf
V tomto příkladu je akce cat
, jako v zřetězení a stejně jako linuxový příkaz cat spojuje jeden nebo více souborů PDF do jednoho datového toku a datový tok je směrován do jakéhokoli output
souboru argument určuje.
Odebrání stránek z PDF
Nemůžete přesně odstranit stránku z PDF, ale můžete vytvořit nový PDF obsahující pouze stránky, které si chcete ponechat.
$ pdftk book.pdf \
cat 1 3-end \
output shorter-book.pdf
V tomto příkladu se stránka 1 souboru mé knihy a všechny stránky od 3 do konce uloží do nového souboru. Stránka, kterou jsem odstranil, je tedy stránka 2.
Rozdělit PDF do samostatných souborů
Rozdělení souboru PDF do mnoha různých souborů také používá cat
akci a je to v principu podobné jako při odstraňování stránek. PDF můžete rozdělit odesláním stránek, které chcete, do nového souboru:
$ pdftk book.pdf \
cat 1-15 \
output part-1.pdf
$ pdftk book.pdf \
cat 16-42 \
output part-2.pdf
Pokud potřebujete rozdělit PDF na jednostránkové soubory, existuje pro to speciální akce, nazvaná burst
:
$ pdftk book.pdf burst
$ ls
book.pdf pg_0001.pdf pg_0002.pdf
pg_0003.pdf pg_0004.pdf pg_0005.pdf
[...]
Vyplňte formuláře
Málokdo by namítl, že formát PDF se za ta léta nenafoukl a jednou funkcí, kterou někdy v souboru PDF najdete, je vyplnitelný formulář. Vidíte to v amerických daňových dokumentech, RPG znakových listech, online školních sešitech a dalších souborech PDF, které mají být interaktivní. Zatímco většina moderních prohlížečů PDF, jako je Evince od GNOME a Okular od KDE, dokáže vyplnit formuláře PDF, můžete také vyplnit formulář PDF pomocí pdftk-java
.
Nejprve musíte extrahovat data formuláře pomocí generate_fdf
akce. Toto extrahuje ID prvků formuláře a umístí je do textového souboru.
$ pdftk character-sheet.pdf \
generate_fdf \
output chsheet-form.txt
Váš cílový soubor (v tomto příkladu chsheet-form.txt
) obsahuje data formuláře obsažená v PDF, ale pouze textové části. Můžete jej upravit v libovolném standardním textovém editoru, jako je Atom nebo Gedit.
Při někdy obdivuhodném a někdy trapném pohledu do pracovního postupu organizace vytvářející PDF zjistíte, že některé formuláře jsou jasně označeny, zatímco jiné mají výchozí názvy jako „Checkbox_001“ a „Textfield-021“, takže možná budete muset přejít -odkažte svůj textový soubor na svůj PDF, ale to může být užitečné, pokud píšete skript pro automatické vyplňování formulářů. Každý štítek je označen jako /T
položka a na následujícím řádku je mezera (označená jako /V
) určené pro zadávání textu. Zde je úryvek z jednoho, který má kontext k jeho štítkům a některá data vyplněná:
/T (CharacterName 2)
/V (Abaddon)
>>
<<
/T (SlotsTotal 24)
/V ()
>>
<<
/T (Hair)
/V (Brown)
>>
<<
/T (AC)
/V (15)
>>
<<
/T (Background)
/V ()
>>
<<
/T (DEXmod )
/V ()
Jakmile zadáte data formuláře, můžete svůj textový vstup zkombinovat se strukturou PDF pomocí fill_form
akce:
$ pdftk character-sheet.pdf \
fill_form chsheet-form.txt \
output completed.pdf
Zde je ukázka výsledku:
Snadná úprava PDF
Když pracujete s mnoha soubory PDF nebo soubory PDF pomocí skriptů shellu, nástroj jako pdftk-java
je neocenitelný, protože vás osvobozuje od nutnosti dělat vše ručně. Když sestavuji PDF z výstupu Docbooku, je to Makefile, který volá pdftk-java
pro libovolný počet úkolů, takže nemám šanci, že zapomenu krok nebo přepíšu příkaz, a nemusím nad tím trávit čas. Existuje mnoho dalších důvodů, proč můžete použít pdftk-java
ve vašem vlastním pracovním postupu a spoustu dalších věcí pdftk-java
umí, včetně akcí jako shuffle
, rotate
, dump_data
, update_info
a attach_files
. Pokud se často setkáváte se soubory PDF, zadejte pdftk-java
pokus.