Otimização da estrutura ou reconstrução: que ferramenta é adequada?
Os dois programas utilizam abordagens fundamentalmente diferentes. O comando QPDF desta página mantém o conteúdo das tuas páginas e limita-se a voltar a guardar os objetos do ficheiro da forma mais compacta possível. Para isso, por exemplo, agrupa objetos em fluxos de objetos e volta a comprimir dados Flate. Não reduz a resolução das imagens nem as volta a codificar como JPEG. A otimização opcional de imagens do QPDF é uma etapa separada, com perdas, que a secção seguinte contextualiza brevemente. A documentação do QPDF descreve cada opção.
O Ghostscript funciona de outra forma. Com o dispositivo de saída pdfwrite, lê o PDF e cria um novo ficheiro a partir das instruções de desenho de cada página. O texto e os gráficos vetoriais são geralmente preservados como tal, pelo que as páginas não são simplesmente transformadas em imagens. No entanto, consoante as definições, o Ghostscript pode recalcular as imagens. Além disso, tudo o que não faça parte do aspeto visível da página pode sofrer alterações. O manual do Ghostscript sobre pdfwrite explica este funcionamento.
Alguns programas oferecem ainda uma terceira via: geram novamente cada página como imagem. Nesse processo, perdem-se geralmente o texto nativo, a pesquisa e os elementos interativos. Nenhum dos dois comandos desta página funciona dessa forma.
Nenhum destes métodos garante um ficheiro mais pequeno. Como regra prática: se o teu PDF for composto sobretudo por texto e gráficos vetoriais, começa pelo QPDF. O mesmo se aplica quando pretendes alterar o mínimo possível as imagens, ligações ou formulários. O Ghostscript pode ser adequado quando as fotografias grandes ou as digitalizações representam a maior parte do tamanho e podes prescindir de alguma qualidade de imagem. O guia Comprimir PDF sem perda de qualidade explica o que significam, na prática, os métodos sem perdas e com perdas.
Os programas com interface gráfica seguem as mesmas abordagens. Segundo as suas próprias informações, o PDFsam distingue a simples otimização da estrutura na edição Basic de uma compressão de imagens própria nas edições Visual e Enhanced. Os guias mais antigos para scripts de gestores de ficheiros ou interfaces que executam o Ghostscript em segundo plano referem-se, em parte, a versões anteriores do Ubuntu. Por isso, não sigas os respetivos passos de instalação sem os verificar. Segundo o fabricante, o PDF24 Creator só está disponível para Windows, não existindo uma edição para Linux.
Se não quiseres instalar nada, podes utilizar o compressor de PDF no navegador. Processa o ficheiro no teu dispositivo, sem o enviar. No entanto, não o testámos especificamente em navegadores Linux. O guia Comprimir PDF sem envio do ficheiro explica a diferença entre o processamento local no navegador e o trabalho verdadeiramente sem ligação à Internet.
Verificar a versão e criar um ficheiro de saída separado
Visão geral dos comandos
Seleciona um dos seis comandos deste guia. Verás o comando sem alterações e uma explicação do significado de cada parte.
Os comandos provêm dos manuais oficiais do QPDF e do Ghostscript. Não os executámos em Ubuntu nem noutra distribuição. As versões instaladas no teu sistema podem ser diferentes das versões abrangidas pela documentação online.
Esta página não executa comandos nem apresenta a saída do terminal. Só verás as mensagens do teu sistema quando executares um comando tu próprio.
Mostrar a versão do QPDF
Mostra a versão instalada do QPDF. Verifica-a antes de utilizares os restantes comandos.
qpdf --versionTambém podes selecionar e copiar o comando diretamente no campo de código.
As partes do comando
qpdfPrograma- Invoca o programa de linha de comandos QPDF.
--versionMostrar versão- Apresenta a versão do QPDF utilizada no teu sistema.
Se a shell indicar que o comando não foi encontrado, é provável que o QPDF não esteja instalado. O nome do pacote e a instalação dependem da tua distribuição.
Localização no guiaMostrar a versão do Ghostscript e os dispositivos de saída
Mostra a versão do Ghostscript e os dispositivos de saída disponíveis.
gs -hTambém podes selecionar e copiar o comando diretamente no campo de código.
As partes do comando
gsPrograma- Invoca o Ghostscript. Em Unix, o programa chama-se gs.
-hAjuda- Apresenta a versão, as opções, os formatos, os dispositivos de saída disponíveis e o caminho de pesquisa.
Se a shell indicar que o comando não foi encontrado, é provável que o Ghostscript não esteja instalado. Anota a distribuição e a versão para poderes compreender os resultados mais tarde.
Localização no guiaGuardar a estrutura de forma mais compacta
Volta a guardar os objetos do ficheiro da forma mais compacta possível. As imagens não são reduzidas em resolução nem recodificadas como JPEG.
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"Também podes selecionar e copiar o comando diretamente no campo de código.
As partes do comando
qpdfPrograma- Invoca o programa de linha de comandos QPDF.
"original.pdf"Ficheiro de entrada- O PDF que será lido. O resultado é guardado num ficheiro separado.
--object-streams=generateCriar fluxos de objetos- Agrupa os objetos adequados em fluxos de objetos e comprime-os. O ficheiro de saída terá, pelo menos, a versão PDF 1.5.
--compress-streams=yComprimir fluxos- Comprime os fluxos com Flate, desde que ainda não estejam comprimidos de outra forma.
--decode-level=generalizedDescomprimir filtros gerais- Descomprime dados com filtros gerais suportados, como LZW, Flate, ASCII85 e ASCIIHex. Os dados JPEG (DCT) não são descomprimidos.
--recompress-flateVoltar a comprimir com Flate- Descomprime os fluxos Flate existentes e volta a comprimi-los. Isto pode tornar a gravação mais demorada.
--compression-level=9Nível de compressão- Seleciona para Flate o nível zlib mais elevado no intervalo documentado de 1 a 9. Os níveis mais elevados demoram mais tempo. Este valor não está relacionado com a qualidade JPEG.
"optimiert-qpdf.pdf"Ficheiro de saída- Nome do novo ficheiro. Nos dois comandos de verificação, este ficheiro é a entrada.
Só a comparação do número de bytes permite saber se o novo ficheiro é mais pequeno. Um nome de saída diferente não impede que um ficheiro existente com esse mesmo nome seja substituído. Por isso, escolhe um nome ainda não utilizado. O comando não garante que uma assinatura digital se mantenha válida.
Localização no guiaReconstruir o PDF com pdfwrite
O Ghostscript lê o PDF e cria um novo ficheiro a partir das instruções de desenho de cada página, neste caso com a predefinição /ebook.
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"Também podes selecionar e copiar o comando diretamente no campo de código.
As partes do comando
gsPrograma- Invoca o Ghostscript.
-dSAFERControlo de acesso- Restringe o acesso a ficheiros e dispositivos. Este é o comportamento predefinido desde a versão 9.50. Não constitui uma garantia geral de segurança.
-dBATCHTerminar depois- Termina o Ghostscript assim que os ficheiros indicados forem processados, em vez de passar para o modo interativo.
-dNOPAUSESem pausa- Suprime o pedido de confirmação e a pausa no fim de cada página.
-sDEVICE=pdfwriteDispositivo de saída- Seleciona pdfwrite, que cria um novo PDF. O texto e os gráficos vetoriais são geralmente preservados. Tudo o que não fizer parte do aspeto visual da página pode mudar.
-dPDFSETTINGS=/ebookPredefinição- Define um conjunto de parâmetros individuais com resolução de imagem média. O nome descreve uma finalidade de utilização, não um nível de qualidade nem uma redução garantida.
-sOutputFile="optimiert-gs.pdf"Ficheiro de saída- Define o nome do novo ficheiro.
"original.pdf"Ficheiro de entrada- O PDF que o Ghostscript lê.
Os detalhes das imagens e as funcionalidades do documento podem mudar, mesmo que as páginas tenham o mesmo aspeto. Não é garantido um tamanho ou uma qualidade específicos. Verifica o ficheiro de saída guardado e escolhe um nome de saída ainda não utilizado.
Localização no guiaVerificar a estrutura do ficheiro de saída
Verifica a sintaxe do ficheiro de saída guardado. Para o resultado do Ghostscript, substitui o nome do ficheiro.
qpdf "optimiert-qpdf.pdf" --checkTambém podes selecionar e copiar o comando diretamente no campo de código.
As partes do comando
qpdfPrograma- Invoca o programa de linha de comandos QPDF.
"optimiert-qpdf.pdf"Ficheiro a verificar- O ficheiro de saída anteriormente guardado pelo comando QPDF.
--checkVerificar a estrutura- Verifica a estrutura, a encriptação, a linearização e a codificação dos fluxos.
O código de retorno 0 indica uma verificação sem erros, 2 indica erros e 3 indica avisos. A verificação abrange apenas a estrutura do ficheiro. Não indica se o aspeto está correto, se os formulários e as ligações funcionam ou se o ficheiro é seguro.
Localização no guiaApresentar o número de páginas
Apresenta o número de páginas do ficheiro de saída guardado. Executa novamente o comando com o nome do original e compara os dois números.
qpdf "optimiert-qpdf.pdf" --show-npagesTambém podes selecionar e copiar o comando diretamente no campo de código.
As partes do comando
qpdfPrograma- Invoca o programa de linha de comandos QPDF.
"optimiert-qpdf.pdf"Ficheiro cujas páginas serão contadas- O ficheiro de saída anteriormente guardado pelo comando QPDF.
--show-npagesContar páginas- Apresenta o número de páginas do ficheiro indicado.
Ter o mesmo número de páginas não significa que o conteúdo, as imagens e as funcionalidades se mantenham inalterados. Examina as páginas.
Localização no guiaO botão só coloca o comando apresentado na área de transferência depois de clicares nele. Não lê a área de transferência, não guarda nada nem envia nada.
Os comandos desta página provêm dos manuais oficiais do QPDF e do Ghostscript. Não os executámos em Ubuntu nem noutra distribuição, pelo que este não é um guia testado em Ubuntu. Começa por verificar que versões estão instaladas no teu sistema. Os pacotes da tua distribuição podem diferir das versões descritas na documentação atual disponível na Internet.
Mostrar as versões instaladas
qpdf --versiongs -hSe a shell indicar que um comando não foi encontrado, o programa provavelmente não está instalado. O nome do pacote e a forma de o instalar dependem da tua distribuição. Anota a distribuição e as versões para poderes compreender e reproduzir um resultado mais tarde.
Regras básicas para cada tentativa
- Mantém o original intacto. A entrada e a saída devem ter sempre nomes de ficheiro diferentes.
- Dá a cada ficheiro de saída um nome novo, ainda não utilizado, para não substituíres um ficheiro anterior.
- Começa cada nova tentativa novamente a partir do original, e não do resultado da execução anterior.
- Não utilizes opções ou scripts que substituam diretamente o ficheiro de entrada.
QPDF: otimizar a estrutura de armazenamento
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"O comando lê original.pdf e cria um novo ficheiro chamado optimiert-qpdf.pdf. As opções fazem com que os objetos sejam agrupados em fluxos de objetos, os fluxos de dados sejam comprimidos e os dados Flate sejam novamente comprimidos com o nível mais elevado. O processo não inclui o recálculo de imagens. Os fluxos de objetos exigem PDF 1.5. Se um destinatário exigir expressamente uma versão PDF mais antiga, este comando não é diretamente adequado.
O QPDF também pode otimizar imagens e voltar a codificar dados JPEG com uma qualidade selecionável. A opção de qualidade JPEG está disponível a partir da versão 12.1. Ambos os processos têm perdas e podem degradar ainda mais imagens JPEG já comprimidas. Utiliza-os apenas se depois verificares especificamente as imagens.
Ghostscript: reescrever o PDF com uma predefinição
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"-sDEVICE=pdfwrite seleciona a saída PDF, -sOutputFile define o nome do novo ficheiro e o ficheiro de entrada aparece no fim. -dBATCH e -dNOPAUSE impedem que o Ghostscript fique à espera de introdução de dados. -dSAFER também aparece desta forma nos exemplos do guia da linha de comandos do Ghostscript. A predefinição /ebook é apenas um ponto de partida, não uma recomendação para todos os ficheiros.
Compreender corretamente as predefinições do Ghostscript
Com -dPDFSETTINGS, selecionas de uma só vez um conjunto completo de parâmetros individuais. O nome de uma predefinição descreve uma finalidade de utilização. Não representa um nível de qualidade nem uma redução de tamanho específica.
Então /prepress oferece a melhor qualidade? Não. O manual salienta expressamente que /prepress não é a definição mais fiel ao original. Sem -dPDFSETTINGS, o resultado pode manter-se mais próximo do original. /prepress também não garante o ficheiro mais pequeno.
Os valores pretendidos de /screen e /ebook não significam que todas as imagens passem a ter exatamente 72 ou 150 dpi. As imagens abaixo do limiar não têm a resolução reduzida e mantêm a sua resolução. Isso não significa necessariamente que fiquem completamente inalteradas, pois os restantes parâmetros da predefinição, por exemplo os relativos à codificação de imagens ou às cores, podem modificá-las na mesma. A opção -r não substitui a redução da resolução. Controla apenas a resolução quando o Ghostscript precisa de renderizar partes como alternativa e não reduz as imagens incorporadas. Segundo o manual, muitas vezes é preferível definir parâmetros individuais de forma específica em vez de depender de uma predefinição.
Não utilizes a mesma predefinição para todos os ficheiros. Um documento de texto, um catálogo de fotografias e uma digitalização reagem de formas diferentes. No caso das digitalizações, o melhor é começar logo pelas definições de digitalização. O guia Reduzir o tamanho de um PDF digitalizado explica como fazê-lo.
Verificar texto, ligações, formulários e assinaturas
O facto de um PDF ter o mesmo aspeto depois da compressão não prova que tudo o que estava guardado tenha sido preservado. O Ghostscript reconstrói o ficheiro. Segundo a explicação do Ghostscript sobre a otimização de PDF, um aspeto idêntico pode ocultar instruções e metadados alterados. Mesmo depois de utilizares o QPDF, verifica as funcionalidades que são importantes para ti:
- Seleciona e copia texto e experimenta a pesquisa.
- Clica nas ligações e nos marcadores.
- Se o ficheiro for um formulário, preenche os campos e guarda-os para testar.
- Verifica informações como o título ou o autor, se o destinatário as utilizar.
- Se for exigida uma norma específica, como PDF/A, verifica-a com uma ferramenta própria para esse fim. Nenhum dos comandos apresentados aqui garante essa conformidade.
PDFs com assinatura digital
Nenhum dos dois comandos pode garantir que uma assinatura digital continue válida após a reescrita. Por isso, a compressão não é uma forma adequada de reduzir o tamanho de um PDF assinado. Conserva o original assinado sem alterações. Se outra pessoa tiver assinado o documento e precisares de uma versão mais pequena, obtém o ficheiro de origem não assinado ou fala com quem o assinou. Combina uma nova assinatura com o emissor ou o destinatário. A página da Adobe sobre as limitações dos PDFs assinados fornece mais contexto. Uma assinatura visível digitalizada não é uma assinatura digital.
Remover a proteção por palavra-passe ou as restrições de edição não faz parte da redução do tamanho, e não encontrarás aqui comandos para o fazer. Pede antes ao remetente uma versão adequada. Encontras mais informações sobre como lidar com estes documentos no guia Compreender assinaturas e formulários.
Comparar o tamanho do resultado e conservar o original
O facto de um comando terminar sem mensagens de erro ainda não diz nada sobre o resultado. Compara o tamanho exato do original e do ficheiro de saída em bytes, não apenas valores arredondados em MB. Podes calcular a percentagem de redução com a calculadora da taxa de compressão.
Verificar a sintaxe e o número de páginas
qpdf "optimiert-qpdf.pdf" --checkO QPDF indica uma verificação sem erros com o código de retorno 0, erros com 2 e avisos com 3. A verificação abrange apenas a estrutura do ficheiro. Não indica se os formulários, as ligações e as imagens continuam a funcionar e a ter o mesmo aspeto que antes.
qpdf "optimiert-qpdf.pdf" --show-npagesVerificar num visualizador de PDF
- Volta a abrir o ficheiro de saída guardado a partir da respetiva pasta.
- Percorre todas as páginas e compara o formato e a orientação com o original.
- Observa as imagens, o texto pequeno e as linhas finas com uma ampliação elevada.
- Testa a pesquisa, as ligações e os formulários conforme descrito na secção anterior.
- Se possível, abre também o ficheiro num segundo visualizador.
Maior, inalterado ou vazio?
O Ghostscript também pode aumentar o tamanho de um PDF. O ficheiro é reconstruído e codificado de outra forma, e as novas instruções por vezes precisam de mais espaço do que as antigas. Também há pouco a ganhar com o QPDF se o ficheiro já estiver guardado de forma compacta.
Um resultado maior ou apenas ligeiramente mais pequeno pode, ainda assim, ser válido. Só as mesmas verificações do ficheiro guardado aplicadas a qualquer outra saída permitem confirmá-lo, pois o tamanho, por si só, nada diz sobre erros ou funcionalidades perdidas. No fim, conserva o ficheiro mais adequado; muitas vezes, é simplesmente o original. O caso é diferente quando o ficheiro de saída está vazio, ilegível ou danificado. Isso é uma tentativa falhada, não uma compressão particularmente forte. Não envies esse ficheiro; lê as mensagens no terminal e volta a começar a partir do original, com um novo nome de saída.
Se o PDF continuar demasiado grande para o limite de um destinatário, encontras os próximos passos no guia O PDF não fica mais pequeno. Em qualquer caso, conserva o original até que a nova versão tenha sido recebida e aceite.