web-dev-qa-db-fra.com

Comment puis-je installer pdftk dans Ubuntu 18.04 et versions ultérieures?

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.

95
WiKrIe

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.

Installer à partir d'une future version d'Ubuntu (recommandé)

À partir de Cosmic (Ubuntu 18.10), Ubuntu fournit pdftk-Java à partir du même code source que ci-dessous en remplacement. Tenter d'installer pdftkinstallera 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é.

Installer depuis PPA (dépassé)

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

Installer depuis la source

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

  2. Télécharger fourche pdftk de Marc Vinyal :

    git clone https://gitlab.com/pdftk-Java/pdftk.git
    cd pdftk
    
  3. Placez les liens symboliques vers les bibliothèques requises dans le dossier libname__:

    mkdir lib
    ln -st lib /usr/share/Java/{commons-lang3,bcprov}.jar
    
  4. Construisez le paquet JAR:

    ant jar
    
  5. Exécutez le package JAR:

    Java -jar build/jar/pdftk.jar --help
    
  6. (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).

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

Selon les applications

Un intervenant a soulevé la question valable de savoir si les applications dépendantes [Chaîne PDF ) étaient affectées par ce changement:

  • No , Chaîne PDF est une application C++ et n'est pas directement affecté par la dépréciation de GCJ. Il a besoin d’un exécutable pdftk mais ne se soucie pas de la façon dont cela fonctionne sous le capot. Dans tous les cas, Chaîne PDF a été supprimé de Bionic ainsi que pdftk.
85
David Foerster

Pour Ubuntu 18.04, installez simplement le paquet d'instantané pdftk:

Sudo snap install pdftk
49
pgoetz

Installation de pdftk sur Ubuntu 18.04 AMD64

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
34
abu_bua

Vous pouvez essayer d'utiliser une image de menu fixe d'Ubuntu 16.04 avec pdftk installé pour exécuter pdftk:

  1. Installer le docker:

    Sudo apt install docker.io
    
  2. Tirez Ubuntu 16.04 et lancez un shell bash:

    Sudo docker run -it ubuntu:16.04 bash
    
  3. Mettez à jour et installez pdftk à partir du conteneur

    apt update
    apt install pdftk
    
  4. Sur un nouveau terminal, exécutez:

    Sudo docker ps -a
    
  5. 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.)

  6. 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
    
10
Ademir F Furtado

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.

5
amha

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/

2
WiKrIe

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.

1
Ilya Sheershoff

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

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:

  1. Installez docker si vous ne l'avez pas déjà ( https://docs.docker.com/install/ )
  2. Créez un répertoire quelque part appelé pdftk
  3. Créez un répertoire appelé docker à l'intérieur du répertoire pdftk
  4. Copiez ce fichier Docker dans le répertoire pdftk/docker: https://github.com/gkotian/gautam_linux/blob/master/docker/pdftk/Dockerfile
  5. Copiez également ce script dans le répertoire pdftk/docker: https://github.com/gkotian/gautam_linux/blob/master/scripts/dockershell
  6. Assurez-vous que le script dockershell est exécutable
  7. Dans le répertoire pdftk, copiez tous les fichiers pdf avec lesquels vous souhaitez travailler.
  8. cd /path/to/pdftk
  9. Exécutez le script dockershell avec le chemin du fichier Docker: 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).

0
Gautam

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
0
Eduard Florinescu