成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[442333]]

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

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

  1. $ source ~/.bashrc

命令語法

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

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

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

將兩個 PDF 文件合并成一個

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

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

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

從一個 PDF 中刪除頁面

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

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

在這個例子中,我的書的文件的第 1 頁,以及從 3 到結尾的所有頁面,都被保存到一個新文件中。因此,我刪除的那一頁是第 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ā)現的一個功能是可填寫的表格。你會在美國稅務文件、RPG 角色表、線上學校作業(yè)本和其他旨在互動的 PDF 文件中看到這種情況。雖然大多數現代的 PDF 瀏覽器,比如 GNOME 的 Evince 和 KDE 的 Okular,都可以填寫 PDF 表格,但你也可以在 pdftk-java 的幫助下填寫 PDF 表格。

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

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

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

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

  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 ()

當你輸入了表單數據,你就可以用 fill_form 動作將你的文本輸入與 PDF 結構結合起來:

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

下面是一個結果示例。 

[[442334]]

A form filled by pdftk-java

PDF 修改變得簡單

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

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2014-03-17 09:22:43

Linux命令

2021-11-08 12:17:09

LinuxLinux命令編輯照片

2014-02-28 10:50:24

Linux命令

2011-06-22 15:21:08

XML

2009-03-31 13:12:30

解析XMLJava

2022-09-02 14:29:01

JavaScrip數組屬性

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

類型轉換.NET 強制轉型

2020-08-10 00:30:55

備份密碼iPhone移動安全

2022-12-07 10:28:22

2022-11-04 13:35:29

IT遠程工作混合工作

2016-06-28 10:19:31

云計算云安全

2010-07-16 13:50:53

Perl哈希表

2009-09-17 16:55:58

C#組件設計

2010-08-02 16:47:46

Flex

2021-09-03 11:24:04

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

2020-01-21 19:15:23

漏洞安全IT

2020-07-24 09:56:12

React開發(fā)數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区免费观看 | 久久国产精品视频 | 欧美精品一区二区在线观看 | 91av在线免费 | 九色av| 亚洲国产精品视频一区 | 亚洲激情自拍偷拍 | 国产伦精品一区二区三区视频金莲 | 国产综合久久久 | 国产欧美精品在线观看 | 成人网址在线观看 | 天天躁日日躁狠狠很躁 | 高清欧美性猛交xxxx黑人猛交 | 成人三级av | 国产亚洲精品综合一区 | 欧美一区二区三区在线播放 | 成人免费av在线 | 精品久久久久久久久久久 | 最新高清无码专区 | 两性午夜视频 | 麻豆一区二区三区精品视频 | 蜜桃精品视频在线 | 最新中文字幕在线 | 国产精品久久久久久一区二区三区 | 久久久久国产一区二区三区 | 国产精品视频久久久 | 一区在线观看视频 | www久久爱| 欧美日韩久久久久 | 国产一级成人 | www.日韩系列 | 亚洲精品一区二区三区蜜桃久 | 色久影院 | 天堂在线www | 91精品国产91久久久久久吃药 | 小草久久久久久久久爱六 | 亚洲香蕉在线视频 | 国产乱码精品一区二区三区中文 | 欧美一级片在线 | 日韩成年人视频在线 | 国产欧美精品一区二区 |