Tendo problemas com img2pdf e espaços em nomes de arquivos

1

Estou tentando converter vários arquivos jpeg em um arquivo pdf.

Quando eu digito os nomes dos arquivos com as aspas, tudo bem:

$ img2pdf "./Page 001.jpg" "./Page 002.jpg" -o book.pdf

Quando eu escolho os curingas, recebo um erro de img2pdf sugerindo que ele tenha "./Page" em vez de "./Page 001.jpg":

IOError: [Errno 22] modo inválido ('rb') ou nome do arquivo: '"./Page'

Aqui está o comando que eu uso:

$ img2pdf 'find . -name "Page*.jpg" -printf "\"%p\" "' -o book.pdf

O que pode dar errado?

Obrigado pela sua ajuda

    
por Maxime Vernier 25.10.2015 / 23:09

1 resposta

1

Suponho que você esteja no bash, então ... o bash interpretará alguns caracteres como separadores. isso depende do conteúdo da variável de ambiente $ IFS (separador de campo interno) que tem seu valor padrão para espaço em branco (espaço, tabulação e nova linha). Assim, quando encontrar um caractere de espaço dentro do nome do arquivo, ele será interpretado como um separador e dividirá o nome do arquivo em uma ou mais partes (depende de quantos espaços, guias ou novas linhas serão encontradas).

A solução pode ser alterar o valor de $ IFS para algo que corresponda às suas necessidades. por exemplo, no seu caso, apenas novos caracteres de linha devem ser interpretados como um separador:

# first save current value
OLD_IFS=$IFS

# change value to something you need
IFS="\n"

# do what you need to do here
#############################

# restore default value of IFS
IFS=$OLD_IFS

para mais detalhes veja esta documentação Referência da IFS

EDITAR:

Acabei de fazer alguns testes com o img2pdf. Eu tenho 101 imagens nomeadas como

name_0.png, name_1.png, name_2.png, ..., name_100.png

para colocá-los em um arquivo test.pdf Eu usei esse comando img2pdf -o test.pdf name_{0..100}.png

e não houve problemas com isso. Então fiz outro teste com arquivos com espaços em nomes como:

name 0.png, name 1.png, name 2.png, ..., name 100.png

e o comando é (o caractere de espaço é escapado pela barra invertida): img2pdf -o test.pdf name\ {0..100}.png

Espero que isso ajude você.

    
por 25.10.2015 / 23:49