Saltar al contenido

¿Cómo puedo instalar pdftk en Ubuntu 18.04 y posterior?

Solución:

El paquete pdftk en Ubuntu (y su paquete Debian ascendente) se eliminó debido a su dependencia del tiempo de ejecución GCJ ahora obsoleto. Encontré una bifurcación que depende de OpenJDK o similar.

Instalar desde una versión futura de Ubuntu (recomendado)

Comenzando con Cosmic (Ubuntu 18.10), Ubuntu se envía pdftk-java del mismo código fuente que se muestra a continuación como reemplazo. Intentando instalar pdftk instalará este paquete en su lugar. Los usuarios de versiones anteriores pueden descargarlo manualmente desde el repositorio de paquetes e instalarlo con su administrador de paquetes favorito.

Instalar desde PPA (anticuado)

Construí un paquete Deb (solo para Bionic) con las dependencias adecuadas:

sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk

El paquete contiene un script contenedor colocado en /usr/bin, para que pueda invocarlo normalmente:

pdftk  ...

Instalar desde la fuente

  1. Instale las herramientas de compilación y las dependencias:

    sudo apt install git default-jdk-headless ant 
        libcommons-lang3-java libbcprov-java
    

    Por supuesto, puede utilizar un JDK compatible diferente al suministrado por default-jdk-headless.

  2. Descarga la bifurcación pdftk de Marc Vinyal:

    git clone https://gitlab.com/pdftk-java/pdftk.git
    cd pdftk
    
  3. Coloque enlaces simbólicos a las bibliotecas requeridas en el lib carpeta:

    mkdir lib
    ln -st lib /usr/share/java/commons-lang3,bcprov.jar
    
  4. Construye el paquete JAR:

    ant jar
    
  5. Ejecute el paquete JAR:

    java -jar build/jar/pdftk.jar --help
    
  6. (Opcional) Para ejecutar el paquete JAR, por ejemplo, cuando lo distribuye a otros sistemas, necesita al menos un JRE funcional (sin cabeza) como el de default-jre-headless paquete, así como las bibliotecas de Java libcommons-lang3-java y libbcprov-java:

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

    Nuevamente, puede usar un JRE diferente al default-jre-headless. Esta bifurcación pdftk también admite compilaciones para versiones anteriores de JRE (≥ 7 según la documentación).

  7. (Opcional) Puede enseñar a Linux a ejecutar archivos JAR (Java Archive) a través de update-binfmts(8). La mayoría de los JRE enviados en paquetes Deb, incluidos los que se encuentran en los repositorios de paquetes de Canonical, se encargan de eso durante la instalación, aunque parece tener errores en algunos paquetes de OpenJDK.

PD: Probé esto con OpenJDK 9 sin cabeza en Ubuntu Trusty, pero veo pequeñas razones por las que no debería funcionar con OpenJDK 10 sin cabeza en Bionic.

Dependiendo de las aplicaciones

Un comentarista planteó la pregunta válida si el Cadena PDF las aplicaciones se ven afectadas por este cambio:

  • No, Cadena PDF es una aplicación de C ++ y no se ve afectada directamente por la desaprobación de GCJ. Necesita un trabajo pdftk ejecutable pero no le importa cómo funciona bajo el capó. En todo caso, Cadena PDF fue eliminado de Bionic así como pdftk.

Para Ubuntu 18.04, simplemente instale el paquete pdftk snap:

sudo snap install pdftk

Instalación de pdftk en Ubuntu 18.04 amd64

Escribí un pequeño script bash que automatiza la instalación en Ubuntu 18.04. Tenga en cuenta que he descargado solo amd64 paquetes!

#!/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 downloadednn"
# install packages 
echo -e "nn Installing pdftk: nn"
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 "nn pdftk installedn"
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

Este script descargará los paquetes a /tmp e instalar desde allí usando un apt install¡mando! Posteriormente, los paquetes en el /tmp Se eliminará el directorio.

Para ejecutar este script, cópielo en un editor y guárdelo, por ejemplo. pdftk_installer. Luego ejecútelo en una terminal con

chmod 755 pdftk_installer
./pdftk_installer

Instalación de pdftk en Ubuntu 20.04 amd64

El script anterior fallará debido a que faltan bibliotecas gcc-6 en Ubuntu 20.04. Sin embargo, aquellos que deseen evitar la solución snap o docker pueden usar schroot. Sé que se trata de una sobrecarga considerable: se necesitan unos 500 MB; pero puede utilizar este entorno para instalar más programas antiguos, bibliotecas, compiladores, etc. en el entorno Xenial (Ubuntu 16.04).

Primero instale el schroot paquete

 sudo apt install schroot debootstrap

Se requiere el último paquete para instalar un sistema similar a Debian. Ahora escribe un xenial.conf archivar en el /etc/schroot/schroot.d directorio:

cat < [xenial]
> description=Ubuntu 16.04
> directory=/srv/chroot/xenial
> root-users=$USER
> type=directory
> users=$USER
> EOF

Verifique que el nuevo archivo conf esté escrito

cat /etc/schroot/chroot.d/xenial.conf

A continuación, cree el directorio xenial (si elige otro directorio, modifique el archivo conf anterior):

 sudo mkdir -p /srv/chroot/xenial

Ahora comienza el espectáculo, mientras se instala, vaya a tomar un café:

sudo debootstrap xenial /srv/chroot/xenial 

El sistema de archivos xenial ahora está disponible en /srv/chroot/xenial.

Ahora es el momento de incluir los repositorios de xenial apt necesarios. Para hacerlo, escriba

cat <

Vuelva a comprobar que el archivo /srv/chroot/xenial/etc/apt/sources.list existe

cat /srv/chroot/xenial/etc/apt/sources.list

Es hora de ingresar al xenial schroot (nota: ¡no se necesitan privilegios de root!) Y actualizar el apt

schroot -c bionic -u root apt-get update

Finalmente, está listo para instalar el pdftk package:

schroot -c xenial -u root apt-get install pdftk

Puedes usar pdftk invocándolo a través del schroot:

schroot -c xenial -- pdftk 

Por ejemplo, para mostrar el tipo de menú de ayuda.

schroot -c xenial -- pdftk --help

Por último, sugiero crear un alias para pdftk en su .bashrc expediente:

Primero haga una copia de su .bashrc

cp ~/.bashrc ~/.bashrc_backup

y luego agrega un alias

echo alias pdftk='schroot -c xenial -- pdftk' >> ~/.bashrc

Ahora puedes usar pdf como de costumbre en tu fiesta. Para probar, abra una nueva terminal y escriba

 pdftk --version

Si tiene que instalar otros programas anteriores como tuve que hacer, use los comandos apt similares a los descritos anteriormente.

Tenga en cuenta que todos los comandos junto al apt-get y el xenial.config se ejecutan con privilegios de usuario.

Nos puedes añadir valor a nuestro contenido informacional participando con tu veteranía en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *