偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用 pdftk-java 命令編輯 PDF 的四種方法

系統(tǒng) Linux
技術(shù)白皮書、手稿和 RPG 手冊,我每天都要處理大量的 PDF 文件。用這個方便的 Linux 命令合并 PDF、刪除頁面、分割 PDF 和填寫表格。

[[442333]]

用這個方便的 Linux 命令合并 PDF、刪除頁面、分割 PDF 和填寫表格。

技術(shù)白皮書、手稿和 RPG 手冊,我每天都要處理大量的 PDF 文件。PDF 格式之所以受歡迎,是因為它包含經(jīng)過處理的 PostScript 代碼。PostScript 是現(xiàn)代打印機的原生語言,所以出版商經(jīng)常將一本書的數(shù)字版本發(fā)布為 PDF,因為他們已經(jīng)投入了時間和精力來制作印刷用的文件。但是,PDF 并不是一種可編輯的格式,雖然可以進行一些逆向處理,但它是數(shù)字數(shù)據(jù)發(fā)送到打印機之前的最后一站。即便如此,有時你還是需要對 PDF 進行調(diào)整,而我最喜歡的工具之一就是 pdftk-java 命令。

在 Linux 上安裝 pdftk-java

顧名思義,pdftk-java 是用 Java 編寫的,所以只要你安裝了 Java,它就能在所有主流的操作系統(tǒng)上工作。

Linux 和 macOS 用戶可以從 AdoptOpenJDK.net 安裝 Java。Windows 用戶可以安裝 Red Hat 的 OpenJDK 的 Windows版本

要安裝 pdftk-java

1、從 Gitlab 倉庫下載 pdftk-all.jar 程序,并將其保存到 ~/.local/bin/ 或你 path 變量中的其他位置

2、在你喜歡的文本編輯器中打開 ~/.bashrc 并添加這一行:

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

3、加載你的新 Bash 設(shè)置:

  1. $ source ~/.bashrc

命令語法

一個有效的 pdftk-java 命令的結(jié)構(gòu)遵循一個模式,但在模式中的內(nèi)容有很大的靈活性。語法有點不尋常,因為它沒有使用傳統(tǒng)風格的 終端選項,但經(jīng)過實踐,它并不難記。

  • pdftk:調(diào)用該命令的別名
  • 輸入文件:你想修改的 PDF 文件
  • 動作:你想對輸入文件做什么
  • 輸出:你想在哪里保存你修改過的 PDF 文件

最復雜的是動作部分,所以我將從簡單的任務(wù)開始。

將兩個 PDF 文件合并成一個

一本書的封面通常在一個單獨的應(yīng)用中創(chuàng)建,如 Inkscape 或 GIMP,而書的其他部分通常在 Scribus 等排版程序或 LibreOffice 等辦公套件中完成,這種情況并不罕見。你可以在你的排版應(yīng)用中把這兩者結(jié)合起來。像 Scribus 這樣的出版軟件可以很容易地引用一張圖片,這樣當封面改變時,它就會在版面中自動更新。然而,也可以用 pdftk-java 將封面預置到 PDF 中:

  1. $ pdftk cover.pdf body.pdf \
  2. cat \
  3. output book.pdf

在這個例子中,動作是 cat 即 連接concatenate 的縮寫,和 Linux 的 cat 命令 一樣,它將一個或多個 PDF 文件串聯(lián)成一個數(shù)據(jù)流,數(shù)據(jù)流被引導到“輸出output”參數(shù)指定的任何文件中。

從一個 PDF 中刪除頁面

你不能確切地從一個 PDF 中刪除一頁,但你可以創(chuàng)建一個新的 PDF,只包含你想保留的頁面。

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

在這個例子中,我的書的文件的第 1 頁,以及從 3 到結(jié)尾的所有頁面,都被保存到一個新文件中。因此,我刪除的那一頁是第 2 頁。

將一個 PDF 分割成不同的文件

將一個 PDF 文件分割成許多不同的文件也使用 cat 動作,它的原理與刪除頁面相似。你可以通過將你想要的頁面發(fā)送到一個新文件來分割一個 PDF:

  1. $ pdftk book.pdf \
  2. cat 1-15 \
  3. output part-1.pdf
  4. $ pdftk book.pdf \
  5. cat 16-42 \
  6. output part-2.pdf

如果你需要將一個 PDF 分割成單頁文件,有一個特殊的動作,叫做 burst

  1. $ pdftk book.pdf burst
  2. $ ls
  3. book.pdf pg_0001.pdf pg_0002.pdf
  4. pg_0003.pdf pg_0004.pdf pg_0005.pdf
  5. [...]
  6.  

填寫表格

很少有人能否認多年來 PDF 格式變得越來越臃腫,而你有時在 PDF 文件中發(fā)現(xiàn)的一個功能是可填寫的表格。你會在美國稅務(wù)文件、RPG 角色表、線上學校作業(yè)本和其他旨在互動的 PDF 文件中看到這種情況。雖然大多數(shù)現(xiàn)代的 PDF 瀏覽器,比如 GNOME 的 Evince 和 KDE 的 Okular,都可以填寫 PDF 表格,但你也可以在 pdftk-java 的幫助下填寫 PDF 表格。

首先,你必須使用 generate_fdf 動作提取表單數(shù)據(jù)。這將提取表單元素的 ID,并將它們放入一個文本文件。

  1. $ pdftk character-sheet.pdf \
  2. generate_fdf \
  3. output chsheet-form.txt
  4.  

你的目標文件(在這個例子中是 chsheet-form.txt)包含 PDF 中的表格數(shù)據(jù),但只是文本部分。你可以在任何標準的文本編輯器中編輯它,如 Atom 或 Gedit

在對生成 PDF 的組織的工作流程的有時令人欽佩和有時尷尬的一瞥中,你會發(fā)現(xiàn)一些表格有明確的標簽,而其他表格有默認的名字,如 “Checkbox_001” 和 “Textfield-021”,所以你可能要把你的文本文件和你的 PDF 對照一下,但如果你要寫一個腳本來自動填寫表格,這可能是值得的。每個標簽都被標記為 /T 項,在接下來的一行中,有空間(標記為 /V)提供給文本輸入。下面是一個片段,它的標簽有上下文,并填入了一些數(shù)據(jù):

  1. /T (CharacterName 2)
  2. /V (Abaddon)
  3. >>
  4. <<
  5. /T (SlotsTotal 24)
  6. /V ()
  7. >>
  8. <<
  9. /T (Hair)
  10. /V (Brown)
  11. >>
  12. <<
  13. /T (AC)
  14. /V (15)
  15. >>
  16. <<
  17. /T (Background)
  18. /V ()
  19. >>
  20. <<
  21. /T (DEXmod )
  22. /V ()

當你輸入了表單數(shù)據(jù),你就可以用 fill_form 動作將你的文本輸入與 PDF 結(jié)構(gòu)結(jié)合起來:

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

下面是一個結(jié)果示例。 

[[442334]]

A form filled by pdftk-java

PDF 修改變得簡單

當你處理大量的 PDF 文件或通過 shell 腳本處理 PDF 文件時,像 pdftk-java 這樣的工具是非常有價值的,因為它使你不必手動做所有的事情。當我從 Docbook 的輸出建立一個 PDF 時,它是一個 Makefile,調(diào)用 pdftk-java 完成任何數(shù)量的任務(wù),所以我沒有機會忘記某個步驟或打錯命令,也沒有必要把時間花在這上面。在你自己的工作流程中,還有很多其他的原因你可能會使用 pdftk-java,它還可以做很多其他的事情,包括 shuffle、rotate、dump_dataupdate_info 和 attach_files 等動作。如果你發(fā)現(xiàn)自己經(jīng)常與 PDF 文件打交道,可以試試 pdftk-java。 

 

責任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2014-03-17 09:22:43

Linux命令

2021-11-08 12:17:09

LinuxLinux命令編輯照片

2014-02-28 10:50:24

Linux命令

2009-03-31 13:12:30

解析XMLJava

2011-06-22 15:21:08

XML

2022-09-02 14:29:01

JavaScrip數(shù)組屬性

2010-03-18 17:57:37

Java XMLSoc

2009-11-23 15:57:51

PHP偽靜態(tài)

2021-03-10 10:13:39

爬蟲Python代碼

2009-02-25 09:52:14

類型轉(zhuǎn)換.NET 強制轉(zhuǎn)型

2020-08-10 00:30:55

備份密碼iPhone移動安全

2022-11-04 13:35:29

IT遠程工作混合工作

2022-12-07 10:28:22

2009-09-17 16:55:58

C#組件設(shè)計

2010-08-02 16:47:46

Flex

2020-01-21 19:15:23

漏洞安全IT

2020-07-24 09:56:12

React開發(fā)數(shù)據(jù)

2021-09-03 11:24:04

云計算云計算環(huán)境云應(yīng)用

2025-03-12 09:54:02

2016-06-28 10:19:31

云計算云安全
點贊
收藏

51CTO技術(shù)棧公眾號