Comprimir um arquivo Office

O arquivo .docx, .xlsx ou .pptx com fotos dentro está pesado demais para o e-mail ou o portal? Aqui só as imagens são recomprimidas e todo o resto fica idêntico byte a byte: o texto do documento não pode mudar. O arquivo nunca sai do seu navegador.

Toque aqui ou arraste um .docx, .xlsx ou .pptx

O arquivo nunca sai do seu navegador: ele é comprimido aqui, não é enviado para lugar nenhum.

Onde está o peso, e por que só as imagens são alteradas

Um arquivo Office moderno (.docx, .xlsx, .pptx) é, na verdade, um arquivo ZIP com muitas partes dentro: o texto, a formatação e as imagens, que são arquivos à parte. Quando um documento pesa dezenas de MB, o peso está quase sempre nas fotos de alta resolução colocadas lá dentro (uma foto de celular pesa mais que mil páginas de texto). Aqui só essas são recomprimidas: todo o resto do documento é copiado exatamente como estava, por isso o texto, as tabelas e a formatação não têm como quebrar.

Por que não tem como quebrar

É a mesma ideia de Limpar um arquivo Office: as partes que não são alteradas não são reconstruídas, são copiadas ainda comprimidas, byte a byte. E as imagens são recomprimidas no próprio formato (um JPEG continua JPEG, um PNG continua PNG): assim os nomes dos arquivos, os links internos e o mapa de tipos ficam intactos. Mudar o formato de uma imagem seria justamente o que faz aparecer “O Word encontrou um problema”.

O que acontece com as imagens

Cada foto é reduzida (se for enorme) e recomprimida numa qualidade mais baixa, mas ainda boa para ler e imprimir. Você escolhe o nível: “para a tela” gera o arquivo mais leve, “boa” é o meio-termo recomendado, “alta” altera pouco. Uma regra que você não vê: se recomprimir uma imagem não traz ganho nenhum (já era leve, ou é um logo pequeno), ela fica como estava, então o arquivo nunca piora.

Como se confere que está certo

O arquivo gerado é relido pelos programas que leem Office de verdade (python-docx, openpyxl, python-pptx): o texto deve ser idêntico ao original, senão algo quebrou. Além disso, o arquivo precisa passar na verificação de integridade (unzip -t), o número de imagens deve continuar o mesmo e, num arquivo com imagens pesadas, o peso deve cair de verdade. Um arquivo que abre mas com o texto alterado é a pior falha, e este teste pega isso.

O que ele não faz

Ele não mexe no texto, na formatação, nas tabelas: só nas imagens. Não decodifica formatos vetoriais (EMF, WMF, os gráficos desenhados pelo Office): esses ele deixa como estavam e avisa. Se o arquivo tem senha, ela precisa ser removida antes, e dá para fazer isso aqui também com Remover a senha de um arquivo Office. Para remover dados ocultos (autor, revisões) existe Limpar um arquivo Office, e para um PDF em vez de um arquivo Office existe Comprimir PDF.

Ferramentas relacionadas