fix: compressão real p/ stream DCTDecode + auth c/ chave vazia
- Substitui xobj._data por page.images[].replace() em compress.py e pdfa.py - Adiciona compress_with_stats() com feedback honesto na UI - Trata PDFTOOLKIT_API_KEY vazia como modo dev (auth desabilitado) - Atualiza engine.py e app.py para exibir redução real ou 'já otimizado'
This commit is contained in:
@@ -9,7 +9,7 @@ import io
|
||||
from typing import List, Tuple
|
||||
|
||||
from .validators import validate_pdf, assert_safe_filename
|
||||
from .compress import compress_pdf
|
||||
from .compress import compress_pdf, compress_pdf_with_stats
|
||||
from .pdfa import detect_pdfa, strip_pdfa, compress_pdfa
|
||||
from .operations import merge_pdfs, split_pdf, extract_pages, rotate_pages
|
||||
from .operations import extract_text, extract_images, preview_pages
|
||||
@@ -38,8 +38,18 @@ class PDFEngine:
|
||||
ou que não possuem imagens adequadas para reamostragem. Nesse caso,
|
||||
preservamos o original em vez de entregar um arquivo maior.
|
||||
"""
|
||||
result = compress_pdf(data, preset=preset)
|
||||
return result if len(result) < len(data) else data
|
||||
result, stats = compress_pdf_with_stats(data, preset=preset)
|
||||
if stats["reduced"]:
|
||||
return result
|
||||
return data
|
||||
|
||||
@staticmethod
|
||||
def compress_with_stats(data: bytes, preset: str = "ebook") -> Tuple[bytes, dict]:
|
||||
"""Comprime e retorna (bytes, estatísticas) para feedback na UI."""
|
||||
result, stats = compress_pdf_with_stats(data, preset=preset)
|
||||
if stats["reduced"]:
|
||||
return result, stats
|
||||
return data, stats
|
||||
|
||||
@staticmethod
|
||||
def pdfa_to_regular(data: bytes) -> bytes:
|
||||
|
||||
Reference in New Issue
Block a user