Eu tenho muitos arquivos PDF em uma pasta.
É possível verificar se um ou mais arquivos estão corrompidos (zero páginas ou downloads inacabados) usando a linha de comando, sem a necessidade de abri-los um por um?
Talvez executando pdfinfo
(aqui no Fedora nopoppler-utils
pacote) dê uma pista?
A maioria das informações em um arquivo PDF está no dicionário no final, portanto, se achar que deve estar OK. Eu faria algo como:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfo
oupdftotext
...Este é o meu script
fonte
Minha ferramenta de escolha para verificar PDFs é
qpdf
.qpdf
tem um--check
argumento que faz bem em encontrar problemas em PDFs.Verifique um único PDF com
qpdf
:Verifique todos os PDFs em um diretório com
qpdf
:Explicação do comando:
find ./directory_to_scan/ -type f -iname '*.pdf'
Encontre todos os arquivos com extensão '.pdf'-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Executeqpdf
para cada arquivo encontrado e canalize toda a saída para/dev/null
. Também imprima o nome do arquivo seguido por ': OK' se o status de retornoqpdf
for 0 (ou seja, sem erros)-o -exec echo "{}": FAILED \; \)
Isso é executado se forem encontrados erros: Print filename seguido por ": FAILED"Onde conseguir
qpdf
:qpdf
possui binários Linux e Windows disponíveis em: https://github.com/qpdf/qpdf/releases . Você também pode usar o gerenciador de pacotes de sua escolha para obtê-lo. Por exemplo, no Ubuntu, você pode instalar o qpdf usando o apt com o comando:fonte
qpdf --check
não detecta metadados multiplamente definidos, que estão incorretos, pois são manipulados de maneira diferente por ferramentas diferentes. Eu relatei um bug . Outras ferramentas comopdfinfo
epdftk
também não, mas não pretendem verificar a estrutura do PDF.Eu obtive uma resposta:
PDFs com erros mostrarão erros.
fonte
ls
: mywiki.wooledge.org/ParsingLsfind (1)
. :-)Todos os métodos que usam
pdfinfo
oupdftotext
não funcionaram para mim. Na verdade, eles continuavam me dando falsos positivos e às vezes criavam arquivos que eu não precisava.O que funcionou foi JHOVE .
Instalação:
Instale o jar a partir do link acima e atualize sua variável de ambiente PATH com este comando:
Atualize cada terminal
source ~/.bash_profile
e você poderá começar a usá-lo em todo o sistema.Uso básico:
Você obterá muitas informações sobre o pdf - mais do que a maioria das pessoas provavelmente precisa.
Bash One-Liner:
simplesmente retorna
valid
ouinvalid
:Observe que isso foi executado no Mac OS X, mas presumo que funcione da mesma forma em qualquer ambiente Bash baseado em Unix.
fonte