pdftk 在主文件夹中工作,但在 www 中不工作

pdftk 在主文件夹中工作,但在 www 中不工作

我已经pdftk在 Ubuntu 18.04 中使用 snap 进行了安装:

sudo snap install pdftk

在我的主文件夹中pdftk运行良好:

root@localhost:/home# a.pdf output secure.128.pdf owner_pw 123456

root@localhost:/home# ls
a.pdf  secure.128.pdf

但在/var/www文件夹中它不起作用:

root@localhost:/var/www/multi/pdfs# ls
a.pdf

root@localhost:/var/www/multi/pdfs# pdftk a.pdf output secure.128.pdf owner_pw 123456
Error: Unable to find file.
Error: Failed to open PDF file: 
a.pdf
Errors encountered.  No output created.
Done.  Input errors, so no output created.

答案1

作为steeldriver 评论道,这可能与pdftk作为 snap 应用程序安装有关。如果您愿意,可以检查帖子 steeldriver 链接看看该pdftksnap 程序是否支持访问外部文件~

我建议你使用非 snap 版本的pdftk。不幸的是,Ubuntu 18.04 的默认存储库中没有包含它pdftk(幸运的是,20.04 有它),因此必须从源代码构建它。我引用了David Foerster 的回答有关如何构建它:

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

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

    当然,您可以使用与 提供的 JDK 不同的受支持的 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 包,例如当您将其分发到其他系统时,您至少需要一个可以正常工作的(无头)JRE(类似于包中的)default-jre-headless以及 Java 库 libcommons-lang3-javalibbcprov-java

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

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

  7. (可选)您可以通过以下方式教 Linux 执行 JAR(Java 存档)文件 update-binfmts(8). Deb 包中附带的大多数 JRE(包括 Canonical 包存储库中的 JRE)在安装过程中都会处理这个问题,尽管在某些 OpenJDK 包中它似乎存在缺陷。

相关内容