Como posso instalar o pdftk no Ubuntu 18.04 Bionic?

58

Existe alguma chance de obter pdftk funcionando no Ubuntu 18.04? Eu preciso disso para criar arquivos PDF com uma marca d'água no shell.

Ou alguém conhece uma alternativa funcional a pdftk para gerar um PDF com uma marca d'água no shell?

Eu já verifiquei / experimentei todos:

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

Mas não encontrou uma ferramenta de trabalho.

    
por WiKrIe 26.04.2018 / 21:40

9 respostas

50

O pacote pdftk no Ubuntu (e seu upstream Pacote Debian ) foi descartado devido à sua dependência do tempo de execução GCJ que agora está obsoleto. Eu encontrei um fork que depende do OpenJDK ou similar.

Instalar do PPA

Eu construí um pacote Deb (somente para o Bionic) com dependências adequadas:

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

O pacote contém um script de wrapper colocado em /usr/bin , para que você possa invocá-lo normalmente:

pdftk <arguments> ...

Instalar da origem

  1. Instale as ferramentas e dependências de construção:

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

    É claro que você pode usar um JDK suportado diferente daquele fornecido por default-jdk-headless .

  2. Faça o download do pdftk fork de Marc Vinyal :

    git clone https://gitlab.com/pdftk-java/pdftk.git
    cd pdftk
    
  3. Coloque os links simbólicos nas bibliotecas necessárias no diretório libs :

    mkdir libs
    ln -st libs /usr/share/java/{commons-lang3,bcprov}.jar
    
  4. Compile o pacote JAR:

    ant jar
    
  5. Execute o pacote JAR:

    java -jar build/jar/pdftk.jar --help
    
  6. (Opcional) Para executar o pacote JAR, e. g. ao distribuí-lo para outros sistemas, você precisa de pelo menos um JRE (sem cabeçalho) funcionando como o pacote default-jre-headless , bem como as bibliotecas Java libcommons-lang3-java e libbcprov-java :

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

    Novamente, você pode usar um JRE diferente de default-jre-headless . Este fork do pdftk também suporta builds para versões mais antigas do JRE (≥ 7 de acordo com a documentação).

  7. (Opcional) Você pode ensinar o Linux a executar arquivos JAR (Java Archive) através de update-binfmts(8) . A maioria dos JREs enviados em pacotes Deb, incluindo aqueles nos repositórios de pacotes da Canonical, cuidam disso durante a instalação, embora pareça estar com problemas em alguns pacotes do OpenJDK.

P.S .: Eu tentei isso com o OpenJDK 9 não-sem-cabeça no Ubuntu Trusty, mas vejo poucas razões pelas quais ele não deveria funcionar com o OpenJDK 10 sem cabeça em Bionic.

    
por David Foerster 27.04.2018 / 23:56
22

Para o Ubuntu 18.04, basta instalar o pacote pdftk snap:

sudo snap install pdftk
    
por pgoetz 23.06.2018 / 02:30
19

Instalando o pdftk no Ubuntu 18.04 amd64

Eu escrevi um pequeno script que automatiza a instalação no Ubuntu 18.04. Note que eu baixei somente os pacotes amd64 !

#!/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

Este script irá baixar os pacotes para /tmp e instalar a partir daí usando o comando apt install ! Posteriormente, os pacotes no diretório /tmp serão removidos.

Para executar este script, copie-o em um editor e salve-o, por exemplo pdftk_installer . Em seguida, execute-o em um terminal com

chmod 755 pdftk_installer
./pdftk_installer
    
por abu_bua 14.06.2018 / 10:42
9

