Como posso corrigir / reparar um arquivo PDF corrompido?


80

Alguém tem alguma recomendação ou procedimento para reparar um PDF corrompido? Quando abro o arquivo, obtenho "Ocorreu um erro ao abrir este documento. O arquivo está danificado e não pode ser reparado". Parece haver uma infinidade de ferramentas por aí, mas nenhuma que eu possa descrever como respeitável. Existe alguma solução baseada em Linux de código aberto para isso, possivelmente?


As ferramentas de PDF de código-fonte aberto tendem a ser bem ruins, receio. O que você está usando?
23630 Satanicpuppy


não gostaram da aparência de nenhuma das ferramentas, pois pareciam uma miríade de "Limpadores de Registro" por aí que são inúteis. Tentei o Adobe Pro e comecei a procurar se o Ghostscript ou o PDFForge possui opções de reparo.
Tim Alexander

O Ghostscript está bem, mas certamente não é melhor que o Acrobat. São ossos completamente nus.
23630 Satanicpuppy

6
@Satanicpuppy Não concordo: Eu uso o ghostscript para reconstruir PDFs danificados ou de baixa qualidade com bastante frequência e ele funciona muito bem.
Eddie B

Respostas:


100

O Ghostscript reparará seu PDF corrompido automaticamente ... se ele puder ser aberto (se não estiver danificado além do reparo). Mas depois você ainda precisará verificar o resultado ...

No Linux, tente este comando:

 gs \
  -o repaired.pdf \
  -sDEVICE=pdfwrite \
  -dPDFSETTINGS=/prepress \
   corrupted.pdf

No Windows, tente este:

 gswin32c.exe ^
  -o repaired.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/prepress ^
   corrupted.pdf

2
O Ghostscript faz um trabalho fantástico de renderização de PDFs ... Eu uso regularmente o gs para reconstruir os PDFs para melhorar a qualidade da fonte.
Eddie B

1
A pré-impressão torna a qualidade realmente boa em comparação com a / tela. Obrigado.
Dolanor

Recebo "Ocorreu um erro ao ler uma tabela XREF". O que isso significa?
Geremia

Isso significa que o índice interno (o que os PDFs precisam conter como tabela XREF ) teve um erro, apontando para um deslocamento de bytes incorreto para um objeto PDF. O Ghostscript provavelmente reparou esse erro e inseriu uma tabela XREF correta na saída. Você pode verificar isso executando a saída no Ghostscript mais uma vez e ver se esta mensagem ainda aparece.
Kurt Pfeifle

37

Eu tinha um arquivo PDF corrompido print.pdf, que o Ghostscript não pôde abrir, mas os visualizadores gráficos comuns do Linux em PDF (Okular, Evince) abriram bem. (No meu caso, o arquivo tinha lixo no início, em vez de um cabeçalho PDF, quando aberto em um editor hexadecimal.)

Esses visualizadores de PDF usam o Poppler como um renderizador de PDF de back-end. Assim, você pode reparar o PDF usando as ferramentas de linha de comando do Poppler. No Ubuntu, eles estão no poppler-utilspacote. Eu usei:

pdftocairo -pdf print.pdf print_repaired.pdf

que gerou um arquivo PDF com cabeçalhos corretos, que ferramentas como Ghostscript agora aceitam.


3
Marquei com +1 este PDF gerado pelo Quartz sem reclamações e imediatamente comecei a gerar resultados. Ghostscript, Adobe Acrobat Pro e outros insistiram em reconstruir meu pdf de 120 GB primeiro.
Orwellophile

Isso não funcionou em pelo menos um PDF estranho que eu encontrei, mas parece um bom começo.
Brian Peterson

1
Funciona perfeitamente em um PDF no qual o Ghostscript queria remover alguns elementos arbitrários das páginas.
Andrea Lazzarotto

O Ghostscript não conseguiu ler o documento, mas isso funcionou como um encanto. BTW eu fiz isso no Windows usando o novo subsistema linux, tão legal!
precisa saber é

24

mutool( página do projeto , página de manual ) reparará PDFs quebrados sem imprimi-los .

  • Instalação, por exemplo, no Ubuntu: sudo apt-get install mupdf-tools
  • Execute-o assim: mutool clean input.pdf output.pdf
mutool clean [options] input.pdf [output.pdf] [pages]

  The clean command pretty prints and rewrites the syntax of a PDF file.
   It can be used to repair broken files, expand compressed streams,
   filter out a range of pages, etc.
  If no output file is specified, it will write the cleaned PDF to
   "out.pdf" in the current directory.

Como alternativa, existem algumas ferramentas e estruturas que podem decompor / descompilar PDFs em seus componentes sem renderizá-los. Isso pode ser útil para extrair texto, scripts e imagens. Consulte esta resposta para obter uma lista dessas ferramentas: https://reverseengineering.stackexchange.com/q/1526/8210 . Por exemplo, você pode tentar a resposta atual atual do Origami , que possui um visualizador baseado em GTK.


3
Esta solução funciona "melhor" do que as soluções oferecidas acima ou melhor classificadas, pois não "imprime" o arquivo PDF e mantém ativos os links, itens clicáveis, etc ... Para mim, parece uma solução mais elegante do que usar o ghostscript ou Cairo.
precisa saber é o seguinte

1
Infelizmente, mutool cleannão corrige todos os erros possíveis. Eu tenho um arquivo que possui vários erros nos fluxos de fonte e conteúdo, e o mutool manterá esses erros.
Dominik Honnef

1
@DominikHonnef Você sempre pode experimentar ferramentas / estruturas que decompõem o PDF e permitem visualizar todas as partes sem renderizá-las. Isso deve permitir que você obtenha texto, scripts, imagens etc. diretamente. Veja esta resposta para uma lista de ferramentas: reverseengineering.stackexchange.com/q/1526/8210
jmiserez

A única coisa que funcionou para mim!
Jamadagni

Isso funcionou melhor, pois isso não renderiza o pdf e examina o documento.
Riccs_0x 04/10/19

10

Eu tinha um arquivo pdf corrompido, porque o arquivo php usado para fazer o download ecoou alguns erros (em HTML) e caracteres NUL no final.

A solução foi abrir o pdf com o Notepad ++ e remover todo o texto após a linha

%%EOF

tinha o mesmo, o Adobe Reader não abriu, mas o plug-in PDF nativo do Mac, Chrome e Firefox exibia um arquivo PDF bem. O motivo também foi extra "NUL" na última linha adicionada durante o upload.
Tilo

Eu tinha um PDF com dois %%EOF. Eu apaguei tudo após o primeiro %%EOFusando um editor hexadecimal. Agora tudo funciona bem.
Adrian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.