WiK*_*rIe 151 pdf software-installation pdftk 18.04
有没有机会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
Run Code Online (Sandbox Code Playgroud)
但是没有找到工作工具。
Dav*_*ter 113
Ubuntu 中的pdftk 包(及其上游Debian 包)由于依赖于现已弃用的 GCJ 运行时而被删除。我找到了一个依赖于 OpenJDK 或类似的分支。
从 Cosmic (Ubuntu 18.10) 开始,Ubuntupdftk-java使用与下面相同的源代码作为替代品。尝试安装pdftk将改为安装此软件包。早期版本的用户可以从包存储库手动下载它并使用他们最喜欢的包管理器安装它。
我构建了一个具有合适依赖项的 Deb 包(仅适用于 Bionic):
sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk
Run Code Online (Sandbox Code Playgroud)
该包包含一个放置在 中的包装脚本/usr/bin,因此您可以像往常一样调用它:
pdftk <arguments> ...
Run Code Online (Sandbox Code Playgroud)
安装构建工具和依赖项:
sudo apt install git default-jdk-headless ant \
libcommons-lang3-java libbcprov-java
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用与default-jdk-headless.
git clone https://gitlab.com/pdftk-java/pdftk.git
cd pdftk
Run Code Online (Sandbox Code Playgroud)
将所需库的符号链接放入lib文件夹中:
mkdir lib
ln -st lib /usr/share/java/{commons-lang3,bcprov}.jar
Run Code Online (Sandbox Code Playgroud)
构建 JAR 包:
ant jar
Run Code Online (Sandbox Code Playgroud)
运行 JAR 包:
java -jar build/jar/pdftk.jar --help
Run Code Online (Sandbox Code Playgroud)
(可选)要运行 JAR 包,例如,当您将其分发到其他系统时,您至少需要一个工作(无头)JRE,例如来自该default-jre-headless包的JRE以及 Java 库libcommons-lang3-java和libbcprov-java:
sudo apt install default-jre-headless libcommons-lang3-java libbcprov-java
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用与default-jre-headless. 这个 pdftk fork 还支持旧 JRE 版本的构建(根据文档?7)。
(可选)您可以通过update-binfmts(8). 大多数在 Deb 包中提供的 JRE,包括那些在 Canonical 包存储库中的,在安装过程中都会处理这个问题,尽管它在某些 OpenJDK 包中似乎有问题。
PS:我在 Ubuntu Trusty 中使用 non-headless OpenJDK 9 尝试过这个,但我看不出为什么它不能与 Bionic 中的 headless OpenJDK 10 一起使用。
一位评论者提出了一个有效的问题,即依赖的PDF Chain应用程序是否受到此更改的影响:
小智 101
对于 Ubuntu 18.04,只需安装 pdftk snap 包:
sudo snap install pdftk
Run Code Online (Sandbox Code Playgroud)
abu*_*bua 64
我编写了一个小的 bash 脚本,可以在 Ubuntu 18.04 上自动安装。请注意,我只下载了 amd64软件包!
#!/bin/bash
#
# author: abu
# date: July 3 2019 (ver. 1.1)
# description: bash script to install pdftk on Ubuntu 18.04 for amd64 machines
##############################################################################
#
# change to /tmp directory
cd /tmp
# download packages
wget http://launchpadlibrarian.net/340410966/libgcj17_6.4.0-8ubuntu1_amd64.deb \
http://launchpadlibrarian.net/337429932/libgcj-common_6.4-3ubuntu1_all.deb \
https://launchpad.net/ubuntu/+source/pdftk/2.02-4build1/+build/10581759/+files/pdftk_2.02-4build1_amd64.deb \
https://launchpad.net/ubuntu/+source/pdftk/2.02-4build1/+build/10581759/+files/pdftk-dbg_2.02-4build1_amd64.deb
echo -e "Packages for pdftk downloaded\n\n"
# install packages
echo -e "\n\n Installing pdftk: \n\n"
sudo apt-get install ./libgcj17_6.4.0-8ubuntu1_amd64.deb \
./libgcj-common_6.4-3ubuntu1_all.deb \
./pdftk_2.02-4build1_amd64.deb \
./pdftk-dbg_2.02-4build1_amd64.deb
echo -e "\n\n pdftk installed\n"
echo -e " try it in shell with: > pdftk \n"
# delete deb files in /tmp directory
rm ./libgcj17_6.4.0-8ubuntu1_amd64.deb
rm ./libgcj-common_6.4-3ubuntu1_all.deb
rm ./pdftk_2.02-4build1_amd64.deb
rm ./pdftk-dbg_2.02-4build1_amd64.deb
Run Code Online (Sandbox Code Playgroud)
该脚本将/tmp使用apt install命令将软件包下载到那里并从那里安装!之后/tmp目录中的包将被删除。
要运行此脚本,请将其复制到编辑器中并保存,例如pdftk_installer。然后在终端中运行它
chmod 755 pdftk_installer
./pdftk_installer
Run Code Online (Sandbox Code Playgroud)
由于 Ubuntu 20.04 上缺少 gcc-6 库,上述脚本将失败。但是,那些想要避免使用 snap 或 docker 解决方案的人可以使用schroot。我知道这是一个相当大的过载——它需要大约 500MB;但是您可以使用此环境在 Xenial (Ubuntu 16.04) 环境中安装更多旧程序、库、编译器等。
首先安装schroot包
sudo apt install schroot debootstrap
Run Code Online (Sandbox Code Playgroud)
安装类似 debian 的系统需要最后一个包。现在将xenial.conf文件写入/etc/schroot/schroot.d目录:
cat <<EOF | sudo tee /etc/schroot/chroot.d/xenial.conf
> [xenial]
> description=Ubuntu 16.04
> directory=/srv/chroot/xenial
> root-users=$USER
> type=directory
> users=$USER
> EOF
Run Code Online (Sandbox Code Playgroud)
验证是否写入了新的 conf 文件
cat /etc/schroot/chroot.d/xenial.conf
Run Code Online (Sandbox Code Playgroud)
接下来创建 xenial 目录(如果您选择另一个目录,请更改上面的 conf 文件):
sudo mkdir -p /srv/chroot/xenial
Run Code Online (Sandbox Code Playgroud)
现在节目开始,一边安装一边喝咖啡:
sudo debootstrap xenial /srv/chroot/xenial
Run Code Online (Sandbox Code Playgroud)
xenial 文件系统现在可以在/srv/chroot/xenial.
现在是时候包含必要的 xenial apt 存储库了。为此,请键入
cat <<EOF | sudo tee /srv/chroot/xenial/etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
EOF
Run Code Online (Sandbox Code Playgroud)
再次检查文件是否/srv/chroot/xenial/etc/apt/sources.list存在
cat /srv/chroot/xenial/etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)
是时候进入 xenial schroot(注意:不需要 root 权限!)并更新 apt
schroot -c xenial -u root apt-get update
Run Code Online (Sandbox Code Playgroud)
最后,您已准备好安装pdftk package:
schroot -c xenial -u root apt-get install pdftk
Run Code Online (Sandbox Code Playgroud)
您可以pdftk通过 schroot 调用它来使用它:
schroot -c xenial -- pdftk <your arguments>
Run Code Online (Sandbox Code Playgroud)
例如显示帮助菜单类型
schroot -c xenial -- pdftk --help
Run Code Online (Sandbox Code Playgroud)
最后,我建议在您的.bashrc文件中为 pdftk 创建一个别名:
首先复制你的 .bashrc
cp ~/.bashrc ~/.bashrc_backup
Run Code Online (Sandbox Code Playgroud)
然后添加别名
echo alias pdftk='schroot -c xenial -- pdftk' >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
现在你可以pdf像往常一样在你的 bash 中使用。测试打开一个新终端并输入
pdftk --version
Run Code Online (Sandbox Code Playgroud)
如果您必须像我一样安装其他较旧的程序,请使用与上述类似的 apt 命令。
请注意,除了apt-get和之外的所有命令xenial.config都是以用户权限执行的。
小智 14
这适用于 ubuntu 18.04:
sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk
Run Code Online (Sandbox Code Playgroud)
小智 13
您可以尝试使用安装了 pdftk 的 Ubuntu 16.04 docker 映像来运行 pdftk:
安装码头工人:
sudo apt install docker.io
Run Code Online (Sandbox Code Playgroud)拉取 Ubuntu 16.04 并运行 bash shell:
sudo docker run -it ubuntu:16.04 bash
Run Code Online (Sandbox Code Playgroud)从容器提示更新并安装 pdftk:
apt update
apt install pdftk
Run Code Online (Sandbox Code Playgroud)在新的终端上运行:
sudo docker ps -a
Run Code Online (Sandbox Code Playgroud)使用 ubuntu:16.04 的 CONTAINER ID 将图像提交到安装了 pdftk 的新图像:
sudo docker commit CONTAINER_ID ubuntu_pdftk
Run Code Online (Sandbox Code Playgroud)
(替换CONTAINER_ID为您的容器 ID。)
创建一个名为pdftkin的文件/usr/bin,然后使用chmod +x /usr/bin/pdftk以下命令使其可执行:
#!/bin/sh
set -eu
docker run --name pdftk -it -v "$PWD:/workdir$PWD" -w "/workdir$PWD" ubuntu_pdftk pdftk "$@"
docker rm pdftk
Run Code Online (Sandbox Code Playgroud)小智 5
我能够从 artful (17.10) deb 包安装 pdftk。下载然后安装,按顺序:
gcc-6-base如果从 cli安装,最好先安装以避免出现依赖项错误。
这应该可以解决问题……现在。
小智 5
安装 pdftk snap 包。
跑:
sudo snap install pdftk
Run Code Online (Sandbox Code Playgroud)
执行以下操作从 root 运行你的包,或者你想从 node 运行,等等。
从 snap 安装 Pdftk 后,您需要/snap/pdftk/current/usr/..将 Ubuntu的路径更改/usr为替换运行以下命令。
sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
Run Code Online (Sandbox Code Playgroud)
或覆盖运行以下命令。
sudo ln -fs /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
Run Code Online (Sandbox Code Playgroud)
测试 pdftk input.pdf cat output new.pdf
| 归档时间: |
|
| 查看次数: |
86165 次 |
| 最近记录: |