顾名思义,pdftk-java
是用 Java 编写的,所以只要你安装了 Java,它就能在所有主流的操作系统上工作。
Linux 和 macOS 用户可以从 AdoptOpenJDK.net 安装 Java。Windows 用户可以安装 Red Hat 的 OpenJDK 的 Windows版本。
要安装 pdftk-java
:
1、从 Gitlab 仓库下载 pdftk-all.jar 程序,并将其保存到 ~/.local/bin/
或你 path 变量中的其他位置。
2、在你喜欢的文本编辑器中打开 ~/.bashrc
并添加这一行:
alias pdftk='java -jar $HOME/.local/bin/pdftk-all.jar'
3、加载你的新 Bash 设置:
$ source ~/.bashrc
一个有效的 pdftk-java
命令的结构遵循一个模式,但在模式中的内容有很大的灵活性。语法有点不寻常,因为它没有使用传统风格的 终端选项,但经过实践,它并不难记。
pdftk
:调用该命令的别名最复杂的是动作部分,所以我将从简单的任务开始。
一本书的封面通常在一个单独的应用中创建,如 Inkscape 或 GIMP,而书的其他部分通常在 Scribus 等排版程序或 LibreOffice 等办公套件中完成,这种情况并不罕见。你可以在你的排版应用中把这两者结合起来。像 Scribus 这样的出版软件可以很容易地引用一张图片,这样当封面改变时,它就会在版面中自动更新。然而,也可以用 pdftk-java
将封面预置到 PDF 中:
$ pdftk cover.pdf body.pdf \ cat \ output book.pdf
在这个例子中,动作是 cat
即 连接concatenate 的缩写,和 Linux 的 cat 命令 一样,它将一个或多个 PDF 文件串联成一个数据流,数据流被引导到“输出output”参数指定的任何文件中。
你不能确切地从一个 PDF 中删除一页,但你可以创建一个新的 PDF,只包含你想保留的页面。
$ pdftk book.pdf \ cat 1 3-end \ output shorter-book.pdf
在这个例子中,我的书的文件的第 1 页,以及从 3 到结尾的所有页面,都被保存到一个新文件中。因此,我删除的那一页是第 2 页。
将一个 PDF 文件分割成许多不同的文件也使用 cat
动作,它的原理与删除页面相似。你可以通过将你想要的页面发送到一个新文件来分割一个 PDF:
$ pdftk book.pdf \ cat 1-15 \ output part-1.pdf$ pdftk book.pdf \ cat 16-42 \ output part-2.pdf
如果你需要将一个 PDF 分割成单页文件,有一个特殊的动作,叫做 burst
:
$ pdftk book.pdf burst$ lsbook.pdf pg_0001.pdf pg_0002.pdfpg_0003.pdf pg_0004.pdf pg_0005.pdf[...]
很少有人能否认多年来 PDF 格式变得越来越臃肿,而你有时在 PDF 文件中发现的一个功能是可填写的表格。你会在美国税务文件、RPG 角色表、线上学校作业本和其他旨在互动的 PDF 文件中看到这种情况。虽然大多数现代的 PDF 浏览器,比如 GNOME 的 Evince 和 KDE 的 Okular,都可以填写 PDF 表格,但你也可以在 pdftk-java
的帮助下填写 PDF 表格。
首先,你必须使用 generate_fdf
动作提取表单数据。这将提取表单元素的 ID,并将它们放入一个文本文件。
$ pdftk character-sheet.pdf \ generate_fdf \ output chsheet-form.txt
你的目标文件(在这个例子中是 chsheet-form.txt
)包含 PDF 中的表格数据,但只是文本部分。你可以在任何标准的文本编辑器中编辑它,如 Atom 或 Gedit。
在对生成 PDF 的组织的工作流程的有时令人钦佩和有时尴尬的一瞥中,你会发现一些表格有明确的标签,而其他表格有默认的名字,如 “Checkbox_001” 和 “Textfield-021”,所以你可能要把你的文本文件和你的 PDF 对照一下,但如果你要写一个脚本来自动填写表格,这可能是值得的。每个标签都被标记为 /T
项,在接下来的一行中,有空间(标记为 /V
)提供给文本输入。下面是一个片段,它的标签有上下文,并填入了一些数据:
/T (CharacterName 2)/V (Abaddon)>><</T (SlotsTotal 24)/V ()>><</T (Hair)/V (Brown)>><</T (AC)/V (15)>><</T (Background)/V ()>><</T (DEXmod )/V ()
当你输入了表单数据,你就可以用 fill_form
动作将你的文本输入与 PDF 结构结合起来:
$ pdftk character-sheet.pdf \ fill_form chsheet-form.txt \ output completed.pdf
下面是一个结果示例。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有