File size: 890 Bytes
734b5b4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from __future__ import annotations
from pathlib import Path
import fitz
from src.services.pdf_ops import rebuild_pdf

class OfflineValidationAgent:
    name = "validation_agent"

    def run(self, input_pdf: Path, output_pdf: Path) -> tuple[Path, dict]:
        report = {"validated": False, "rebuilt": False, "page_count": 0}
        try:
            doc = fitz.open(input_pdf)
            report["page_count"] = doc.page_count
            report["validated"] = True
            output_pdf.parent.mkdir(parents=True, exist_ok=True)
            doc.save(output_pdf, garbage=4, deflate=True, clean=True)
            return output_pdf, report
        except Exception:
            rebuilt = rebuild_pdf(input_pdf, output_pdf)
            doc = fitz.open(rebuilt)
            report.update({"validated": True, "rebuilt": True, "page_count": doc.page_count})
            return rebuilt, report