使用这个方便的Linux命令合并PDF、删除页面、拆分PDF和填写表格。技术白皮书、手稿和RPG手册,我每天都要处理成吨的PDF文件。PDF格式很受欢迎,因为它包含经过处理的PostScript代码。PostScript是现代打印机的母语,因此出版商通常将书籍的数字版本发布为PDF,因为他们投入了时间和精力来制作印刷文件。然而,PDF不是一种可编辑格式,虽然可以进行一些逆向处理,但它是将数字数据发送到打印机之前的最后一站。尽管如此,有时您仍需要对PDF进行调整,而我最喜欢的工具之一是pdftk-java命令。在Linux上安装pdftk-java顾名思义,pdftk-java是用Java编写的,因此只要安装了Java,它就可以在所有主要操作系统上运行。Linux和macOS用户可以从AdoptOpenJDK.net安装Java。Windows用户可以安装RedHat的OpenJDK的Windows版本。要安装pdftk-java:1.从Gitlab存储库下载pdftk-all.jar程序并将其保存到~/.local/bin/或路径变量中的其他位置。2.在您喜欢的文本编辑器中打开~/.bashrc并添加此行:aliaspdftk='java-jar$HOME/.local/bin/pdftk-all.jar'3.加载新的Bash设置:$source~/.bashrc命令语法有效的pdftk-java命令的结构遵循一种模式,但模式中的内容有很大的灵活性。语法有点不寻常,因为它不使用传统风格的终端选项,但通过练习,不难记住。pdftk:调用命令的别名输入文件:你要修改的PDF文件动作:你想对输入文件做什么输出:你想把修改后的PDF文件保存在哪里最复杂的部分是动作部分,所以我将从简单的任务开始。将两个PDF文件合并为一个书籍封面通常在单独的应用程序中创建,例如Inkscape或GIMP,而书籍的其余部分通常在排版程序(如Scribus)或办公套件(如LibreOffice)中完成,这不是案件。并不少见。您可以在排版应用程序中将两者结合起来。像Scribus这样的出版软件可以很容易地引用图像,这样当封面发生变化时,它会在布局中自动更新。但是,也可以使用pdftk-java将封面预设为PDF:cat命令和一样,它将一个或多个PDF文件连接成一个数据流,该数据流定向到“输出”参数指定的任何文件。从PDF中删除页面您不能完全从PDF中删除页面,但可以创建一个仅包含要保留的页面的新PDF。$pdftkbook.pdf\cat13-end\outputshorter-book.pdf在这个例子中,我的书文件的第1页,以及从3到最后的所有页面,都被保存到一个新文件中。所以我删除的页面是第2页。将PDF拆分为不同的文件将PDF拆分为许多不同的文件也使用cat操作,其工作方式类似于删除页面。您可以通过将您想要的页面发送到新文件来拆分PDF:$pdftkbook.pdf\cat1-15\outputpart-1.pdf$pdftkbook.pdf\cat16-42\outputpart-2.pdf如果需要将PDF分割成单页文件,有一个特殊的动作叫做burst:$pdftkbook.pdfburst$lsbook.pdfpg_0001.pdfpg_0002.pdfpg_0003.pdfpg_0004.pdfpg_0005.pdf[...]填写表格很少有人能否认PDF格式多年来变得越来越臃肿,您有时会在PDF文件中找到的一个功能是可填写表格。您会在美国税务文件、RPG角色表、在线学校工作簿和其他设计为交互式的PDF中看到这一点。虽然大多数现代PDF浏览器(例如GNOME的Evince和KDE的Okular)都可以填写PDF表单,但您也可以在pdftk-java的帮助下填写PDF表单。首先,您必须使用generate_fdf操作提取表单数据。这将提取表单元素的ID并将它们放入文本文件中。$pdftkcharacter-sheet.pdf\generate_fdf\outputchsheet-form.txt您的目标文件(本例中为chsheet-form.txt)包含PDF中的表格数据,但仅包含文本部分。您可以在任何标准文本编辑器中编辑它,例如Atom或Gedit。在对生成PDF的组织的工作流程进行有时令人钦佩有时令人尴尬的一瞥时,您会发现某些表单具有明确的标签,而其他表单具有默认名称,如“Checkbox_001”和“Textfield-021”,因此您可能会必须对照PDF检查您的文本文件,但如果您正在编写一个脚本来自动填写表格,那么这可能是值得的。每个选项卡都标记为/T项,在下一行中,有一个空格(标记为/V)用于文本输入。这是一个带有上下文标签和一些填充数据的片段:/T(CharacterName2)/V(Abaddon)>>><>><
