Как я могу установить pdftk в Ubuntu 18.04 и позже?

Есть ли любой шанс получения pdftk работа в Ubuntu 18.04? Мне нужно это для создания файлов 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

Но не нашел рабочий инструмент.

108
задан 15 December 2018 в 06:09

13 ответов

pdftk пакет в Ubuntu (и ее восходящий пакет Debian) были отброшены из-за ее зависимости от теперь времени выполнения GCJ устаревшего. Я нашел ветвление, которое зависит от OpenJDK или подобный вместо этого.

Установка от будущего релиза Ubuntu (рекомендована)

Начиная с Космического (Ubuntu 18.10), поставки Ubuntu pdftk-java от того же исходного кода как ниже как замена. Попытка установить pdftk установит этот пакет вместо этого. Пользователи более ранних выпусков могут загрузить его вручную с хранилища пакетов и установить его с их любимым диспетчером пакетов.

Установка от (устаревшего) PPA

Я создал пакет Deb (только для Бионического) с подходящими зависимостями:

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

Пакет содержит сценарий обертки, помещенный в /usr/bin, таким образом, можно вызвать его как обычно:

pdftk <arguments> ...

Установка из источника

  1. Установите инструменты сборки и зависимости:

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

    Конечно, можно использовать другой поддерживаемый JDK, чем тот, предоставленный default-jdk-headless.

  2. Загрузите pdftk ветвление Marc Vinyal:

    git clone https://gitlab.com/pdftk-java/pdftk.git
    cd pdftk
    
  3. Поместите символьные ссылки на необходимые библиотеки в lib папка:

    mkdir lib
    ln -st lib /usr/share/java/{commons-lang3,bcprov}.jar
    
  4. Создайте пакет JAR:

    ant jar
    
  5. Выполните пакет JAR:

    java -jar build/jar/pdftk.jar --help
    
  6. (Дополнительно) Для выполнения пакета JAR, например, когда Вы распределяете его другим системам Вам нужен, по крайней мере, рабочий (бездисплейный) JRE как от default-jre-headless пакет, а также библиотеки Java libcommons-lang3-java и libbcprov-java:

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

    Снова можно использовать другой JRE, чем default-jre-headless. Это pdftk ветвление также поддерживает сборки для более старых версий JRE (≥ 7 согласно документации).

  7. (Дополнительно) можно учить Linux выполнять JAR (Архив Java) файлы через update-binfmts(8). Большинство JREs, поставленные в пакетах Deb, включая JRES в хранилищах пакетов Canonical, заботится об этом во время установки, хотя это, кажется, багги в некоторых пакетах OpenJDK.

P.S.: Я попробовал это небездисплейным OpenJDK 9 в Надежном человеке Ubuntu, но я вижу мало оснований, почему он не должен работать с бездисплейным OpenJDK 10 в Бионическом.

Завися приложения

Комментатор поднял допустимый вопрос, затронута ли зависимость приложений Цепочки PDF этим изменением:

  • Нет, Цепочка PDF является приложением C++ и не непосредственно затронутая депрекацией GCJ. Это нуждается в работе pdftk исполняемый файл, но не заботится, как это работает под капотом. В любом случае Цепочка PDF была отброшена от Бионического, а также pdftk.
92
ответ дан 22 November 2019 в 23:00

Это работает на человечность 18.04:

sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk
5
ответ дан 22 November 2019 в 23:00

Можно попробовать, используют изображение докера Ubuntu 16.04 с pdftk, установленным для выполнения pdftk:

  1. Докер установки:

    sudo apt install docker.io
    
  2. Вытяните Ubuntu 16.04 и выполните оболочку удара:

    sudo docker run -it ubuntu:16.04 bash
    
  3. Обновление и установка pdftk от контейнерной подсказки:

    apt update
    apt install pdftk
    
  4. На новом выполненном терминале:

    sudo docker ps -a
    
  5. Фиксируйте изображение с помощью КОНТЕЙНЕРНОГО идентификатора ubuntu:16.04 к новому изображению с установленным pdftk:

    sudo docker commit CONTAINER_ID ubuntu_pdftk
    

    (Замена CONTAINER_ID с Вашим контейнерным идентификатором.)

  6. Создайте названный файл pdftk в /usr/bin и затем сделайте это исполняемым использованием 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
    
11
ответ дан 22 November 2019 в 23:00

Я смог установить pdftk от ловкого (17.10) deb пакеты. Загрузите и затем установите в том порядке:

Лучше устанавливать gcc-6-base сначала для предотвращения ошибки зависимостей, если Вы делаете это от cli.

Это должно добиться цели … на данный момент.

5
ответ дан 22 November 2019 в 23:00

Я сделал быстрое и грязное обходное решение для получения 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 снова, и это - то, как я получаю PDFTK, работающий под Бионическим.

Источник: https://christiandietze.de/pdftk-with-ubuntu-bionic-18-04/

2
ответ дан 22 November 2019 в 23:00

Для Ubuntu 18.04 просто установите пакет снимка pdftk:

sudo snap install pdftk
66
ответ дан 22 November 2019 в 23:00

Установка pdftk на Ubuntu 18.04 amd64

Я записал маленький сценарий удара, которые автоматизируют установку на Ubuntu 18.04. Обратите внимание, что я загрузил только 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
39
ответ дан 22 November 2019 в 23:00

Какая прекрасная возможность использовать некоторое волшебство докера!

То, что я сделал, должно было использовать контейнер докера рабочая человечность 16.04, установить pdftk в нем и выполнять его туда.

Вот точные шаги, если Вы хотите сделать то же самое:

  1. Установите докера, если у Вас уже нет его (https://docs.docker.com/install/)
  2. Создайте каталог, где-нибудь названный pdftk
  3. Создайте названный каталог docker в pdftk каталог
  4. Скопируйте этот Dockerfile в pdftk/docker каталог: https://github.com/gkotian/gautam_linux/blob/master/docker/pdftk/Dockerfile
  5. Скопируйте этот сценарий также в pdftk/docker каталог: https://github.com/gkotian/gautam_linux/blob/master/scripts/dockershell
  6. Удостоверьтесь dockershell сценарий является исполняемым файлом
  7. В pdftk каталог, скопируйте все файлы PDF, с которыми Вы хотите работать
  8. cd /path/to/pdftk
  9. Запустите dockershell скрипт с путем Dockerfile: docker/dockershell docker/Dockerfile (это займет некоторое время в самый первый раз, когда Вы выполняете его),

Теперь у Вас должна быть подсказка в контейнере докера, от того, куда можно выполнить pdftk. Когда Вы будете сделаны, ввести exit выйти из контейнера и возвратиться к хост-машине. Любые недавно сгенерированные файлы будут присутствовать в pdftk каталог (но они будут принадлежать корню, таким образом, Вы, возможно, должны будете изменить владение по мере необходимости).

0
ответ дан 22 November 2019 в 23:00

На моих 18,04 выполнениях в WSL я сделал следующее

Получите зависимости от (.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*

затем я взял .deb от 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
ответ дан 22 November 2019 в 23:00

Можно выполнить pdftk на Ubuntu 18.04 с докером. Это - расширенный вариант ответа Ademir.

При принятии нам только нужен cli компонент pdftk и существует докер, установленный на машине. Просто поместите следующий сценарий где-нибудь на $PATH с именем pdftk и исполняемый набор битов:

#!/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 минуты для создания изображения, если созданное изображение останется на следующих запусках машины, будет быстрее. Можно свободно очистить изображение, оно будет создано при необходимости в нем в следующий раз.

1
ответ дан 22 November 2019 в 23:00

Ссылки на загрузку в сценарии, отправленном @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
1
ответ дан 22 November 2019 в 23:00

Мне нравится ответ докера Ademir, но он имеет типичные проблемы с безопасностью и полномочиями, потому что докер должен работать как корень. Если это беспокоит Вас, попытайтесь использовать Особенность. Необходимо создать изображение как корень, но любой пользователь может затем выполнить его.

Вот 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
1
ответ дан 22 November 2019 в 23:00

Для загрузки pdftk в 18.04 я обнаружил, что это работает:

  1. получить версию deb 18.10 для pdftk-java
  2. установить зависимости от обычных репозиториев 18.04
  3. dpkg установить пакет pdftk-java, загруженный из 18.10

IE:

$ wget wget http://launchpadlibrarian.net/383018194/pdftk-java_0.0.0+20180723.1-1_all.deb
$ sudo apt install default-jre-headless libcommons-lang3-java libbcprov-java
$ sudo dpkg -i pdftk-java_0.0.0+20180723.1-1_all.deb
1
ответ дан 12 June 2020 в 13:34

Другие вопросы по тегам:

Похожие вопросы: