File size: 707 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 pypdf import PdfReader, PdfWriter

def open_pdf(path: Path) -> fitz.Document:
    return fitz.open(path)

def save_pdf(doc: fitz.Document, out_path: Path) -> Path:
    out_path.parent.mkdir(parents=True, exist_ok=True)
    doc.save(out_path, garbage=4, deflate=True, clean=True)
    return out_path

def rebuild_pdf(input_path: Path, output_path: Path) -> Path:
    reader = PdfReader(str(input_path))
    writer = PdfWriter()
    for page in reader.pages:
        writer.add_page(page)
    output_path.parent.mkdir(parents=True, exist_ok=True)
    with output_path.open("wb") as f:
        writer.write(f)
    return output_path