PDFTK
Установка PDFTK в CentOS 7
В CentOS 6 ставилось из коробки:
sudo yum install -y pdftk.x86_64
В CentOS 7 же немного поплясять с гуглом, и о счастье — добрый самаритянин сделал неофициальный реп с pdftk:
sudo wget https://copr.fedorainfracloud.org/coprs/robert/gcj/repo/epel-7/robert-gcj-epel-7.repo -P /etc/yum.repos.d sudo wget https://copr.fedorainfracloud.org/coprs/robert/pdftk/repo/epel-7/robert-pdftk-epel-7.repo -P /etc/yum.repos.d sudo yum install -y pdftk
Рекомендую еще поставить полезный пакет poppler для манипуляций с PDF: sudo yum install -y poppler-data.noarch poppler.x86_64 poppler-utils.x86_64
Работа с метаданными
Если метаданные содержат кириллицу, то используем команды с суффиксом _utf8! Извлекаем мета-данные:
pdftk board-schematic-v4.0.pdf dump_data_utf8 output meta.txt
Редактируем мета-данные:
joe meta.txt
Обновляем мета-данные:
pdftk board-schematic-v4.0.pdf update_info_utf8 meta.txt output board-schematic-v4.0-meta.pdf
Если только латиница, то команды без _utf8:
#Edit Existing Meta-Data: pdftk book.pdf dump_data output meta.txt #Update PDF Meta-Data: pdftk book.pdf update_info meta.txt output bookcopy.pdf
Добавление водных знаков на страницы PDF
Выберем какое-нибудь красивое япанское лого для примера: https://commons.wikimedia.org/wiki/Category:6_letter_alphabet_logos_of_Japan
устанавливаем зависимости:
sudo yum install -y librsvg2-tools
готовим ватермарки (надо векторно перевести SVG -> PDF):
rsvg-convert -f pdf -o topcon.pdf topcon-company-logo.svg
добавляем ватермарки:
pdftk board-schematic-v4.0.pdf background topcon.pdf output board-schematic-v4.0-bg.pdf
сжимаем получившийся PDF:
pdftk board-schematic-v4.0-bg.pdf output board-schematic-v4.0-bg-compress.pdf compress
Причёсывание SVG перед использованием
Может понадобиться сделать две вещи перед вставкой водного знака:
масштабирование
Для этого меняем размеры холста файла SVG
выбор более подходящего цвета
за цвет лого отвечает такая конструкция: style=»fill:##007088″ в SVG. Ок, меняем цвет на #0B2AD:
sed -i 's/fill:#007088/fill:#0B2AD/g' logo.svg
Удаление текстовых водных знаков из PDF
Иногда организация просит для ускорения процесса покупать самому те или иные стандарты как частное лицо. И всё бы ничего — но в документы обычно впечатываются ватермарки с Именем-Фамилией и номером заказа, и может вы не желаете и не станете шарить и распространять, но за всех круг лиц, которые имеют доступ к документу ручаться не можете, поэтому лучше из документа информацию о персоналии выпилить с корнем, что для этого надо:
— Удаляем пароль владельца любым доступным способом
— Разархивируем файл:
pdftk ISO-26262-1-2011.pdf output ISO-26262-1-2011-uncompressed.pdf uncompress
— Теперь ищем ключевую фразу и удаляем/заменяем её:
sed 's/your surname here/nulled/g' ISO-26262-1-2011-uncompressed.pdf > ISO-26262-1-2011-filtered.pdf
— Самый важный этап (долго не мог понять как обойти когда не дошёл до этого шага) — прогоняем PDF через pdftk чтобы восстановить поврежденные правкой чексам и прочие элементы:
pdftk ISO-26262-1-2011-filtered.pdf output ISO-26262-1-2011-fixed.pdf
— Архивируем для уменьшения размера документа:
pdftk ISO-26262-1-2011-fixed.pdf output ISO-26262-1-2011-compressed.pdf compress
— Если необходимо, восстанавливаем оригинальную защит уи права на документ:
pdftk ISO-26262-1-2011-compress.pdf output ISO-26262-1-2011-encrypted.pdf owner_pw original_passphrase_here allow Printing allow CopyContents
— Успех!
!Note: всё тоже самое можно засунуть в баш-скрипт для пакетной обработки документов.
Однострочники (Операции с PDF в CLI)
Сборка из нескольких PDF одного многостраничного
Например, когда из PCAD печатаешь в PDF он печатает в несколько одностраничных файлов, исправляем ситуацию:
pdftk *.pdf cat output board-schematic-v4.0.pdf
Делаем из PDF -> JPG
[crayon lang=»shell» inline=»false» title=»pdf2jpg.sh»] #!/bin/bash # Script to convert PDF file to JPG images # Dependencies: # * pdftk # * imagemagick PDF=$1 echo «Processing $PDF» DIR=`basename «$1» .pdf` mkdir «$DIR» echo ‘ Splitting PDF file to pages…’ pdftk «$PDF» burst output «$DIR»/%04d.pdf pdftk «$PDF» dump_data output «$DIR»/metadata.txt echo ‘ Converting pages to JPEG files…’ for i in «$DIR»/*.pdf; do convert -colorspace RGB -interlace none -density 300×300 -quality 100 «$i» «$DIR»/`basename «$i» .pdf`.jpg done echo ‘All done’ [/crayon]
или так, если надо не перевести страницы в картинки, а извлечь уже существующие картинки:
pdfimages -png bonding_diagram_12_05.pdf CQFP100L
тут CQFP100L — папка, в которую складываются файлы-картинки
или даже так:
convert -units PixelsPerInch -density 450 -rotate 270 CQFP100L.pdf CQFP100L.pdf.png
- density — разрешение выходных картинок в DPI
- rotate — на сколько градусов развернуть итоговое изображение
Снятие защиты для возможности распечатать файл
https://smallpdf.com/unlock-pdf — An easy-to-use online PDF password remover Если по каким-то причинам не сработало, то ставим «Password Recovery Tool for PDF files»:
sudo yum install -y pdfcrack.x86_64
Запуск:
$ pdfcrack -f secret.pdf -o ... ... Average Speed: 47864.8 w/s. Current Word: 'E1meit' Average Speed: 47862.9 w/s. Current Word: 'i3niit' found owner-password: 'zfkmit' found user-password: ''
Но скорость мала, потому как в один поток, зато из коробки. Если охота заморочиться и на работе простаивает сервер с 32 ядрами, то гуглим pdfcrack-multithread что выводит нас на проект https://github.com/x2q/pdfcrack-ng