Existe alguma ferramenta que eu possa executar nos arquivos PDF (todos os diretórios) e, finalmente, ela lista / identifica os PDFs corrompidos / inválidos?
Tenho centenas de arquivos PDF (relacionados à documentação etc.) no meu computador (máquina Windows) e, muitas vezes, recebo / tenho que enviar dezenas de PDFs por email. Agora é uma rotina normal que o PDF que recebo ou envio esteja corrompido. Às vezes, isso cria sérios problemas quando o arquivo de origem (por exemplo, o arquivo do Word ou o arquivo Tex está ausente / não está disponível instantaneamente).
A verificação desses milhares de PDFs não é possível em tempo limitado, por isso procurei uma ferramenta que possa ser executada uma vez, que digitaliza todos os PDFs (em diretórios e subdiretórios) e, por fim, obtenho uma lista dos arquivos que devo repor. -crio. Até agora, parece que não existe essa ferramenta.
fonte
Respostas:
É muito fácil verificar se um arquivo PDF é válido usando o PDFtk. Uma GUI gratuita para PDFtk está disponível no PDF Labs . Ao executar esta ferramenta, você pode carregar quantos PDFs desejar, de vários diretórios (usando o botão Adicionar arquivos) e, em seguida, começará a acessar as páginas desses arquivos PDF muito rapidamente.
Se algum arquivo entre os PDFs selecionados não for um PDF válido, esse utilitário mostrará uma mensagem sobre o erro e o removerá automaticamente da janela de seleção.
Portanto, você pode economizar muitas horas usando este procedimento com o PDFtk. Além disso, se você tiver CPU multicore, poderá executar várias instâncias desse utilitário e lançar centenas de PDFs em cada instância.
Estou usando este software desde o último ano e é a ferramenta PDF mais útil que já usei.
fonte
cd
emFolderContainingPDFs
e executar comando a seguir no Shell do Windows, e vai marcar o arquivo inválido PDF em um arquivo de log:FORFILES /S /M *.pdf /C "cmd /c echo. & echo @path @fname & D:\XPDF_3.04\bin64\pdfinfo.exe @file" 1>text.txt 2>&1
Eu usei "pdfinfo.exe" do pacote xpdfbin-win e cpdf.exe para verificar a corrupção de arquivos PDF, mas não queria envolver um binário, se não fosse necessário.
Li que os formatos PDF mais recentes têm um catálogo de dados xml legíveis no final, então abri o PDF com janelas regulares NOTEPAD.exe e rolei os dados ilegíveis até o final e vi várias teclas legíveis. Eu só precisava de uma chave, mas optei por usar CreationDate e ModDate.
O seguinte script do Powershell (PS) verificará TODOS os arquivos PDF no diretório atual e emitirá o status de cada um em um arquivo de texto (! RESULTS.log). Demorou cerca de 2 minutos para executar isso em 35.000 arquivos PDF. Tentei adicionar comentários para quem é novo no PS. Espero que isso economize tempo para alguém. Provavelmente existe uma maneira melhor de fazer isso, mas isso funciona perfeitamente para meus propósitos e lida com erros silenciosamente. Pode ser necessário definir o seguinte no início: $ ErrorActionPreference = "SilentlyContinue" se você encontrar erros na tela.
Copie o seguinte em um arquivo de texto e nomeie-o adequadamente (ex: CheckPDF.ps1) ou abra o PS e navegue até o diretório que contém os arquivos PDF para verificar e colar no console.
fonte
Seguindo os passos do @ n0nuf, escrevi um script em lote para verificar todos os PDFs em uma pasta específica com pdfinfo e enviá-lo através do cpdf, se quebrado, como uma tentativa de corrigi-los:
Ou o mesmo que o script bash:
PDFs quebrados serão movidos para uma subpasta \ bak e os PDFs recriados receberão o sufixo _.pdf (que não é perfeito, mas é bom o suficiente para mim). NOTA: Um PDF recriado contém erros menores e deve ser visualizado com um visualizador de PDF comum. Mas isso não significa que você recupere todo o seu conteúdo. Conteúdo irrecuperável leva a páginas vazias.
Eu também tentei o mesmo com o JHOVE (ferramenta de identificação, validação e caracterização de formato de arquivo de código aberto), conforme sugerido por @kraftydevil aqui: Verifique se os arquivos PDF estão corrompidos usando a linha de comando no Linux e agora posso confirmar que essa também é uma abordagem válida. (Primeiro, tive menos sucesso. Mas depois notei que não havia manipulado a saída do JHOVE corretamente.)
Para testar as duas abordagens, apaguei e alterei partes aleatórias de um PDF com um editor de texto (fluxos removidos, para que as páginas não fossem renderizadas no visualizador de PDF, alterei as Tags PDF e alterei alguns bits). O resultado é: Tanto o pdfinfo quanto o JHOVE conseguem detectar arquivos danificados corretamente (o JHOVE foi ainda mais sensível em alguns casos).
E aqui está o script equivalente para JHOVE:
fonte