Перелейбл PDF/A без пересборки. Меняются всего два байтовых участка — версия
в заголовке (%PDF-1.x → %PDF-1.4) и pdfaid:part в XMP (3 → 1). Шрифты,
теги, OutputIntent и сам контент остаются нетронутыми, xref-смещения не
сдвигаются.
Вся обработка идёт целиком в браузере — файл никуда не отправляется.
🔗 Демо: https://flexiy0.github.io/PDFka/
index.html — самодостаточная статическая страница (HTML + CSS + ванильный JS,
без зависимостей и сборки). Она:
- читает PDF локально через
FileReader; - инспектирует его (версия,
pdfaid:part/conformance, наличие object/xref-стримов, вложений, прозрачности, тегов); - решает, можно ли обойтись перелейблом;
- если да — патчит два байтовых участка и отдаёт готовый файл на скачивание.
Файлы PDF/A-3, уже структурно совместимые с PDF/A-1 — например, документы из 1С: без вложений, прозрачности и object/xref-стримов. От 1A они по сути отличаются только меткой. Нетегированные файлы помечаются как 1B (это валидно).
Если внутри есть вложенный файл (УПД/счёт-фактура с XML), object/xref-стримы или
прозрачность — простой перелейбл дал бы невалидный PDF/A-1. В этих случаях
страница не молчит, а предлагает скачать tools/convert.bat.
Перед сдачей в архив прогони файл бесплатным валидатором veraPDF:
verapdf --flavour 1b файл.pdfСтатика раздаётся через GitHub Pages. Воркфлоу
.github/workflows/deploy.yml при пуше в main автоматически включает Pages и
публикует содержимое репозитория.
Сделано FLEXIY0 · исходный код