如何在Ubuntu 18.04 Bionic中安装pdftk?
有没有机会让pdftk
在Ubuntu 18.04中运行? 我需要这个来创建带有水印的PDF文件。
或者,有没有人知道pdftk
替代工作,以生成带有水印的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或类似代码的fork。
从PPA安装
我构建了一个Deb包(仅限Bionic),具有合适的依赖关系:
sudo add-apt-repository ppa:malteworld/ppa sudo apt update sudo apt install pdftk
该软件包包含一个放在/usr/bin
中的包装脚本,因此您可以正常调用它:
pdftk ...
从源代码安装
-
安装构建工具和依赖项:
sudo apt install git default-jdk-headless ant \ libcommons-lang3-java libbcprov-java
当然,您可以使用与
default-jdk-headless
提供的JDK不同的受支持JDK。 -
下载Marc Vinyal的pdftk分叉 :
git clone https://gitlab.com/pdftk-java/pdftk.git cd pdftk
-
将所需库的符号链接放入
libs
目录:mkdir libs ln -st libs /usr/share/java/{commons-lang3,bcprov}.jar
-
构建JAR包:
ant jar
-
运行JAR包:
java -jar build/jar/pdftk.jar --help
-
(可选)要运行JAR包,例如,当您将其分发到其他系统时,至少需要一个工作(无头)JRE,例如
default-jre-headless
包以及Java库libcommons-lang3-java
和libbcprov-java
:sudo apt install default-jre-headless libcommons-lang3-java libbcprov-java
同样,您可以使用与
default-jre-headless
不同的JRE。 此pdftk分支还支持较旧JRE版本的构建(根据文档,≥7)。 -
(可选)您可以通过
update-binfmts(8)
教Linux执行JAR(Java Archive)文件。 Deb软件包中包含的大多数JRE,包括Canonical软件包存储库中的JRE,在安装过程中都会处理这些问题,尽管在某些OpenJDK软件包中似乎存在问题。
PS:我在Ubuntu Trusty中使用非无头OpenJDK 9尝试了这个,但是我发现为什么它不适用于Bionic的无头OpenJDK 10。
对于Ubuntu 18.04,只需安装pdftk snap包:
sudo snap install pdftk
在Ubuntu 18.04 amd64上安装pdftk
我写了一个小的bash脚本,自动安装Ubuntu 18.04上的安装。 请注意,我只下载了amd64软件包!
#!/bin/bash # # author: abu # date: May 12 2018 # description: bash script to install pdftk on Ubuntu 18.04 for amd64 machines ############################################################################## # # change to /tmp directory cd /tmp # download packages wget http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-6/libgcj17_6.4.0-8ubuntu1_amd64.deb \ http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-defaults/libgcj-common_6.4-3ubuntu1_all.deb \ http://mirrors.kernel.org/ubuntu/pool/universe/p/pdftk/pdftk_2.02-4build1_amd64.deb \ http://mirrors.kernel.org/ubuntu/pool/universe/p/pdftk/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
这个脚本会将软件包下载到/tmp
并使用apt install
命令从那里apt install
! 然后将删除/tmp
目录中的包。
要运行此脚本,请在编辑器中将其复制并保存,例如pdftk_installer 。 然后在终端中运行它
chmod 755 pdftk_installer ./pdftk_installer
您可以尝试使用安装了pdftk的Ubuntu 16.04的docker镜像来运行pdftk:
-
安装docker:
sudo apt install docker.io
-
拉Ubuntu 16.04并运行一个bash shell:
sudo docker run -it ubuntu:16.04 bash
-
从容器提示符更新并安装pdftk:
apt update apt install pdftk
-
在新的终端运行:
sudo docker ps -a
-
使用ubuntu:16.04的CONTAINER ID将图像提交到安装了pdftk的新图像:
sudo docker commit CONTAINER_ID ubuntu_pdftk
(将
CONTAINER_ID
替换为您的容器ID。) -
在
/usr/bin
创建一个名为pdftk
的文件,然后使用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
我能够从artful(17.10)deb软件包安装pdftk。 按顺序下载并安装:
- libgcj里常见
- libgcj17
- PDFTK
如果你从cli做到这一点,最好先安装gcc-6-base
以避免依赖性错误。
那应该是诀窍……现在。
为了让PDFTK在Bionic下运行,我做了一个快速而又肮脏的解决方法。
lsb_release -a && pdftk --version No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04 LTS Release: 18.04 Codename: bionic pdftk 2.02 a Handy Tool for Manipulating PDF Documents Copyright (c) 2003-13 Steward and Lee, LLC - Please Visit: www.pdftk.com
我更新了sources.list
并包含以下行:
deb http://no.archive.ubuntu.com/ubuntu/ artful main restricted deb http://no.archive.ubuntu.com/ubuntu/ artful-updates main restricted deb http://no.archive.ubuntu.com/ubuntu/ artful universe deb http://no.archive.ubuntu.com/ubuntu/ artful-updates universe deb http://no.archive.ubuntu.com/ubuntu/ artful multiverse deb http://no.archive.ubuntu.com/ubuntu/ artful-updates multiverse deb http://no.archive.ubuntu.com/ubuntu/ artful-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu artful-security main restricted deb http://security.ubuntu.com/ubuntu artful-security universe deb http://security.ubuntu.com/ubuntu artful-security multiverse
之后我跑了一个简单的
sudo apt update
使更改生效。
然后通过安装pdftk
sudo apt install pdftk
然后再次从source.list中删除Artful源代码,这就是我在Bionic下运行PDFTK的方法。
资料来源: https : //christiandietze.de/pdftk-with-ubuntu-bionic-18-04/
多么好的机会使用一些docker魔术!
我做的是使用运行ubuntu 16.04的docker容器,在其中安装pdftk并在那里运行它。
如果您想要做同样的事情,以下是确切的步骤:
- 如果您还没有安装docker( https://docs.docker.com/install/ )
- 创建一个名为
pdftk
的目录 - 在
pdftk
目录中创建一个名为pdftk
目录 - 将此Dockerfile复制到
pdftk/docker
docker目录: https : //github.com/gkotian/gautam_linux/blob/master/docker/pdftk/Dockerfile - 将此脚本复制到
pdftk/docker
目录: https : //github.com/gkotian/gautam_linux/blob/master/scripts/dockershell - 确保
dockershell
脚本是可执行的 - 进入
pdftk
目录,复制您要使用的所有pdf文件 -
cd /path/to/pdftk
- 使用Dockerfile的路径运行dockershell脚本:
docker/dockershell docker/Dockerfile
(这在您第一次运行时需要一些时间)
现在你应该在docker容器中有一个提示符,你可以在那里运行pdftk。 完成后,键入exit
退出容器并返回主机。 任何新生成的文件都将出现在pdftk
目录中(但它们将归root所有,因此您可能需要根据需要更改所有权)。
我在WSL上运行的18.04上做了以下操作
从(.deb文件)获取依赖项:
- libgcj-common(下载: https ://packages.ubuntu.com/artful/libgcj-common)
- libgcj17(下载地址: https ://packages.ubuntu.com/artful/libgcj17)
wget http://hr.archive.ubuntu.com/ubuntu/pool/main/g/gcc-6/libgcj17_6.4.0-8ubuntu1_amd64.deb
wget http://mirrors.edge.kernel.org/ubuntu/pool/main/g/gcc-defaults/libgcj-common_6.4-3ubuntu1_all.deb
sudo apt install gcc-6-base
然后安装上面的依赖项
sudo dpkg -i libgcj*
然后我从https://packages.debian.org/search?keywords=pdftk上获取了.deb
wget http://ftp.us.debian.org/debian/pool/main/p/pdftk/pdftk_2.02-4+b2_amd64.deb sudo dpkg -i pdftk_2.02-4+b2_amd64.deb
- 破坏apt,由于未满足的依赖性而无法更新libglvnd(Nvidia)
- Ubuntu 18.04的Capslock指标
- 如何在ubuntu 18.04上安装smb共享
- 18.04已经安装了一些安全吗?
- Ubuntu 18.04:切换回/ etc / network / interfaces
- 华硕ROG STRIX Z370-E无线无法正常工作(续)
- 如何在Ubuntu 17.10及更高版本的Ubuntu基座上启用“最小化点击”?
- Ubuntu 18.04 / w Macbook Pro:Kworker不断占用我的CPU
- 是否有可能使Popper邮件通知在Ubuntu 16.04和18.04(MATE和Unity)上运行?