LINUX.ORG.RU

qpdfstamp: Нужна помощь в тестировании под Ubuntu/Debian

 , ,


0

2

Разрабатывается макет программы для проставки штампов в PDF-файлах. Просьба потыкать палочкой и помочь настроить сборку под Debian-based.

Как выяснилось с такими программами бидэ. Ни под Linux ни под Windows open source решений, корректно это делающих, не обнаружено. Поэтому пришлось закатить рукава и намутить пока макет на PyQt5, потом переложу на C++.

Суть - берем PDF-файл и накладываем на него подписи и штампы в виде сканов. И то и другое - в формате PDF. Подписи/штампы, естественно, прозрачные. Потом экспортируем снова таки в PDF и отправляем клеэнту.

https://gitlab.com/ti.eugene/qpdfstamp.py Ветка devel

★★

Последнее исправление: TI_Eugene (всего исправлений: 2)

Твоя ссылка отдает 404. А так - расскажи что такое «штамп»? Iso 32000, пункт 12.5.6.12 «rubber stamp annotation»? Или просто любой объект с Appearance Stream в виде штампа? Или что-то ещё?

Ну и да, с обработкой пдф шляпа. Попплер тормоз, qpdf тоже, пдфиум редактирование плохо умеет, mupdf офигенен но agpl

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от anonymous

Master PDF editor a) только Windows, b) закрыт, в) слишком наворочен.
Остальные указанные визуально ставить штампы не могут.
Доступ исправил.

TI_Eugene ★★
() автор топика
Последнее исправление: TI_Eugene (всего исправлений: 1)
Ответ на: комментарий от upcFrost

404 исправлено.
Штамп… Я не знаю, как это образовывается внутри PDF, но в Acrobat reader оно называется штамп. Возможно annotation (какое-то из них).
В моем случае это pdf over pdf. Визуализация с помощью pymupdf, конечный результат выгружает qpdf.
Poppler не то, чтобы тормоз, но для Windows python-poppler-qt5 не устанавливается. Хотя работает нормально (не в Windows).
Mupdf крут, но с документацией проблема (а для python вообще нет).

TI_Eugene ★★
() автор топика

настроить сборку под Debian-based

Это же питон, что там настраивать? У тебя уже всё написано, pip install ..

Или ты хочешь файлы для сборки дебановского пакета в репозиторий добавить? Не делай так, удали каталог debian прямо сейчас. Во-первых, опакечивание это не твоего ума дело, этим должен заниматься мантейнер из дебиана. Во-вторых, ты, если сам не используешь дебиан, не сможешь его правильно сделать и поддерживать. И твоё время как разработчика слишком ценно чтобы тратить его на пакетирование.

Репозиторий нормально только оформи, чтобы не было пустой main ветки c шаблонным readme - devel ветку переименуй в main.

anonymous
()
Ответ на: комментарий от pihter

Идея интересная, попробую проверить. Потом. Там заменить только один модуль pdf.py.
Сейчас интересует заточить сборку deb и выпустить релиз.

TI_Eugene ★★
() автор топика
Ответ на: комментарий от TI_Eugene

В моем случае это pdf over pdf

Яннп, в смысле pdf over pdf? Эмбед с прозрачным фоном? Его половина вьюеров криво нарисует. Почему не взять если уж не вектор (п.8.5.2, геморрой с путями) то хоть просто аннотаху и наложить картинку в appearance? Там максимум координаты подбить для поворотов

Визуализация с помощью pymupdf, конечный результат выгружает qpdf

Зачем там сложно? Mupdf умеет все что может qpdf кроме лицензии, и умеет это лучше. Ну или pdfium, он рендерит бодрее. Qpdf линеаризацию умеет, это его плюс, в остальном он тормоз

Mupdf крут, но с документацией проблема (а для python вообще нет)

Есть там дока, была по крайней мере, и куда лучше чем у pdfium

Я интересуюсь не с целью потроллить, если что. Много работаю с pdf. И на штампы у меня есть тикет

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)

Проглядел код с телефона. По гуйцам ничего сказать не могу, только по пдф.

Оверлей в купдф внутри просто копирует аннотации со всеми параметрами. В таком случае делать 72 * dpi для позиции это прям ппц как наивно. В идеале надо определять реальный размер страницы, потом отношение этого размера к штампу чтоб не перебатонило, потом смотреть флаг поворота/отражения на нужной странице, потом смотреть этот же флаг на странице откуда штамп, и потом скрещивать ежа с ужом.

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

Пока это пре-альфа-релиз-кандидат. Что pymupdf, что qpdf, что 72 dpi - это всё может измениться в дальнейшем.
Сейчас интересует именно и только пакетирование для debian-based.

TI_Eugene ★★
() автор топика
Ответ на: комментарий от TI_Eugene

на стабильном дебиане проблема - нет python3-mupdf

ну а пакет собирается и устанавливается… но …

File «/usr/lib/python3/dist-packages/qpdfstamp/pdf.py», line 6, in import pymupdf ModuleNotFoundError: No module named ‘pymupdf’

anonymous
()
Ответ на: комментарий от anonymous

Ну… Не виноватая я.
В CentOS тоже нет.
Видимо придется ограничиться убунтой.
За тест спасибо. Хотя бы пакетируется.
Релиз

TI_Eugene ★★
() автор топика
Последнее исправление: TI_Eugene (всего исправлений: 1)

В рамках оффтопа: а консультировался ли автор с юристами насчёт ТЗ проекта?

То есть, допустим, возможность наложить намалёванные от руки правки и аннотации — да, вполне понятная, валидная задача.

Но с подписями-штампами это уже бессмыслица получается, разве нет?

Суть подписи в удостоверении факта, что подписывающий ознакомился и акцептовал подписываемое. То же самое с печатями — подразумевается, что доступ к ним имеет ограниченный круг лиц, наделённых соответствующими полномочиями.

А тут, мало того, что не удостоверяется авторство подписи — может поставить кто угодно посторонний, так ещё и сам документ может быть как угодно изменён, даже отдельно слой со штампом можно извлечь и использовать в любых целях. То есть, факт визуального наличия подписи и печати в pdf–ке не значит ровным счётом вообще ничего.

IMHO, электронный документ должен быть заверен электронной же подписью. А факсы с подписями и уж тем более pdf–ки без ЭЦП — это, минимум, юридически ничтожная филькина грамота, существующая сугубо с молчаливого попустительства сторон, а максимум — потенциальные проблемы с нечистым на руку контрагентом.

anonymous
()
Ответ на: комментарий от anonymous

Всё просто, мой анонимный друг. Acrobat Reader так умеет делать. И люди этим пользуются. А мне Acrobat Reader не нравится.
И топор и молоток и кухонный нож и бензопила не являются холодным оружием. Номинально. Всё зависит от фантазии.

TI_Eugene ★★
() автор топика
Последнее исправление: TI_Eugene (всего исправлений: 2)

А не проще было эту подпись вставить в разметку?

https://stackoverflow.com/questions/13276409/how-to-add-image-to-pdf-file-in-python

Не говоря уже о макросах… Хотя проще написать скрипт такой чем говорящие трусы начить ими пользоваться

rtxtxtrx ★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от TI_Eugene

зарабатывает деньги команда, а не конкретные люди. многие руководители клинические дегенераты, поэтому надрачивают на менегеров… важен вклад каждого даже уборщицы, потому что в свинарнике работается не так приятно

rtxtxtrx ★★
()
Ответ на: комментарий от anonymous

В репах Fedora (тем более CentOS) нет, так что ничего сказать не могу. Возможно когда-нибудь соберу в пакет и потыкаю, но предварительно - если это целый аж editor, то это too much для секретарши/манагера. Там надо попроще - шлепнул штамп и всё.

TI_Eugene ★★
() автор топика

попробовал.

  1. скрипт run.sh надо переделать на /bin/sh или /bin/bash. В /usr/bin нет интерпретаторов.

  2. отрыл файл, но почти ничего не видно. Видимо что-то с темой. У меня темная тема стоит, и после открытия файла вместо белого фона, фон почти черный. И буквы еле видны. Хотя pdf-файл белый есессно. Пока все. Штампы ставить не пробовал еще, не видно куда :)

А в чем ты гуи делал?

anonymous
()
Ответ на: комментарий от anonymous
  1. run.sh не надо, оно distro specific. Лучше согласно README.md запускать
  2. «почти ничего не видно» это типа «у меня ничего не работает»? ;-) Мой телепат в отпуске, поэтому без комментариев. Про фон и тему ничего сказать не могу. Дистро, скриншот на базу. Возможно у вас сломана настройка Qt5.

Гуи делал руками. Кодом.

TI_Eugene ★★
() автор топика
Ответ на: комментарий от TI_Eugene

http://0x0.st/88YL.png

вот скрин. Я открыл пустой белый pdf.

настройки у меня, возможно, сломаны. Но пока все остальные программы работают правильно.

Про гуи я спросил потому что много всякого кода «скучного». Думал что «ну неужели для написано программы на гуи надо все это руками писать??»

anonymous
()
Ответ на: комментарий от anonymous

Мда, странное… Тулбара не видно вообще. Я думаю у Вас настройки Qt сломались. Потому что «черное на черном» - это не то, что планировалось. Я не раскрашивал ничего, всё берется by default.
«Скучный код» - ну… Его там очень мало. Можно просто нарисовать *.ui в дизайнере и/или конвертировать его в код, там будет очень нескучно.
Пишите im@eap.su

TI_Eugene ★★
() автор топика
Ответ на: комментарий от TI_Eugene

Мда, странное… Тулбара не видно вообще. Я думаю у Вас настройки Qt сломались. Потому что «черное на черном» - это не то, что планировалось. Я не раскрашивал ничего, всё берется by default.

если под турбаром подразумевается строка внизу, где имя файла пишется, то он есть. Просто на скрин не попал.

А так вроде все QT программы открываются без подобного глюка.

anonymous
()
Ответ на: комментарий от anonymous

Тулбар (панель инструментов) - чуть ниже мену. В Вашем случае там светится только индикатор страницы. Хотя должно быть туева хуча кномпочек. Но оно у Вас «черное на черном». Даже сепараторы. Что есть совсем неправильно. Что-то Вы с темой намутили.
Строка внизу - это status bar.

TI_Eugene ★★
() автор топика

на 12 дебиане работает

https://i.ibb.co/FkkkWKLv/123.png

но иконки первые в панельке одинаковые

ну и надо в control еще добавить две зависимости python3-pymupdf, python3-pyqt5.qtsvg

Depends:

pyqt5-dev, python3-fitz, python3-pikepdf, python3-pymupdf, python3-pyqt5.qtsvg

Но вообще тяжко, тяжко… пришлось собирать в 12ку следующее:

libjbig2dec0 -> jbig2dec_0.20

mupdf_1.25.1

pymupdf_1.25.0

так-то не страшно, зависимостей на 1.5+ гига на жестком диске занимает %)

anonymous
()