AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1028522
Accepted
WiKrIe
WiKrIe
Asked: 2018-04-27 11:40:41 +0800 CST2018-04-27 11:40:41 +0800 CST 2018-04-27 11:40:41 +0800 CST

如何在 Ubuntu 18.04 及更高版本中安装 pdftk?

  • 772

有没有机会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

但是没有找到工作工具。

software-installation pdf pdftk 18.04
  • 15 15 个回答
  • 98673 Views

15 个回答

  • Voted
  1. Best Answer
    David Foerster
    2018-04-28T13:56:37+08:002018-04-28T13:56:37+08:00

    Ubuntu 中的pdftk 包(及其上游Debian 包)由于依赖于现已弃用的 GCJ 运行时而被删除。我找到了一个依赖于 OpenJDK 或类似的分支。

    从未来的 Ubuntu 版本安装(推荐)

    从 Cosmic (Ubuntu 18.10) 开始,Ubuntupdftk-java使用与以下相同的源代码作为替代。尝试安装pdftk将改为安装此软件包。早期版本的用户可以从包存储库手动下载它,并使用他们最喜欢的包管理器进行安装。

    从 PPA 安装(过时)

    我构建了一个具有合适依赖项的 Deb 包(仅适用于 Bionic):

    sudo add-apt-repository ppa:malteworld/ppa
    sudo apt update
    sudo apt install pdftk
    

    该包包含一个放置在 中的包装脚本/usr/bin,因此您可以照常调用它:

    pdftk <arguments> ...
    

    从源安装

    1. 安装构建工具和依赖项:

      sudo apt install git default-jdk-headless ant \
          libcommons-lang3-java libbcprov-java
      

      当然,您可以使用不同的受支持 JDK,而不是default-jdk-headless.

    2. 下载Marc Vinyal 的 pdftk fork:

      git clone https://gitlab.com/pdftk-java/pdftk.git
      cd pdftk
      
    3. 将所需库的符号链接放入lib文件夹中:

      mkdir lib
      ln -st lib /usr/share/java/{commons-lang3,bcprov}.jar
      
    4. 构建 JAR 包:

      ant jar
      
    5. 运行 JAR 包:

      java -jar build/jar/pdftk.jar --help
      
    6. (可选)要运行 JAR 包,例如,当您将其分发到其他系统时,您至少需要default-jre-headless包中的工作(无头)JRE,以及 Java 库libcommons-lang3-java和libbcprov-java:

      sudo apt install default-jre-headless libcommons-lang3-java libbcprov-java
      

      同样,您可以使用与default-jre-headless. 此 pdftk fork 还支持旧 JRE 版本的构建(根据文档,≥ 7)。

    7. (可选)您可以教 Linux 通过update-binfmts(8). 大多数 JRE 在 Deb 包中提供,包括 Canonical 包存储库中的 JRE,在安装过程中会处理这些问题,尽管在某些 OpenJDK 包中似乎存在错误。

    PS:我在 Ubuntu Trusty 中使用非无头 OpenJDK 9 进行了尝试,但我看不出为什么它不应该与 Bionic 中的无头 OpenJDK 10 一起使用。

    取决于应用

    一位评论者提出了一个有效的问题,即依赖的PDF 链应用程序是否受到此更改的影响:

    • 不,PDF Chain是一个 C++ 应用程序,不受 GCJ 弃用的直接影响。它需要一个工作的pdftk可执行文件,但并不关心它在后台是如何工作的。无论如何,PDF Chain已从 Bionic 和pdftk中删除。
    • 124
  2. pgoetz
    2018-06-23T16:30:43+08:002018-06-23T16:30:43+08:00

    对于 Ubuntu 18.04,只需安装 pdftk snap 包:

    sudo snap install pdftk
    
    • 103
  3. abu_bua
    2018-06-15T00:42:34+08:002018-06-15T00:42:34+08:00

    在 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 文件):

     sudo mkdir -p /srv/chroot/xenial
    

    现在节目开始了,一边安装一边喝杯咖啡:

    sudo debootstrap xenial /srv/chroot/xenial 
    

    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
    

    再次检查文件是否/srv/chroot/xenial/etc/apt/sources.list存在

    cat /srv/chroot/xenial/etc/apt/sources.list
    

    是时候进入 xenial schroot(注意:不需要 root 权限!)并更新 apt

    schroot -c xenial -u root apt-get update
    

    最后,您已准备好安装pdftk package:

    schroot -c xenial -u root apt-get install pdftk
    

    您可以pdftk通过 schroot 调用它来使用它:

    schroot -c xenial -- pdftk <your arguments>
    

    例如显示帮助菜单类型

    schroot -c xenial -- pdftk --help
    

    .bashrc最后,我建议在您的文件中为 pdftk 创建一个别名:

    首先复制你的 .bashrc

    cp ~/.bashrc ~/.bashrc_backup
    

    然后添加别名

    echo alias pdftk='schroot -c xenial -- pdftk' >> ~/.bashrc
    

    现在您可以pdf在 bash 中照常使用了。测试打开一个新终端并输入

     pdftk --version
    

    如果您必须像我一样安装其他较旧的程序,请使用与上述类似的 apt 命令。

    请注意,除apt-get和之外的所有命令xenial.config都以用户权限执行。

    • 66
  4. David Vielhuber
    2019-08-15T14:42:41+08:002019-08-15T14:42:41+08:00

    这适用于 ubuntu 18.04:

    sudo add-apt-repository ppa:malteworld/ppa
    sudo apt update
    sudo apt install pdftk
    
    • 16
  5. Ademir F Furtado
    2018-04-29T13:02:06+08:002018-04-29T13:02:06+08:00

    您可以尝试使用安装了 pdftk 的 Ubuntu 16.04 的 docker 映像来运行 pdftk:

    1. 安装泊坞窗:

      sudo apt install docker.io
      
    2. 拉取 Ubuntu 16.04 并运行 bash shell:

      sudo docker run -it ubuntu:16.04 bash
      
    3. 从容器提示符更新并安装 pdftk:

      apt update
      apt install pdftk
      
    4. 在新的终端上运行:

      sudo docker ps -a
      
    5. 使用 ubuntu:16.04 的 CONTAINER ID 将图像提交到安装了 pdftk 的新图像:

      sudo docker commit CONTAINER_ID ubuntu_pdftk
      

      (替换CONTAINER_ID为您的容器 ID。)

    6. 创建一个名为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
      
    • 13
  6. Matang Ramdevputram
    2020-07-21T02:03:58+08:002020-07-21T02:03:58+08:00

    安装 pdftk snap 包。

    1. 跑:

       sudo snap install pdftk
      
    2. 执行以下操作以从 root 运行您的包,或者您想从节点运行等。

      从 snap 安装 Pdftk 后,您需要更改/snap/pdftk/current/usr/..Ubuntu 的路径以/usr进行替换,运行以下命令。

       sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
      

      或覆盖运行以下命令。

       sudo ln -fs /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
      
    3. 测试pdftk input.pdf cat output new.pdf

    • 8
  7. amha
    2018-05-02T00:12:57+08:002018-05-02T00:12:57+08:00

    我能够从巧妙的(17.10)deb 包中安装 pdftk。按以下顺序下载然后安装:

    • libgcj-通用
    • libgcj17
    • pdftk

    gcc-6-base如果从 cli安装,最好先安装以避免依赖错误。

    这应该可以解决问题……现在。

    • 5
  8. WiKrIe
    2018-05-02T11:27:30+08:002018-05-02T11:27:30+08:00

    我做了一个快速而肮脏的解决方法来让 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/

    • 2
  9. Don Kirkby
    2019-07-24T12:02:24+08:002019-07-24T12:02:24+08:00

    我喜欢Ademir 的docker 答案,但它在安全性和权限方面存在典型问题,因为 docker 必须以 root 身份运行。如果这让您感到困扰,请尝试使用Singularity。您需要以 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
    
    • 2
  10. Joel Kleier
    2020-06-13T05:34:28+08:002020-06-13T05:34:28+08:00

    为了让 pdftk 具体到 18.04,我发现这有效:

    1. 获取 18.10 版本的 deb forpdftk-java
    2. 从普通 18.04 存储库安装依赖项
    3. 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
    
    • 2

相关问题

  • 如何在没有 root 访问权限的情况下安装软件包?

  • 设置 LAMP 堆栈的最简单方法是什么?

  • 我应该在哪里安装 sagemath?

  • How do I install Adobe Flash player?对于 11.10 及更高版本明确修复 11.10 上的 64 位 Flash

  • 如何设置软件中心为非 root 用户安装软件?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve