Existe-t-il une chance de faire fonctionner pdftk
sous Ubuntu 18.04? J'ai besoin de cela pour créer des fichiers PDF avec un filigrane dans Shell.
Ou, connaissez-vous une alternative fonctionnelle à pdftk
pour générer un PDF avec un filigrane dans un shell?
Je les vérifie/les teste déjà tous:
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
Mais n'a pas trouvé un outil de travail.
Le paquet pdftk dans Ubunt (et son amont paquet Debian ) a été abandonné en raison de sa dépendance à l'exécution de GCJ, désormais obsolète. J'ai trouvé un fork qui dépend d'OpenJDK ou similaire à la place.
À partir de Cosmic (Ubuntu 18.10), Ubuntu fournit pdftk-Java
à partir du même code source que ci-dessous en remplacement. Tenter d'installer pdftk
installera ce paquet à la place. Les utilisateurs de versions antérieures peuvent le télécharger manuellement à partir du référentiel de paquets et l'installer avec leur gestionnaire de paquets préféré.
J'ai construit un paquet Deb (pour Bionic uniquement) avec des dépendances appropriées:
Sudo add-apt-repository ppa:malteworld/ppa Sudo apt update Sudo apt install pdftk
Le paquet contient un script de wrapper placé dans /usr/bin
, vous pouvez donc l'invoquer normalement:
pdftk <arguments> ...
Installez les outils de construction et les dépendances:
Sudo apt install git default-jdk-headless ant \
libcommons-lang3-Java libbcprov-Java
Bien entendu, vous pouvez utiliser un kit JDK pris en charge différent de celui fourni par default-jdk-headless
.
Télécharger fourche pdftk de Marc Vinyal :
git clone https://gitlab.com/pdftk-Java/pdftk.git
cd pdftk
Placez les liens symboliques vers les bibliothèques requises dans le dossier lib
name__:
mkdir lib
ln -st lib /usr/share/Java/{commons-lang3,bcprov}.jar
Construisez le paquet JAR:
ant jar
Exécutez le package JAR:
Java -jar build/jar/pdftk.jar --help
(Facultatif) Pour exécuter le package JAR, e. g. lorsque vous le distribuez sur d'autres systèmes, vous avez besoin d'au moins un JRE (sans tête) fonctionnel, issu du package default-jre-headless
, ainsi que de la bibliothèque Java, libcommons-lang3-Java
et libbcprov-Java
:
Sudo apt install default-jre-headless libcommons-lang3-Java libbcprov-Java
Là encore, vous pouvez utiliser un JRE différent de default-jre-headless
. Ce fork de pdftk prend également en charge les versions pour les anciennes versions de JRE (≥ 7 selon la documentation).
(Facultatif) Vous pouvez apprendre à Linux à exécuter des fichiers JAR (Java Archive) via update-binfmts(8)
. La plupart des JRE livrés dans les packages Deb, y compris ceux des référentiels de packages de Canonical, s’occupent de cela lors de l’installation, même si cela semble présenter des erreurs dans certains packages OpenJDK.
P.S .: J'ai essayé cela avec OpenJDK 9 sans tête dans Ubuntu Trusty, mais je vois peu de raisons pour lesquelles cela ne fonctionnerait pas avec OpenJDK 10 sans tête dans Bionic.
Un intervenant a soulevé la question valable de savoir si les applications dépendantes [Chaîne PDF ) étaient affectées par ce changement:
Pour Ubuntu 18.04, installez simplement le paquet d'instantané pdftk:
Sudo snap install pdftk
J'ai écrit un petit script bash qui automatise l'installation sur Ubuntu 18.04. Notez que j'ai téléchargé niquement AMD64 paquets!
#!/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.kernel.org/ubuntu/pool/main/g/gcc-6/libgcj17_6.4.0-8ubuntu1_AMD64.deb \
http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-defaults/libgcj-common_6.4-3ubuntu1_all.deb \
http://mirrors.kernel.org/ubuntu/pool/universe/p/pdftk/pdftk_2.02-4build1_AMD64.deb \
http://mirrors.kernel.org/ubuntu/pool/universe/p/pdftk/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
Ce script téléchargera les packages sur /tmp
et les installera à l’aide de la commande apt install
! Ensuite, les packages du répertoire /tmp
seront supprimés.
Pour exécuter ce script, copiez-le dans un éditeur et enregistrez-le, par exemple. pdftk_installer. Puis lancez-le dans un terminal avec
chmod 755 pdftk_installer
./pdftk_installer
Vous pouvez essayer d'utiliser une image de menu fixe d'Ubuntu 16.04 avec pdftk installé pour exécuter pdftk:
Installer le docker:
Sudo apt install docker.io
Tirez Ubuntu 16.04 et lancez un shell bash:
Sudo docker run -it ubuntu:16.04 bash
Mettez à jour et installez pdftk à partir du conteneur
apt update
apt install pdftk
Sur un nouveau terminal, exécutez:
Sudo docker ps -a
Commettez l’image en utilisant l’ID CONTAINER de ubuntu: 16.04 dans une nouvelle image sur laquelle pdftk est installé:
Sudo docker commit CONTAINER_ID ubuntu_pdftk
(Remplacez CONTAINER_ID
par votre ID de conteneur.)
Créez un fichier nommé pdftk
dans /usr/bin
puis rendez-le exécutable à l'aide de 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
J'ai pu installer pdftk à partir de paquets deb astucieux (17.10). Téléchargez puis installez, dans cet ordre:
Il est préférable d'installer gcc-6-base
en premier pour éviter les erreurs de dépendance si vous le faites à partir de cli.
Cela devrait faire l'affaire… pour l'instant.
J'ai fait une solution rapide et sale pour que PDFTK fonctionne sous Bionic.
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
Je mets à jour mon sources.list
et j'ajoute les lignes suivantes:
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
Après cela, je lance un simple
Sudo apt update
pour que les modifications prennent effet.
Puis installez pdftk via
Sudo apt install pdftk
Ensuite, supprimez à nouveau les sources Artful de la source.list et c’est ainsi que PDFTK fonctionne sous Bionic.
Source: https://christiandietze.de/pdftk-with-ubuntu-bionic-18-04/
Vous pouvez exécuter pdftk sur Ubuntu 18.04 avec docker. C'est une variante améliorée de la réponse d'Ademir.
En supposant que nous n’ayons besoin que d’un composant cli de pdftk et que docker soit installé sur la machine. Il suffit de placer le script suivant quelque part sur le $ PATH avec le nom pdftk
et le bit d’exécutable défini:
#!/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 "$@"
La première exécution prendra environ 2 minutes pour créer l’image, si l’image construite restera sur la machine, les exécutions suivantes seront plus rapides. Vous pouvez librement nettoyer l'image, elle sera construite lorsque vous en aurez besoin la prochaine fois.
Les liens de téléchargement dans le script posté par @abu_bua ne semblent plus fonctionner (probablement à cause de la fin du support de 17.10?), Voici donc une version modifiée du même script qui utilise les packages correspondants de la version 16.04. Essayé et testé sur une machine sous 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
Quelle belle occasion d'utiliser un peu de magie de docker!
Ce que j'ai fait est d'utiliser un conteneur Docker sous Ubuntu 16.04, installer pdftk à l'intérieur et l'exécuter.
Voici les étapes exactes si vous voulez faire la même chose:
pdftk
docker
à l'intérieur du répertoire 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
est exécutablepdftk
, copiez tous les fichiers pdf avec lesquels vous souhaitez travailler.cd /path/to/pdftk
docker/dockershell docker/Dockerfile
(cela prendra un certain temps la première fois que vous l'exécutez).Vous devez maintenant avoir une invite dans le conteneur de menu fixe, à partir de laquelle vous pouvez exécuter pdftk. Lorsque vous avez terminé, tapez exit
pour quitter le conteneur et revenir à la machine hôte. Tous les fichiers nouvellement générés seront présents dans le répertoire pdftk
(mais ils seront la propriété de root, vous devrez donc peut-être changer de propriétaire si nécessaire).
Lors de ma course de 18.04 dans WSL, j'ai fait ce qui suit
Obtenez les dépendances à partir des fichiers (.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
puis installez les dépendances ci-dessus
Sudo dpkg -i libgcj*
puis j'ai pris le .deb
de https://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