Есть ли любой шанс получения 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
Но не нашел рабочий инструмент.
pdftk пакет в Ubuntu (и ее восходящий пакет Debian) были отброшены из-за ее зависимости от теперь времени выполнения GCJ устаревшего. Я нашел ветвление, которое зависит от OpenJDK или подобный вместо этого.
Начиная с Космического (Ubuntu 18.10), поставки Ubuntu pdftk-java
от того же исходного кода как ниже как замена. Попытка установить pdftk
установит этот пакет вместо этого. Пользователи более ранних выпусков могут загрузить его вручную с хранилища пакетов и установить его с их любимым диспетчером пакетов.
Я создал пакет Deb (только для Бионического) с подходящими зависимостями:
sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk
Пакет содержит сценарий обертки, помещенный в /usr/bin
, таким образом, можно вызвать его как обычно:
pdftk <arguments> ...
Установите инструменты сборки и зависимости:
sudo apt install git default-jdk-headless ant \
libcommons-lang3-java libbcprov-java
Конечно, можно использовать другой поддерживаемый JDK, чем тот, предоставленный default-jdk-headless
.
Загрузите pdftk ветвление Marc Vinyal:
git clone https://gitlab.com/pdftk-java/pdftk.git
cd pdftk
Поместите символьные ссылки на необходимые библиотеки в lib
папка:
mkdir lib
ln -st lib /usr/share/java/{commons-lang3,bcprov}.jar
Создайте пакет JAR:
ant jar
Выполните пакет JAR:
java -jar build/jar/pdftk.jar --help
(Дополнительно) Для выполнения пакета 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 согласно документации).
(Дополнительно) можно учить Linux выполнять JAR (Архив Java) файлы через update-binfmts(8)
. Большинство JREs, поставленные в пакетах Deb, включая JRES в хранилищах пакетов Canonical, заботится об этом во время установки, хотя это, кажется, багги в некоторых пакетах OpenJDK.
P.S.: Я попробовал это небездисплейным OpenJDK 9 в Надежном человеке Ubuntu, но я вижу мало оснований, почему он не должен работать с бездисплейным OpenJDK 10 в Бионическом.
Комментатор поднял допустимый вопрос, затронута ли зависимость приложений Цепочки PDF этим изменением:
Это работает на человечность 18.04:
sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk
Можно попробовать, используют изображение докера Ubuntu 16.04 с pdftk, установленным для выполнения pdftk:
Докер установки:
sudo apt install docker.io
Вытяните Ubuntu 16.04 и выполните оболочку удара:
sudo docker run -it ubuntu:16.04 bash
Обновление и установка pdftk от контейнерной подсказки:
apt update
apt install pdftk
На новом выполненном терминале:
sudo docker ps -a
Фиксируйте изображение с помощью КОНТЕЙНЕРНОГО идентификатора ubuntu:16.04 к новому изображению с установленным pdftk:
sudo docker commit CONTAINER_ID ubuntu_pdftk
(Замена CONTAINER_ID
с Вашим контейнерным идентификатором.)
Создайте названный файл 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
Я смог установить pdftk от ловкого (17.10) deb пакеты. Загрузите и затем установите в том порядке:
Лучше устанавливать gcc-6-base
сначала для предотвращения ошибки зависимостей, если Вы делаете это от cli.
Это должно добиться цели … на данный момент.
Я сделал быстрое и грязное обходное решение для получения 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/
Для Ubuntu 18.04 просто установите пакет снимка pdftk:
sudo snap install pdftk
Я записал маленький сценарий удара, которые автоматизируют установку на 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
Какая прекрасная возможность использовать некоторое волшебство докера!
То, что я сделал, должно было использовать контейнер докера рабочая человечность 16.04, установить pdftk в нем и выполнять его туда.
Вот точные шаги, если Вы хотите сделать то же самое:
pdftk
docker
в 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
сценарий является исполняемым файломpdftk
каталог, скопируйте все файлы PDF, с которыми Вы хотите работатьcd /path/to/pdftk
docker/dockershell docker/Dockerfile
(это займет некоторое время в самый первый раз, когда Вы выполняете его),Теперь у Вас должна быть подсказка в контейнере докера, от того, куда можно выполнить pdftk. Когда Вы будете сделаны, ввести exit
выйти из контейнера и возвратиться к хост-машине. Любые недавно сгенерированные файлы будут присутствовать в pdftk
каталог (но они будут принадлежать корню, таким образом, Вы, возможно, должны будете изменить владение по мере необходимости).
На моих 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
Можно выполнить 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 минуты для создания изображения, если созданное изображение останется на следующих запусках машины, будет быстрее. Можно свободно очистить изображение, оно будет создано при необходимости в нем в следующий раз.
Ссылки на загрузку в сценарии, отправленном @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
Мне нравится ответ докера 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
Для загрузки pdftk в 18.04 я обнаружил, что это работает:
pdftk-java
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