Ajuda com shell script “avançado” | como criar uma visualização de imagem de um pdf

0

Primeiro de tudo, desculpe pelo meu inglês: eu não sou britânico / americano.

Aqui está o meu problema. Eu tenho uma pasta chamada pdf com muitos arquivos pdf dentro dela. Eu tenho outra pasta chamada thumbnail, que está vazia. Eu quero criar uma visualização de imagens jpg de cada pdf para usá-las em minhas páginas HTML como prévias do pdf.

Para fazer isso, estou usando um software chamado IMAGEMAGICK. Eu tentei colocar o código dentro dos meus arquivos PHP para obter o propósito, mas não funciona. Como você entendeu, eu criei um pequeno motor de busca com o apache, mysql para procurar por pdf localmente (offline). Agora quero adicionar uma "prévia" da primeira página dos pdfs. Em vez disso, ele funciona por linha de comando bash e o código é:

convert pdf/name_of_the_file_pdf.pdf[0] name_of_the_imagefile.jpg

(O zero significa que a imagem é retirada da PRIMEIRA página do pdf) Como posso fazer um script que leva cada nome de arquivos pdf e colocá-lo nesse código ?? Para listar todo o arquivo, eu fiz

ls >pdf

mas com o pouco conhecimento que tenho eu não posso ir mais longe .... Alguns nomes de pdf contêm espaços .... Isso é um problema?

Arquivos PDF são tantos que eu não posso fazer a tarefa digitando cada nome, não seria um trabalho legal e inteligente !!!! Muito obrigado antecipadamente!

    
por f126ck 29.06.2013 / 23:29

1 resposta

3

Qualquer solução que use o comando ls irá eventualmente falhar, mas não se preocupe; O bash pode manipular qualquer nome de arquivo com segurança sem envolver um comando externo (como ls ) para "listá-los".

Para criar um nome de arquivo.jpg a partir de cada nome de arquivo.pdf no diretório atual, você pode fazer:

for file in ./*.pdf; do
    convert "$file[0]" "${file%.pdf}.jpg"
done

Você também pode fazer isso em uma linha

for file in ./*.pdf; do convert "$file[0]" "${file%.pdf}.jpg"; done

As aspas duplas ( " ) são muito importantes para evitar a expansão das palavras e do nome do caminho a partir do resultado das expansões dos parâmetros.

$file e ${file%.pdf} são chamados de expansões de parâmetros. Consulte o link e o link para mais informações sobre expansões de parâmetros e manipulação de strings no bash em geral.

EDITAR: E lendo a pergunta novamente, vejo que você queria os jpegs no diretório pai dos pdfs, então incluirei as modificações necessárias para isso também:

for file in pdf/*.pdf; do
    basename=${file##*/}
    convert "$file[0]" "./${basename%.pdf}.jpg"
done
    
por geirha 29.06.2013 / 23:58