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
()
Ответ на: комментарий от 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)