Skip to content

Валидация испорченных PDF #64

@grigoriev-semyon

Description

@grigoriev-semyon

Сейчас эта функция

def checking_for_pdf(f: bytes) -> tuple[bool, int]:

валидирует пдф неправильно. Она отметает некоторую часть валидных файлов

Решение:

  1. Валидацию переписать на библиотеку qpdf
  • Если qpdf вернул статус 2 то ошибка валидации - тут его уже ничего не откроет по идее

  • В большнстве случаев он взвращает статус 3 - warnings found. Это файл который открывается читалками или нет - как повезет(то есть ты просто можешь ломать пдф из блокнота и скорее всего это будет 3 код но файл бывает открывается например в акробате)

соотв статус 3 можно просто пропускать в надежде на то что его прочитает принтер

  • код 0 тоже пропускаем - это без ошибок

таким способом мы отрежем те файлы которые не открываются точно, но какие то пропустим

  1. так же есть способ рендерить этот пдф во время обработки запроса или на фронте и если он не рендерится то не давать загружать

скорее всего это будет оптимальнее потому что с точки зрения юзера нет никаких статус кодов - он либо рендерится либо нет

есть много решений под линукс - надо изучать на наличие cli. Может возможно рендерить прям на бэке

и под фронт нашел еще что то https://github.com/mozilla/pdf.js

  1. объединить решения 1 и 2 - валидировать сначала на фронте например, а потом проверять на критические ошибки на бэке

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🐞Что-то не работает

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions