Q4312079q是否有可能在Ubuntu 18.04中工作?

或者,有人知道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


,但是找不到工作工具。

评论

和PDF链!这两个工具对我来说是无价的!

不要只写“您可以尝试...”,解释如何做以及为使答案更有用而必须遵循的步骤

如果您自己解决了问题,请回答您自己的问题并接受您的回答。不要在您的问题或评论中添加答案! :-)我可以自由地还原添加答案的更改,但是您始终可以通过其下方的链接查看帖子的历史记录。

仅供参考,pdftk已从存储库中删除,并且有功能要求将其重新添加。

遗憾的是,仅仅因为开发人员找不到可接受的解决方案而删除了如此好的工具

#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-headlesslibcommons-lang3-javalibbcprov-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-getxenial.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