Skip to content

FLEXIY0/PDFka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PDFka — PDF/A-3A → PDF/A-1A

Перелейбл PDF/A без пересборки. Меняются всего два байтовых участка — версия в заголовке (%PDF-1.x%PDF-1.4) и pdfaid:part в XMP (31). Шрифты, теги, OutputIntent и сам контент остаются нетронутыми, xref-смещения не сдвигаются.

Вся обработка идёт целиком в браузере — файл никуда не отправляется.

🔗 Демо: https://flexiy0.github.io/PDFka/


Как это работает

index.html — самодостаточная статическая страница (HTML + CSS + ванильный JS, без зависимостей и сборки). Она:

  1. читает PDF локально через FileReader;
  2. инспектирует его (версия, pdfaid:part/conformance, наличие object/xref-стримов, вложений, прозрачности, тегов);
  3. решает, можно ли обойтись перелейблом;
  4. если да — патчит два байтовых участка и отдаёт готовый файл на скачивание.

Когда перелейбл работает

Файлы 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 · исходный код

About

PDF/A-3A → 1A в браузере. Меняет только метку формата, не трогая документ. Без Акробата и загрузок на сервер.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages