【问题标题】:How do I install Pdftk on my server?如何在我的服务器上安装 Pdftk?
【发布时间】:2010-06-30 05:49:21
【问题描述】:

我正在使用 Linux 服务器并正在尝试安装 Pdftk,但我在试图弄清楚到底要做什么时遇到了问题。

我找到了有关如何安装它的以下文档,但它们主要指的是在本地 Windows 机器上安装它。

他们是: http://www.andrewheiss.com/blog/2009/07/29/installing-pdftk-php/

http://www.accesspdf.com/pdftk/#packages

谁能帮我弄清楚我需要将哪些文件放在我的服务器上以便我可以参考 pdftk?

【问题讨论】:

  • 什么发行版和版本?
  • 您链接的第一个指令确实包含 linux 指令...第一步可能是将 tarball 解压缩到 /var/www/ 中的目录中(或类似的,取决于)...

标签: php linux pdftk


【解决方案1】:

Pdftk 是 iText 的一个版本,它已从 Java 转换为 c++,并使用命令行桥重新构建,以便从 PHP 应用程序轻松访问。

要在 Redhat / CentOS 上构建 pdftk,请按照以下说明操作。

ssh [server to install pdftk on]

现在我们在服务器中,我们需要创建目录来存储 pdftk。

cd /
sudo mkdir extra
cd extra
sudo mkdir src
cd src
sudo wget http://www.pdfhacks.com/pdftk/pdftk-1.41.tar.gz
sudo tar zxvf pdftk-1.41.tar.gz
cd pdftk-1.41/pdftk

现在我们需要安装 gcj 库。

sudo yum install java-1.4.2-gcj-compat-devel.i386

gcc-c++ 库没有随 gcj 包一起安装,所以我们现在就安装它,所以在编译过程中不会出现错误。

sudo yum install gcc-c++

如果您现在编译应用程序,您将收到一条警告说 tmpnam 使用起来很危险,您应该使用 mkstemp。

sudo vi report.cc

在 VI 中运行它来搜索和替换 tmpnam 方法。

:%s/tmpnam(/mkstemp(/g

按下退出键并保存更改

:wq!

现在我们已经安装了所有的包,我们将开始编译 pdftk-1.41

从 /extra/src/pdftk-1.41/pdftk 运行以下命令

sudo make -f Makefile.RedHat

这将启动编译过程并将 java 文件转换为 c++。将 iText 转换为 c++ 可能需要几分钟。去休息室用我们新的玛格丽塔机器给自己拿一杯玛格丽塔:)。

现在创建 pdftk 文件后,我们希望将其复制到 /bin 目录,以便我们可以在任何地方运行它。

sudo cp pdftk /usr/local/bin

让我们确保构建成功并运行

pdftk --version

【讨论】:

  • 我已按照您的说明安装 pdftk ...并且 pdftk --version 运行正常
  • 但我不能让它通过 php 运行..为什么?
  • 我正在尝试按照您的指示在我的 VPS 上安装 PDFTK。我去sudo yum install java-1.4.2-gcj-compat-devel.i386。执行该命令后,我会收到回复:Setting up Install Process Setting up repositories imhbase 100% |=========================| 951 B 00:00 serverdensity 100% |=========================| 951 B 00:00 not using ftp, http[s], or file for repos, skipping - 4 is not a valid release or hasnt been released yet Cannot find a valid baseurl for repo: update Error: Cannot find a valid baseurl for repo: update
  • 您好,感谢您的详细说明。我需要采取额外的步骤:编辑 Makefile.Redhat 文件,并将 export VERSUFF= 更改为 export VERSUFF=""。在此之前,make 会不做任何工作就退出。
  • 如果您将 wget 更改为 pdflabs.com/tools/pdftk-the-pdf-toolkit//pdftk-1.45-src.zip,则适用于 Centos 6.3 上的 1.45 版
【解决方案2】:

到 2020 年,情况有所不同。 CentOS 6 即将退出,pdftk 只能支持CentOS 5/6。 CentOS 7 上的 GCJ 已被删除,因此从源代码安装也不容易。但是我们现在有了 docker:

FROM centos:centos6
RUN yum install -y https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.el6.x86_64.rpm

然后使用docker build . -t pdftk 构建并运行为:

docker run -it --rm -v $PWD:/data --workdir /data pdftk pdftk ./input.pdf output ./output.pdf

如果幸运的话,上面的例子可以修复一个丢失十几KB数据的pdf文件。

【讨论】:

    【解决方案3】:

    截至 2021 年,有 pdftk-java:将基于 GCJ 的原始 PDFtk 移植到 Java,对于 Fedora 33+ 和 EPEL 7+(后者用于 CentOS、RHEL 或 Rocky)是 currently on the way to the repositories,允许 @ 987654323@ 成功(一旦包到达稳定存储库)。

    编辑:自昨天 2021 年 10 月 29 日起,pdftk-java 包就在稳定的存储库中。

    【讨论】:

      【解决方案4】:

      正如@rsc 所说,pdftk-java 将可用于 Rocky Linux,但目前(2021.10.28)仍无法通过yum 安装。

      幸运的是,有一个针对 x86_64 GNU/Linux 系统的内置命令,不需要任何运行时依赖项。所以我们可以如下使用它

      # the version number might be updated, check https://gitlab.com/pdftk-java/pdftk
      wget https://gitlab.com/pdftk-java/pdftk/-/jobs/1527259632/artifacts/raw/build/native-image/pdftk
      chmod +x pdftk
      ./pdftk ...
      

      它在具有以下系统信息的服务器中运行良好,

      $ lsb_release -a
      LSB Version:    :core-4.1-amd64:core-4.1-noarch
      Distributor ID: Rocky
      Description:    Rocky Linux release 8.4 (Green Obsidian)
      Release:    8.4
      Codename:   GreenObsidian
      

      【讨论】:

      • 自昨天 2021 年 10 月 29 日起,pdftk-java 包就在稳定的存储库中。鉴于它通过常规dnf update 接收更新,因此应该首选 RPM 包而不是手动下载的静态构建。
      • @rsc,感谢您的信息。
      猜你喜欢
      • 1970-01-01
      • 2013-09-06
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 2019-07-09
      • 2014-08-15
      • 2015-12-06
      相关资源
      最近更新 更多