有没有机会pdftk
在 Ubuntu 18.04 中工作?我需要它来在 shell 中创建带有水印的 PDF 文件。
或者,有人知道pdftk
在 shell 中生成带有水印的 PDF 的可行替代方法吗?
我已经检查/尝试了所有这些:
sudo apt list pdf*
Listing... Done
pdf-presenter-console/bionic 4.1-2 amd64
pdf-redact-tools/bionic,bionic 0.1.2-1 all
pdf.js-common/bionic,bionic 1.5.188+dfsg-1 all
pdf2djvu/bionic 0.9.8-0ubuntu1 amd64
pdf2svg/bionic 0.2.3-1 amd64
pdfcrack/bionic 0.16-1 amd64
pdfcube/bionic 0.0.5-2build6 amd64
pdfcube-dbg/bionic 0.0.5-2build6 amd64
pdfgrep/bionic 2.0.1-1 amd64
pdfminer-data/bionic,bionic 20140328+dfsg-1 all
pdfmod/bionic,bionic 0.9.1-8 all
pdfmod-dbg/bionic,bionic 0.9.1-8 all
pdfposter/bionic,bionic 0.6.0-2 all
pdfresurrect/bionic 0.14-1 amd64
pdfsam/bionic,bionic 3.3.5-1 all
pdfsandwich/bionic 0.1.6-1 amd64
pdfshuffler/bionic,bionic 0.6.0-8 all
pdftoipe/bionic 1:7.2.7-1build1 amd64
但是没有找到工作工具。
Ubuntu 中的pdftk 包(及其上游Debian 包)由于依赖于现已弃用的 GCJ 运行时而被删除。我找到了一个依赖于 OpenJDK 或类似的分支。
从未来的 Ubuntu 版本安装(推荐)
从 Cosmic (Ubuntu 18.10) 开始,Ubuntu
pdftk-java
使用与以下相同的源代码作为替代。尝试安装pdftk
将改为安装此软件包。早期版本的用户可以从包存储库手动下载它,并使用他们最喜欢的包管理器进行安装。从 PPA 安装(过时)我构建了一个具有合适依赖项的 Deb 包(仅适用于 Bionic):该包包含一个放置在 中的包装脚本
/usr/bin
,因此您可以照常调用它:从源安装
安装构建工具和依赖项:
当然,您可以使用不同的受支持 JDK,而不是
default-jdk-headless
.下载Marc Vinyal 的 pdftk fork:
将所需库的符号链接放入
lib
文件夹中:构建 JAR 包:
运行 JAR 包:
(可选)要运行 JAR 包,例如,当您将其分发到其他系统时,您至少需要
default-jre-headless
包中的工作(无头)JRE,以及 Java 库libcommons-lang3-java
和libbcprov-java
:同样,您可以使用与
default-jre-headless
. 此 pdftk fork 还支持旧 JRE 版本的构建(根据文档,≥ 7)。(可选)您可以教 Linux 通过
update-binfmts(8)
. 大多数 JRE 在 Deb 包中提供,包括 Canonical 包存储库中的 JRE,在安装过程中会处理这些问题,尽管在某些 OpenJDK 包中似乎存在错误。PS:我在 Ubuntu Trusty 中使用非无头 OpenJDK 9 进行了尝试,但我看不出为什么它不应该与 Bionic 中的无头 OpenJDK 10 一起使用。
取决于应用
一位评论者提出了一个有效的问题,即依赖的PDF 链应用程序是否受到此更改的影响:
对于 Ubuntu 18.04,只需安装 pdftk snap 包:
在 Ubuntu 18.04 amd64 上安装 pdftk
我写了一个小 bash 脚本,它可以在 Ubuntu 18.04 上自动安装。请注意,我只下载了 amd64包!
该脚本将
/tmp
使用apt install
命令将软件包下载到那里并从那里安装!之后/tmp
目录中的包将被删除。要运行此脚本,请将其复制到编辑器中并保存,例如pdftk_installer。然后在终端中运行它
在 Ubuntu 20.04 amd64 上安装 pdftk
由于 Ubuntu 20.04 上缺少 gcc-6 库,上述脚本将失败。但是,那些想避免 snap 或 docker 解决方案的人可以使用schroot。我知道这是一个相当大的超载——大约需要 500MB;但是您可以使用此环境在 Xenial (Ubuntu 16.04) 环境中安装更多的旧程序、库、编译器等。
首先安装
schroot
包最后一个软件包是安装 debian-like 系统所必需的。现在将
xenial.conf
文件写入/etc/schroot/schroot.d
目录:验证是否写入了新的 conf 文件
接下来创建 xenial 目录(如果您选择另一个目录,请更改上面的 conf 文件):
现在节目开始了,一边安装一边喝杯咖啡:
xenial 文件系统现在可以在
/srv/chroot/xenial
.现在是时候包含必要的 xenial apt 存储库了。为此,请键入
再次检查文件是否
/srv/chroot/xenial/etc/apt/sources.list
存在是时候进入 xenial schroot(注意:不需要 root 权限!)并更新 apt
最后,您已准备好安装
pdftk package
:您可以
pdftk
通过 schroot 调用它来使用它:例如显示帮助菜单类型
.bashrc
最后,我建议在您的文件中为 pdftk 创建一个别名:首先复制你的 .bashrc
然后添加别名
现在您可以
pdf
在 bash 中照常使用了。测试打开一个新终端并输入如果您必须像我一样安装其他较旧的程序,请使用与上述类似的 apt 命令。
请注意,除
apt-get
和之外的所有命令xenial.config
都以用户权限执行。这适用于 ubuntu 18.04:
您可以尝试使用安装了 pdftk 的 Ubuntu 16.04 的 docker 映像来运行 pdftk:
安装泊坞窗:
拉取 Ubuntu 16.04 并运行 bash shell:
从容器提示符更新并安装 pdftk:
在新的终端上运行:
使用 ubuntu:16.04 的 CONTAINER ID 将图像提交到安装了 pdftk 的新图像:
(替换
CONTAINER_ID
为您的容器 ID。)创建一个名为
pdftk
in的文件/usr/bin
,然后使用以下命令使其可执行chmod +x /usr/bin/pdftk
:安装 pdftk snap 包。
跑:
执行以下操作以从 root 运行您的包,或者您想从节点运行等。
从 snap 安装 Pdftk 后,您需要更改
/snap/pdftk/current/usr/..
Ubuntu 的路径以/usr
进行替换,运行以下命令。或覆盖运行以下命令。
测试
pdftk input.pdf cat output new.pdf
我能够从巧妙的(17.10)deb 包中安装 pdftk。按以下顺序下载然后安装:
gcc-6-base
如果从 cli安装,最好先安装以避免依赖错误。这应该可以解决问题……现在。
我做了一个快速而肮脏的解决方法来让 PDFTK 在 Bionic 下运行。
我更新了我的
sources.list
并包括以下几行:之后我运行一个简单的
使更改生效。
然后通过安装pdftk
然后再次从 source.list 中删除 Artful 源,这就是我在 Bionic 下运行 PDFTK 的方式。
资料来源:https ://christiandietze.de/pdftk-with-ubuntu-bionic-18-04/
我喜欢Ademir 的docker 答案,但它在安全性和权限方面存在典型问题,因为 docker 必须以 root 身份运行。如果这让您感到困扰,请尝试使用Singularity。您需要以 root 身份构建映像,但任何用户都可以运行它。
这是
Singularity
我使用的文件:然后我建立了图像。
一旦成功,我将它安装到路径上的一个文件夹中,以及一个将主文件夹设置为当前目录的包装脚本。
现在我可以跑了
pdftk
。唯一的缺点是它是一个相当大的可执行文件,因为它包含一个完整的 Ubuntu 16.04 发行版。如果您尝试操作不在当前目录中的 PDF 文件,您也可能会遇到麻烦。
为了让 pdftk 具体到 18.04,我发现这有效:
pdftk-java
IE: