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
しかし、機能するツールは見つかりませんでした。
buntuのpdftkパッケージ (およびその上流の Debianパッケージ )は、廃止されたGCJランタイムへの依存性のために削除されました。代わりにOpenJDKなどに依存するフォークを見つけました。
Cosmic(Ubuntu 18.10)以降、Ubuntuは以下と同じソースコードからpdftk-Java
を代替品として出荷しています。 pdftk
をインストールしようとすると、代わりにこのパッケージがインストールされます。以前のリリースのユーザーは パッケージリポジトリから手動でダウンロード を使用して、お気に入りのパッケージマネージャーでインストールできます。
適切な依存関係を持つDebパッケージ(Bionicのみ)を作成しました。
Sudo add-apt-repository ppa:malteworld/ppa Sudo apt update Sudo apt install pdftk
パッケージには/usr/bin
に配置されたラッパースクリプトが含まれているため、通常どおりに呼び出すことができます。
pdftk <arguments> ...
ビルドツールと依存関係をインストールします。
Sudo apt install git default-jdk-headless ant \
libcommons-lang3-Java libbcprov-Java
もちろん、default-jdk-headless
が提供するものとは異なるサポートされているJDKを使用できます。
ダウンロード Marc Vinyalのpdftkフォーク :
git clone https://gitlab.com/pdftk-Java/pdftk.git
cd pdftk
必要なライブラリへのシンボリックリンクをlib
フォルダーに配置します。
mkdir lib
ln -st lib /usr/share/Java/{commons-lang3,bcprov}.jar
JARパッケージをビルドします。
ant jar
JARパッケージを実行します。
Java -jar build/jar/pdftk.jar --help
(オプション)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以上)のビルドもサポートしています。
(オプション) update-binfmts(8)
を使用して、JAR(Javaアーカイブ)ファイルを実行するようLinuxに教えることができます。 Canonicalのパッケージリポジトリを含むDebパッケージで出荷されたほとんどのJREは、インストール中にそれを処理しますが、一部のOpenJDKパッケージではバグがあるようです。
追伸:Ubuntu Trustyの非ヘッドレスOpenJDK 9でこれを試しましたが、BionicのヘッドレスOpenJDK 10では動作しない理由はほとんどありません。
コメンターは、依存する PDF Chain アプリケーションがこの変更の影響を受けるかどうかについて、有効な質問を投げかけました。
Ubuntu 18.04の場合、pdftk snapパッケージをインストールするだけです:
Sudo snap install 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
Pdftkを実行するためにpdftkをインストールしたUbuntu 16.04のdockerイメージを使用してみてください:
Dockerをインストールします。
Sudo apt install docker.io
Ubuntu 16.04をプルし、bashシェルを実行します。
Sudo docker run -it ubuntu:16.04 bash
コンテナープロンプトからpdftkを更新してインストールします。
apt update
apt install pdftk
新しいターミナルで実行:
Sudo docker ps -a
Ubuntu:16.04のCONTAINER IDを使用して、pdftkがインストールされた新しいイメージにイメージをコミットします。
Sudo docker commit CONTAINER_ID ubuntu_pdftk
(CONTAINER_ID
をコンテナIDに置き換えます。)
/usr/bin
にpdftk
という名前のファイルを作成し、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
Artful(17.10)debパッケージからpdftkをインストールできました。次の順序でダウンロードしてインストールします。
Cliから行う場合、依存関係エラーを回避するために、最初にgcc-6-base
をインストールするのが最善です。
これでうまくいくはずです...今のところ。
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/
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分ほどかかります。次の実行はより高速になります。イメージは自由にクリーンアップできます。次回必要になったときにビルドされます。
@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
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
Dockerマジックを使用するなんて素晴らしい機会です!
私がしたことは、ubuntu 16.04を実行しているDockerコンテナを使用し、その中にpdftkをインストールして実行することでした。
同じことをしたい場合の正確な手順は次のとおりです。
pdftk
というディレクトリを作成しますdocker
ディレクトリ内にpdftk
というディレクトリを作成しますpdftk/docker
ディレクトリにコピーします。 https://github.com/gkotian/gautam_linux/blob/master/docker/pdftk/Dockerfilepdftk/docker
ディレクトリにもコピーします。 https://github.com/gkotian/gautam_linux/blob/master/scripts/dockershelldockershell
スクリプトが実行可能であることを確認してくださいpdftk
ディレクトリに、使用するすべてのpdfファイルをコピーしますcd /path/to/pdftk
docker/dockershell docker/Dockerfile
(最初に実行するときに時間がかかります)これで、dockerコンテナー内にpdftkを実行できるプロンプトが表示されます。完了したら、exit
と入力してコンテナを終了し、ホストマシンに戻ります。新しく生成されたファイルはpdftk
ディレクトリに存在します(ただし、それらはルートによって所有されるため、必要に応じて所有権を変更する必要があります)。
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
これは、ubuntu 18.04で機能します。
Sudo add-apt-repository ppa:malteworld/ppa
Sudo apt update
Sudo apt install pdftk