web-dev-qa-db-ja.com

Ubuntu 18.04以降にpdftkをインストールするにはどうすればよいですか?

Ubuntu 18.04でpdftk動作する可能性はありますか?これは、シェルで透かし付きのPDFファイルを作成するために必要です。

または、誰かが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

しかし、機能するツールは見つかりませんでした。

100
WiKrIe

buntuのpdftkパッケージ (およびその上流の Debianパッケージ )は、廃止されたGCJランタイムへの依存性のために削除されました。代わりにOpenJDKなどに依存するフォークを見つけました。

将来のUbuntuリリースからインストールする(推奨)

Cosmic(Ubuntu 18.10)以降、Ubuntuは以下と同じソースコードからpdftk-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
    

    もちろん、default-jdk-headlessが提供するものとは異なるサポートされているJDKを使用できます。

  2. ダウンロード Marc Vinyalのpdftkフォーク

    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パッケージを実行するには、e。 g。他のシステムに配布する場合は、Javaライブラリdefault-jre-headlessおよびlibcommons-lang3-Javaだけでなく、libbcprov-Javaパッケージなどの少なくとも機能する(ヘッドレス)JREが必要です。 :

    Sudo apt install default-jre-headless libcommons-lang3-Java libbcprov-Java
    

    ここでも、default-jre-headlessとは異なるJREを使用できます。このpdftkフォークは、古いJREバージョン(ドキュメントによると7以上)のビルドもサポートしています。

  7. (オプション) update-binfmts(8) を使用して、JAR(Javaアーカイブ)ファイルを実行するようLinuxに教えることができます。 Canonicalのパッケージリポジトリを含むDebパッケージで出荷されたほとんどのJREは、イン​​ストール中にそれを処理しますが、一部のOpenJDKパッケージではバグがあるようです。

追伸:Ubuntu Trustyの非ヘッドレスOpenJDK 9でこれを試しましたが、BionicのヘッドレスOpenJDK 10では動作しない理由はほとんどありません。

依存するアプリケーション

コメンターは、依存する PDF Chain アプリケーションがこの変更の影響を受けるかどうかについて、有効な質問を投げかけました。

  • NoPDF ChainはC++アプリケーションであり、GCJの非推奨の影響を直接受けません。動作するpdftk実行可能ファイルが必要ですが、内部でどのように動作するかは気にしません。いずれにせよ、PDF ChainはBionicからpdftkと同様に削除されました。
91
David Foerster

Ubuntu 18.04の場合、pdftk snapパッケージをインストールするだけです:

Sudo snap install pdftk
56
pgoetz

Ubuntu 18.04 AMD64でのpdftkのインストール

Ubuntu 18.04へのインストールを自動化する小さなbashスクリプトを作成しました。 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
34
abu_bua

Pdftkを実行するためにpdftkをインストールしたUbuntu 16.04のdockerイメージを使用してみてください:

  1. Dockerをインストールします。

    Sudo apt install docker.io
    
  2. Ubuntu 16.04をプルし、bashシェルを実行します。

    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. /usr/binpdftkという名前のファイルを作成し、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
    
10

Artful(17.10)debパッケージからpdftkをインストールできました。次の順序でダウンロードしてインストールします。

Cliから行う場合、依存関係エラーを回避するために、最初にgcc-6-baseをインストールするのが最善です。

これでうまくいくはずです...今のところ。

5
amha

Bionicの下でPDFTKを実行するための、迅速で汚い回避策を作成しました。

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
WiKrIe

Dockerを使用してUbuntu 18.04でpdftkを実行できます。これは、アデミールの答えの改良版です。

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 "$@"

ビルドされたイメージがマシン上に残る場合、最初の実行はイメージをビルドするのに2分ほどかかります。次の実行はより高速になります。イメージは自由にクリーンアップできます。次回必要になったときにビルドされます。

1
Ilya Sheershoff

@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
1
schumamol

Ademir's docker answerが好きですが、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
0
Don Kirkby

Dockerマジックを使用するなんて素晴らしい機会です!

私がしたことは、ubuntu 16.04を実行しているDockerコンテナを使用し、その中にpdftkをインストールして実行することでした。

同じことをしたい場合の正確な手順は次のとおりです。

  1. まだ持っていない場合はdockerをインストールします( https://docs.docker.com/install/
  2. pdftkというディレクトリを作成します
  3. dockerディレクトリ内にpdftkというディレクトリを作成します
  4. このDockerfileをpdftk/dockerディレクトリにコピーします。 https://github.com/gkotian/gautam_linux/blob/master/docker/pdftk/Dockerfile
  5. このスクリプトをpdftk/dockerディレクトリにもコピーします。 https://github.com/gkotian/gautam_linux/blob/master/scripts/dockershell
  6. dockershellスクリプトが実行可能であることを確認してください
  7. pdftkディレクトリに、使用するすべてのpdfファイルをコピーします
  8. cd /path/to/pdftk
  9. Dockerfileのパスを使用してdockershellスクリプトを実行します:docker/dockershell docker/Dockerfile(最初に実行するときに時間がかかります)

これで、dockerコンテナー内にpdftkを実行できるプロンプトが表示されます。完了したら、exitと入力してコンテナを終了し、ホストマシンに戻ります。新しく生成されたファイルはpdftkディレクトリに存在します(ただし、それらはルートによって所有されるため、必要に応じて所有権を変更する必要があります)。

0
Gautam

WSLで実行している18.04で、次のことを行いました

(.debファイル)から依存関係を取得します。

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
0

これは、ubuntu 18.04で機能します。

Sudo add-apt-repository ppa:malteworld/ppa
Sudo apt update
Sudo apt install pdftk
0
David Vielhuber