Você pode tentar usar uma imagem do Docker do Ubuntu 16.04 com o pdftk instalado para executar o pdftk:

  1. Instalar a janela de encaixe:

    sudo apt install docker.io
    
  2. Puxe o Ubuntu 16.04 e execute um shell bash:

    sudo docker run -it ubuntu:16.04 bash
    
  3. Atualize e instale o pdftk a partir do prompt do contêiner:

    apt update
    apt install pdftk
    
  4. Em uma nova execução de terminal:

    sudo docker ps -a
    
  5. Confirme a imagem usando o ID CONTAINER do Ubuntu: 16.04 para uma nova imagem com o pdftk instalado:

    sudo docker commit CONTAINER_ID ubuntu_pdftk
    

    (Substitua CONTAINER_ID pelo ID do seu contêiner.)

  6. Crie um arquivo chamado pdftk in /usr/bin e torne-o executável usando 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
    
por Ademir F Furtado 28.04.2018 / 23:02
5

Consegui instalar o pdftk a partir de pacotes debill artful (17.10). Faça o download e instale, nessa ordem:

É melhor instalar gcc-6-base primeiro para evitar erros de dependência se você fizer isso de cli.

Isso deve funcionar ... por enquanto.

    
por amha 01.05.2018 / 10:12
2

Eu fiz uma solução rápida e suja para fazer o PDFTK rodar sob o 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

Eu atualizo meu sources.list e incluo as seguintes linhas:

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

Depois disso eu corro um simples

sudo apt update

para que as alterações entrem em vigor.

Em seguida, instale o pdftk via

sudo apt install pdftk

Em seguida, remova as fontes Artful da source.list novamente e é assim que obtenho o PDFTK em execução no Bionic.

Fonte: link

    
por WiKrIe 01.05.2018 / 21:27
0

Que grande oportunidade de usar alguma mágica do docker!

O que eu fiz foi usar um contêiner docker rodando o ubuntu 16.04, instalar o pdftk dentro dele e corra para lá.

Aqui estão os passos exatos, se você quiser fazer a mesma coisa:

  1. Instale a janela de encaixe, se você ainda não a tiver ( link )
  2. Crie um diretório em algum lugar chamado pdftk
  3. Crie um diretório chamado docker dentro do diretório pdftk
  4. Copie este Dockerfile para o diretório pdftk/docker : link
  5. Copie esse script também no diretório pdftk/docker : link
  6. Verifique se o script dockershell é executável
  7. No diretório pdftk , copie todos os arquivos em PDF com os quais deseja trabalhar
  8. cd /path/to/pdftk
  9. Execute o script dockershell com o caminho do Dockerfile: docker/dockershell docker/Dockerfile (isso levará algum tempo na primeira vez que você executá-lo)

Agora você deve ter um prompt dentro do contêiner docker, de onde você pode executar pdftk. Quando terminar, digite exit para sair do contêiner e retornar ao máquina host. Todos os arquivos recém-gerados estarão presentes no diretório pdftk (mas eles serão de propriedade do root, portanto, talvez seja necessário alterar a propriedade conforme necessário).

    
por Gautam 14.07.2018 / 23:28
0

No meu 18.04 em execução no WSL eu fiz o seguinte

Obtenha as dependências dos arquivos (.deb):

  • libgcj-common (download: link )
  • libgcj17 (download: link )

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

em seguida, instale as dependências acima

sudo dpkg -i libgcj*

eu peguei o .deb do link

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
    
por Eduard Florinescu 11.10.2018 / 09:33
0

Uma variante aprimorada da resposta de Ademir.

Supondo que precisamos apenas de um componente cli do pdftk e há uma janela de encaixe instalada na máquina. Basta colocar o seguinte script em algum lugar no $ PATH com o nome pdftk e o bit executável definido:

#!/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
set -eu
docker run --name pdftk -it --rm -v "$PWD:/workdir$PWD" -w "/workdir$PWD" local/local/ubuntu_pdftk pdftk "$@"

A primeira execução levará dois minutos para criar a imagem, se a imagem construída permanecer na máquina, as próximas execuções serão mais rápidas. Você pode limpar a imagem livremente, ela será criada quando for necessária na próxima vez.

Desvantagem: arquivos criados serão de propriedade de root, todos os arquivos de leitura serão lidos como root (portanto, nenhuma verificação de permissões).

    
por Ilya Sheershoff 02.11.2018 / 00:53