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


105

pdftkUbuntu 18.04で動作する可能性はありますか?これは、シェルに透かしのある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

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


3
PDFチェーンも!これらの2つのツールは私にとって非常に貴重でした!
Joshp.23

3
「試してみてください...」と書くだけでなく、その方法と、回答をより役立つものにするために従うべき手順を説明してください
-ADDB

1
自分で問題を解決した場合は、ご自身の質問に答えて回答を受け入れてください。質問やコメントに答えを入れないでください!:-)私は自由に答えを追加した変更を元に戻しましたが、その下のリンクから投稿の履歴をいつでも確認できます。
デビッドフォースター


2
開発者が受け入れ可能な解決策を見つけられなかったという理由だけで、このような素晴らしいツールが削除されたことは残念です
ダニエルアルダー

回答:


92

Ubuntupdftkパッケージ(およびその上流の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とは異なる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パッケージを実行するには、たとえば、他のシステムに配布する場合default-jre-headless、Javaライブラリーlibcommons-lang3-javaと同様に、パッケージからのような(ヘッドレス)JREが少なくとも必要ですlibbcprov-java

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

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

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

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

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

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

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

18.04のリポジトリから削除された別のパッケージのインストールに関する別の質問を読んでいて、1人のユーザーが依存関係を処理するgdebiを使用して.debパッケージをインストールすることを提案しました。それはうまくいくと思いますか、それとも問題を引き起こすと思いますか?それは馬鹿げた質問かもしれません-私はパッケージ管理についてもっと理解しようとしています。
ヒジン

5
この回答の指示の両方のセットは、Marc Vinyalのpdftk-javaフォークをインストールします。これは(非常に)pdftkDebian(を参照)およびUbuntu(18.10で利用可能なパッケージを使用)の公式の代替品になります。したがって、これは「将来の証拠」であるため、最良の答えのようです。18.10以降、公式リポジトリで同じソフトウェアが提供されます。
タニウス

@DavidFoersterその上。質問:antビルドにGradleを使用して、apt経由でライブラリをインストールすることを推奨する特別な理由はありますか?
ラファエル

で、フォローアップの質問とダミーパッケージについて、疑問がの依存性が生じたかどうかについてpdftk-javaは周知であり、選択しました。あなたはそれをチェックアウトしたいかもしれません。
ラファエル

SDKMANによってインストールされたJavaを提供するequivsのパッケージの説明を作成しました!の依存関係を満たすパッケージとしてpdftk-java
ラファエル

61

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

sudo snap install pdftk

1
snapスクリプト名が必要だと思われるため、シンボリックリンクは機能しませんでした。しかし、最小限のラッパースクリプトで/snap/bin/pdftk-smoser.pdftk "$@"も同様に機能します。
ボルデウィン

Ubuntuのバージョンは何ですか?上記の正確な指示はうまくいきました。私はいくつかのperl xml処理スクリプトからpdftkを呼び出します。酸テストはスクリプトが機能し、マージされたpdfを生成します。
pgoetz

3
私(smoser)は同じコンテンツで「pdftk」という名前のスナップをストアにアップロードしたため、「pdftk」ではなく「pdftk」を使用するように上記の回答を更新しました。(snapcraft.io/pdftk
smoser

4
これは正常にインストールされたように見えますが、pdftkはどのファイルでも開かず、動作しません(常に「エラー:ファイルが見つかりません。エラー:PDFファイルを開けません:」と表示されます)。最後に、スナップ削除で削除し、上記の@abu_buaソリューションを使用しました。これは完全に機能します。
scoobydoo

1
スナップの設計ポイントにより、スナップはすべてのファイルにアクセスできません。これに関するいくつかの情報はgithub.com/smoser/pdftk/issues/1で入手できます。最も簡単な解決策は、ホームディレクトリにファイルを配置することです。
喫煙者

36

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

このスクリプトは/tmpapt installコマンドを使用してパッケージをダウンロードし、そこからインストールします!その後、/tmpディレクトリ内のパッケージが削除されます。

このスクリプトを実行するには、エディターでコピーして保存します(例:pdftk_installer)。次に、ターミナルでそれを実行します

chmod 755 pdftk_installer
./pdftk_installer

pdftk-dbg_2.02-4build1_amd64.debオプションのように見える
ジョセフハーラッシュ

これは、スナップバージョンまたはPPAのJavaベースのバージョンよりもはるかに望ましい方法です-ありがとう!
サイモン

説明を提供するために、これはUbuntu-artful(17.10)パッケージをダウンロードするようです。
ランドールホイットマン

3
すべてのリンクが壊れています
開発者

1
リンクが更新されました!
abu_bua

10

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. 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

ほぼ正確に私がやった。を除いて、間違いはあり-v "$PWD:/workdir$PWD" -w "/workdir$PWD"ませんか?
Ondraジシュカ

5

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

gcc-6-basecliから行う場合、依存関係エラーを回避するために、最初にインストールすることをお勧めします。

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


2

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/


5
こんにちはクリスチャン、あなたの回避策が何であるかを含めるためにあなたの答えを更新してくれませんか?私たちは、好むあなたがここに答えの重要な部分が含まれ、その後の参照のためのリンクを提供する場合。ありがとう!
CalvT

1
はい。特に、リンク先のサイトがダウンしているようです。
テルドン

こんにちはCalvT、私が使用する回避策は、単にaptにartfullパッケージを追加し、pdftkをインストールし、それらを削除することです。そして、私のサイトは過去30日以内にダウンしなかったので、なぜサイトにアクセスしてはいけないのかわかりません。
WiKrIe

@WiKrIeサイトに問題があります。ベースURLにアクセスできますが、リンクしたページにはアクセスできません。Wayback Machineもできません。Googleキャッシュはそれをロードしませんが、ソースをロードします。そのページのどこかに問題があるはずです。そのため、terdon♦はサイトがダウンしていると考えました。だから私はチェックするまでやりました。お役に立てば幸いです。
デビッド

1
適切な優先順位ルールなしで、異なるUbuntuリリース向けのリポジトリを混在させる提案については-1。
デビッドフォースター


1

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

@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

私はAdemirの docker answerが好きですが、dockerはrootとして実行する必要があるため、セキュリティと権限に関する典型的な問題があります。それが気になる場合は、Singularityを使用してみてください。イメージをルートとしてビルドする必要がありますが、その後はすべてのユーザーが実行できます。

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

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(最初に実行するときに時間がかかります)。

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


0

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*

次に.debhttps://packages.debian.org/search?keywords = pdftkから取得しました

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

1
libgcjとlibgcj17のリンクが壊れています。
HJLebbink

1
@HJLebbink Ubuntuはもはや巧妙ではありません:(ライブラリリンク
Eduard Florinescu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.