-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Сейчас эта функция
print-api/print_service/utils/__init__.py
Line 94 in 2109ae7
| def checking_for_pdf(f: bytes) -> tuple[bool, int]: |
валидирует пдф неправильно. Она отметает некоторую часть валидных файлов
Решение:
- Валидацию переписать на библиотеку qpdf
-
Если qpdf вернул статус 2 то ошибка валидации - тут его уже ничего не откроет по идее
-
В большнстве случаев он взвращает статус 3 - warnings found. Это файл который открывается читалками или нет - как повезет(то есть ты просто можешь ломать пдф из блокнота и скорее всего это будет 3 код но файл бывает открывается например в акробате)
соотв статус 3 можно просто пропускать в надежде на то что его прочитает принтер
- код 0 тоже пропускаем - это без ошибок
таким способом мы отрежем те файлы которые не открываются точно, но какие то пропустим
- так же есть способ рендерить этот пдф во время обработки запроса или на фронте и если он не рендерится то не давать загружать
скорее всего это будет оптимальнее потому что с точки зрения юзера нет никаких статус кодов - он либо рендерится либо нет
есть много решений под линукс - надо изучать на наличие cli. Может возможно рендерить прям на бэке
и под фронт нашел еще что то https://github.com/mozilla/pdf.js
- объединить решения 1 и 2 - валидировать сначала на фронте например, а потом проверять на критические ошибки на бэке
Metadata
Metadata
Assignees
Labels
Type
Projects
Status