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:
16
app.py
16
app.py
@@ -148,13 +148,16 @@ try:
|
||||
if operation == "📦 Comprimir PDF":
|
||||
progress.progress(0.1, "Comprimindo...")
|
||||
for i, (fname, fobj) in enumerate(files_data.items()):
|
||||
result_data = engine.compress(fobj["data"], preset=extra_opts["preset"])
|
||||
result_data, stats = engine.compress_with_stats(fobj["data"], preset=extra_opts["preset"])
|
||||
orig_mb = fobj["info"]["file_size_mb"]
|
||||
new_mb = round(len(result_data) / (1024 * 1024), 2)
|
||||
reduction = round((1 - (new_mb / orig_mb)) * 100, 1) if orig_mb > 0 else 0
|
||||
results.append((fname.replace(".pdf", f"_comprimido.pdf"), result_data))
|
||||
progress.progress((i + 1) / len(files_data),
|
||||
f"{fname}: {orig_mb}MB → {new_mb}MB ({reduction}% redução)")
|
||||
if stats["reduced"]:
|
||||
msg = f"{fname}: {orig_mb}MB → {new_mb}MB ({reduction}% redução)"
|
||||
else:
|
||||
msg = f"{fname}: já otimizado — {len(result_data)} bytes (sem redução adicional)" if stats["images_replaced"] == 0 else f"{fname}: {orig_mb}MB → {new_mb}MB (compressão não reduziu o tamanho, original preservado)"
|
||||
progress.progress((i + 1) / len(files_data), msg)
|
||||
|
||||
elif operation == "📄 PDF/A → PDF comum":
|
||||
progress.progress(0.1, "Convertendo PDF/A...")
|
||||
@@ -174,12 +177,13 @@ try:
|
||||
if fobj["info"].get("is_pdfa"):
|
||||
result_data = engine.compress_pdfa(fobj["data"], quality=q)
|
||||
else:
|
||||
# Se não for PDF/A, aplica compressão normal
|
||||
result_data = engine.compress(fobj["data"], preset=extra_opts["preset"])
|
||||
# Se não for PDF/A, aplica compressão normal com stats
|
||||
result_data, _ = engine.compress_with_stats(fobj["data"], preset=extra_opts["preset"])
|
||||
orig_mb = fobj["info"]["file_size_mb"]
|
||||
new_mb = round(len(result_data) / (1024 * 1024), 2)
|
||||
results.append((fname.replace(".pdf", f"_otimizado.pdf"), result_data))
|
||||
progress.progress((i + 1) / len(files_data))
|
||||
progress.progress((i + 1) / len(files_data),
|
||||
f"{fname}: {orig_mb}MB → {new_mb}MB")
|
||||
|
||||
elif operation == "🔗 Merge (juntar PDFs)":
|
||||
progress.progress(0.3, "Mesclando PDFs...")
|
||||
|
||||
Reference in New Issue
Block a user