或者,有人知道
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
,但是找不到工作工具。
#1 楼
由于依赖于现已弃用的GCJ运行时,因此删除了Ubuntu中的pdftk软件包(及其上游Debian软件包)。我找到了一个依赖于OpenJDK或类似版本的fork。 。尝试安装pdftk-java
将改为安装此软件包。较早版本的用户可以从软件包存储库手动下载它,并使用他们喜欢的软件包管理器进行安装。从PPA安装(过时)
我使用合适的依赖项:
sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk
该软件包包含位于
pdftk
中的包装脚本,因此您可以照常调用它: 安装构建工具和依赖项:
pdftk <arguments> ...
当然可以使用与
/usr/bin
提供的版本不同的受支持JDK。下载Marc Vinyal的pdftk fork:
sudo apt install git default-jdk-headless ant \
libcommons-lang3-java libbcprov-java
将所需库的符号链接放置到
default-jdk-headless
文件夹中: 构建JAR软件包:
git clone https://gitlab.com/pdftk-java/pdftk.git
cd pdftk
运行JAR软件包:
mkdir lib
ln -st lib /usr/share/java/{commons-lang3,bcprov}.jar
(可选)要运行JAR软件包,请e。 G。当将其分发到其他系统时,至少需要一个工作的(无头的)JRE,例如
lib
软件包以及Java库default-jre-headless
和libcommons-lang3-java
: libbcprov-java
。此pdftk分支还支持针对较旧的JRE版本的构建(根据文档,≥7)。(可选)您可以通过
default-jre-headless
指导Linux执行JAR(Java存档)文件。 Deb软件包附带的大多数JRE(包括Canonical软件包存储库中的JRE)在安装过程中都会解决这一问题,尽管在某些OpenJDK软件包中似乎存在错误。 Ubuntu Trusty中的非无头OpenJDK 9,但我看不出为什么它不能与Bionic中的无头OpenJDK 10配合使用。受此更改影响:否,PDF Chain是C ++应用程序,不受GCJ弃用的直接影响。它需要一个可运行的pdftk可执行文件,但不在乎它是如何工作的。无论如何,PDF Chain都从Bionic以及pdftk中删除。
评论
我正在阅读另一个有关安装另一个软件包的问题,该软件包已从18.04的仓库中删除,一个用户建议使用gdebi安装.deb软件包,该软件包应处理依赖项。您认为这行得通还是会产生一些问题?这可能是一个愚蠢的问题-我只是想进一步了解软件包管理。
–希珍
18年5月15日在16:22
此答案中的两组指令都安装了Marc Vinyal的pdftk-java fork。 (很可能)这将是Debian(请参阅)和Ubuntu(具有适用于18.10的软件包)中pdftk的正式替代品。因此,这似乎是最好的答案,因为它是“面向未来的”:从18.10开始,您将在官方存储库中获得相同的软件。
– Tanius
18年8月26日在16:59
@DavidFoerster在上面。问题:是否有特别的理由推荐使用apt而不是通过Gradle构建通过apt安装的库?
–拉斐尔
19年1月4日在10:01
在关于所述伪包的后续问题上,人们对pdftk-java的依赖关系是否正确选择产生了疑问。您可能要检查一下。
–拉斐尔
19年1月4日在12:10
我为提供由SDKMAN安装的Java的设备创建了软件包描述!作为满足pdftk-java依赖性的软件包。
–拉斐尔
19年1月4日在12:11
#2 楼
对于Ubuntu 18.04,只需安装pdftk snap软件包:sudo snap install pdftk
评论
符号链接对我不起作用,因为snap似乎需要脚本名称。但是最小的包装器脚本/snap/bin/pdftk-smoser.pdftk“ $ @”同样有效。
– Boldewyn
18年6月27日在20:30
我将上面的答案更新为仅使用“ pdftk”而不是“ pdftk”,因为我(smoser)已将名为“ pdftk”的快照上传到具有相同内容的商店。 (snapcraft.io/pdftk)
–smoser
18年7月12日在19:27
这似乎可以很好地安装,但是pdftk无法打开或无法处理任何文件(总是说“错误:无法找到文件。错误:无法打开PDF文件:”),也没有手册页。最后,我使用snap remove删除了它,并使用了上面的@abu_bua解决方案,效果很好。
–scoobydoo
18年7月30日在10:08
由于快照的设计要点,快照无法访问所有文件。有关此信息,请访问github.com/smoser/pdftk/issues/1。最简单的解决方案是将文件放在主目录中。
–smoser
18年8月7日在18:58
/ snap / bin /无论什么都可以工作一段时间,并且在Ubuntu 18.04上遇到各种权限被拒绝的问题而中断。对于pdftk,错误是java.io.FileNotFoundException。其他应用程序的失败列表无穷无尽。我不得不删除几乎所有的快照应用程序,并用apt替换它们。 Snap是目前在Ubuntu 18.04上最糟糕的事情。
– SYK
18-10-28在7:07
#3 楼
在Ubuntu 18.04 amd64上安装pdftk我编写了一个小的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
此脚本会将软件包下载到
/tmp
,并使用apt install
命令!然后,将删除/tmp
目录中的软件包。要运行此脚本,请在编辑器中将其复制并保存,例如pdftk_installer。然后在带有
chmod 755 pdftk_installer
./pdftk_installer
在Ubuntu 20.04 amd64上安装pdftk的终端中运行它。由于缺少Ubuntu 20.04上的gcc-6库,以上脚本将失败。但是,那些想避免使用snap或docker解决方案的人可以使用schroot。我知道这是一个非常大的过载-大约需要500MB;但是您可以使用此环境在Xenial(Ubuntu 16.04)环境中安装其他旧版本的程序,库,编译器等。
首先安装
schroot
软件包 sudo apt install schroot debootstrap
最后一个软件包是必需的安装debian-like系统。
现在将
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
验证是否写入了新的conf文件
cat /etc/schroot/chroot.d/xenial.conf
接下来创建xenial目录(如果您选择另一个目录,请更改上面的conf文件):现在可以在
/srv/chroot/xenial
上使用文件系统。现在是时候包含必需的xenial apt信息库了。为此,请键入
sudo mkdir -p /srv/chroot/xenial
再次检查文件
/srv/chroot/xenial/etc/apt/sources.list
是否存在sudo debootstrap xenial /srv/chroot/xenial
是时候输入xenial schroot(注意:不需要root特权!)并更新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
最后,您可以安装
pdftk package
了:cat /srv/chroot/xenial/etc/apt/sources.list
可以通过schroot调用
pdftk
来使用它:显示帮助菜单类型schroot -c bionic -u root apt-get update
最后,我建议在您的
.bashrc
文件中为pdftk创建别名: >现在,您可以像往常一样在bash中使用pdf
。要测试打开一个新终端并键入schroot -c xenial -u root apt-get install pdftk
如果必须安装其他较旧的程序,请使用与上述类似的apt命令。
请注意,使用用户权限执行
apt-get
和xenial.config
。评论
看起来pdftk-dbg_2.02-4build1_amd64.deb是可选的
–约瑟夫·哈鲁什(Jossef Harush)
18/12/19在17:29
这比PPA的快照版本或基于Java的版本要好得多-谢谢!
–西蒙
19年1月16日在4:29
为了提供一些解释,这似乎是下载Ubuntu-artful(17.10)软件包。
–兰德尔·惠特曼
19年3月12日在3:04
所有链接断开
–开发人员
19年5月31日上午10:10
链接现在更新!
– abu_bua
19年7月2日在20:13
#4 楼
适用于Ubuntu 18.04:sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk
评论
是。是的当您尝试使用olibia / inkscape-multipage-export(github.com/olibia/inkscape-multipage-export)时,这解决了Inkscape的问题。
–Geppettvs D'Constanzo
19-10-10在17:32
这对我来说在18.04中效果很好
– Divyesh Prajapati
20年4月19日在17:19
截至2020年5月1日对我不起作用。 PPA维护者表示它将消失,也许是时候到了。
–诺亚·邓肯(Noah Duncan)
20年5月1日在19:45
#5 楼
您可以尝试使用已安装pdftk的Ubuntu 16.04的Docker映像来运行pdftk:安装docker:
sudo apt install docker.io
拉Ubuntu 16.04并运行bash shell:
< pre class =“ lang-sh prettyprint-override”>
sudo docker run -it ubuntu:16.04 bash
从容器提示符更新并安装pdftk:
apt update
apt install pdftk
在新的终端上运行:
sudo docker ps -a
使用ubuntu:16.04的容器ID将图像提交到已安装pdftk的新图像:
sudo docker commit CONTAINER_ID ubuntu_pdftk
(用您的容器ID替换
CONTAINER_ID
。)在
pdftk
中创建名为/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
评论
几乎就是我所做的。除非,您在-v“ $ PWD:/ workdir $ PWD” -w“ / workdir $ PWD”中是否没有错误?
–恩德拉Žižka
18年6月12日在19:51
#6 楼
我能够从巧妙(17.10)的deb软件包中安装pdftk。下载并按以下顺序安装:libgcj-common
libgcj17
pdftk
最好先安装
gcc-6-base
以避免如果您从cli中执行依赖项错误。现在应该可以解决问题了。
#7 楼
安装pdftk snap软件包。运行:
sudo snap install pdftk
执行以下操作,从根目录运行软件包,或者您想从节点等运行。
一旦从snap安装Pdftk,就需要将
/snap/pdftk/current/usr/..
的路径更改为Ubuntu到/usr
,以替换运行以下命令。 。 sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
用
pdftk input.pdf cat output new.pdf
测试评论
得到了在线测试的支持。那就是我想要的功能,可能是我将要使用的所有功能。
–内森·查佩尔(Nathan Chappell)
20 Nov 16 '15:32
#8 楼
我做了一个快速而又肮脏的解决方法,以使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
以使更改生效。
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
然后再次从source.list中删除Artful来源,这就是我如何在Bionic下运行PDFTK的方法。 ://christiandietze.de/pdftk-with-ubuntu-bionic-18-04/
评论
嗨,克里斯蒂安,您介意更新您的答案以包括您的解决方法是什么吗?如果您在此处包含答案的基本部分,然后提供链接以供参考,则我们建议您这样做。谢谢!
– CalvT
18年5月1日19:31
是的,尤其是由于您链接到的站点似乎已关闭。
– terdon
18年5月2日在8:35
嗨,CalvT,我使用的解决方法是将artfull软件包添加至apt,安装pdftk并将其删除。而且,过去30天内我的网站没有关闭,所以我不知道为什么您不应该访问该网站。
– WiKrIe
18年5月7日在19:04
@WiKrIe您的网站有问题。我可以访问基本URL,但不能访问您链接的页面。 Wayback Machine也无法。 Google缓存不会加载它,但是会加载源。该页面上某处肯定有问题。因此,这就是terdon♦认为您的站点已关闭的原因。我也一样,直到我检查了。希望能有所帮助。
–Dɑvïd
18年6月1日在11:09
-1表示建议混合使用适用于不同Ubuntu版本的存储库,而没有适当的优先级规则。
–大卫·福斯特(David Foerster)
18年6月7日在10:33
#9 楼
我喜欢Ademir的docker答案,但是它具有安全性和权限方面的典型问题,因为docker必须以root身份运行。如果那样困扰您,请尝试使用奇点。您需要以根用户身份构建映像,但是任何用户都可以运行它。这是我使用的
Singularity
文件:# Generate the Singularity container to run pdftk from Ubuntu 16.04.
Bootstrap: docker
From: ubuntu:16.04
%help
pdftk was removed from Ubuntu 18.04, so this container packages up the old
version.
%post
apt-get update -qq
apt-get install -qq pdftk
%runscript
pdftk "$@"
然后我构建了映像。
sudo singularity build pdftk.simg Singularity
一旦成功,我将其安装到路径上的文件夹,以及将主文件夹设置为当前目录的包装脚本。 。
sudo mv pdftk.simg /usr/bin/
echo 'singularity run --home $PWD /usr/bin/pdftk.simg "$@"' > pdftk
sudo chown root:root pdftk
sudo chmod +x pdftk
sudo mv pdftk /usr/bin
现在我可以运行
pdftk
了。$ pdftk --version
pdftk 2.02 a Handy Tool for Manipulating PDF Documents
Copyright (c) 2003-13 Steward and Lee, LLC - Please Visit: www.pdftk.com
This is free software; see the source code for copying conditions. There is
NO warranty, not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
唯一的缺点是它是相当大的可执行文件,因为它包含完整的Ubuntu 16.04发行版。如果您要处理不在当前目录中的PDF文件,也可能会遇到麻烦。
$ ls -lh /usr/bin/pdftk*
-rwxr-xr-x 1 root root 53 Jul 23 12:32 /usr/bin/pdftk
-rwxr-xr-x 1 root root 88M Jul 23 12:06 /usr/bin/pdftk.simg
#10 楼
您可以使用docker在Ubuntu 18.04上运行pdftk。这是Ademir的答案的增强型。假设我们只需要pdftk的cli组件,并且在计算机上安装了docker。只需将以下脚本放在名称为
pdftk
且已设置可执行位的$ PATH上:#!/bin/bash
# Build or use cached image and tag with "local/local/ubuntu_pdftk", suppress
# output to maintain compatibility in case you are parsing the pdftk output.
# It will build the image if it's absent or use the cached one.
echo "FROM ubuntu:16.04
RUN apt-get update && \
apt-get install -y pdftk && \
rm -rf /var/lib/apt/lists/*" | docker build -t local/local/ubuntu_pdftk - 2>&1 > /dev/null
# Run the pdftk as current user
set -eu
docker run --name pdftk -it --user $(id -u):$(id -g) --rm -v "$PWD:/workdir$PWD" -w "/workdir$PWD" local/local/ubuntu_pdftk pdftk "$@"
如果运行内置映像将保留在计算机上,下次运行将更快。您可以自由清理图像,下次需要时将生成该图像。
#11 楼
@abu_bua发布的脚本中的下载链接似乎不再起作用(可能是因为终止了对17.10的支持?),因此,这是该脚本的修改版本,使用了16.04版本中的相应软件包。在运行18.04的计算机上进行了测试。#!/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.edge.kernel.org/ubuntu/pool/main/g/gcc-5/libgcj16_5.4.0-6ubuntu1~16.04.10_amd64.deb \
http://mirrors.edge.kernel.org/ubuntu/pool/main/g/gcc-defaults/libgcj-common_4.9.3-9ubuntu1_all.deb \
http://mirrors.edge.kernel.org/ubuntu/pool/universe/p/pdftk/pdftk_2.02-4_amd64.deb \
http://mirrors.edge.kernel.org/ubuntu/pool/universe/p/pdftk/pdftk-dbg_2.02-4_amd64.deb
echo -e "Packages for pdftk downloaded\n\n"
# install packages
echo -e "\n\n Installing pdftk: \n\n"
sudo apt-get install ./libgcj16_5.4.0-6ubuntu1~16.04.10_amd64.deb \
./libgcj-common_4.9.3-9ubuntu1_all.deb \
./pdftk_2.02-4_amd64.deb \
./pdftk-dbg_2.02-4_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 ./libgcj16_5.4.0-6ubuntu1~16.04.10_amd64.deb
rm ./libgcj-common_4.9.3-9ubuntu1_all.deb
rm ./pdftk_2.02-4_amd64.deb
rm ./pdftk-dbg_2.02-4_amd64.deb
#12 楼
为了将pdftk专门安装到18.04,我发现这可行: br /> dpkg从18.10下载的pdftk-java软件包安装IE:
$ wget wget http://launchpadlibrarian.net/383018194/pdftk-java_0.0.0+20180723.1-1_all.deb
$ sudo apt install default-jre-headless libcommons-lang3-java libbcprov-java
$ sudo dpkg -i pdftk-java_0.0.0+20180723.1-1_all.deb
#13 楼
我做的一个好机会!
我所做的就是使用运行ubuntu 16.04的docker容器,在其中安装pdftk
并在其中运行。 />如果要执行相同的操作,请按照以下步骤操作:
如果尚未安装docker,请安装docker(https://docs.docker.com/install /)
在名为
pdftk
的目录中创建目录在
docker
目录内的目录中创建名为pdftk
的目录将此Dockerfile复制到
pdftk/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
使用以下路径运行dockershell脚本Dockerfile:
docker/dockershell docker/Dockerfile
(这需要一些时间现在您应该在docker容器中有一个提示,您可以在其中运行
pdftk。完成后,键入
exit
退出容器并返回到主机。任何新生成的文件将出现在
pdftk
目录中(但它们将由root拥有,因此您可能需要根据需要更改所有权)。#14 楼
在以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
评论
libgcj和libgcj17的链接已断开。
– HJLebbink
19年5月27日在20:40
@HJLebbink Ubuntu不再保持巧妙:(库链接
–爱德华(Eduard Florinescu)
19年5月30日在19:02
评论
和PDF链!这两个工具对我来说是无价的!不要只写“您可以尝试...”,解释如何做以及为使答案更有用而必须遵循的步骤
如果您自己解决了问题,请回答您自己的问题并接受您的回答。不要在您的问题或评论中添加答案! :-)我可以自由地还原添加答案的更改,但是您始终可以通过其下方的链接查看帖子的历史记录。
仅供参考,pdftk已从存储库中删除,并且有功能要求将其重新添加。
遗憾的是,仅仅因为开发人员找不到可接受的解决方案而删除了如此好的工具