Estava respondendo o tópico
Tungsten E2, e lembrei como tenho sido ignorante fazendo a mesma tarefa centenas de vezes. Daí pensei em criar um script para me ajudar. Eis o problema: Converter um arquivo PDF em HTML charset ISO-8859-1
Os passos manuais são:
$ pdftohtml arquivo.pdf
Nisso ele vai gerar 3 arquivos:
arquivo.html que contém um html com dois frames para serem carregados
arquivo_ind.html que contém o conteúdo do frame esquerdo, o índice das páginas
arquivos.html que contém o conteúdo do frame direito, o texto em si
$ rm arquivo.html arquivo_ind.html
$ iconv arquivos.html -f utf8 -t iso8859-1
Ele vai abrir aparecer o arquivo.html e jogar na tela de saída, e, como sempre tem alguns caracteres à corrigir (“ por "; ” por "; – por --; ° por º; etc). Sempre que encontra algum desses caracteres aparece a seguinte mensagem:
DAS SESS�ES PREPARAT
iconv: sequência de entrada ilegal na posição 4813Eu tenho que abrir uma sessão do vim, descobrir qual é o caractere, substitui-lo por outro(s), salvar (não preciso fechar, porque sei que vou usar de novo) e repito o comando iconv.
Depois de vários loops, finalmente o iconv passa todo o arquivo até o fim, sem erros.
Fecho o vim.
$ iconv arquivos.html -f utf8 -t iso8859-1 > arquivo-pronto.html
$ rm arquivos.html
O que eu queria era que o script pudesse me perguntar qual(is) o(s) caracteres que devem substituir o caractere que provocou a mensagem de erro. E, se fosse possível, ele já iria aprendendo quais os caracteres deveriam ser sempre substituídos.
O que há de chato:
1) Veja o exemplo: convocação
Em UTF-8 lida como se ISO-8859-1 fosse: convocação
Em ISO-8859-1 como se UTF-8 fosse: convoca��o
Eu tenho as vezes que ver o contexto para saber o que está dando problema para fazer a devida substituição.
2) Marcadores
- ou qualquer outro são lidos no UTF-8, mas às vezes tenho que descobrir qual sinal deverá substituir e não dar problema (+; *; #; etc)
Eu até posso usar uma seqüência de sed nos caracteres que eu já sei que dão problemas
sed s/caractere utf/caractere iso/g arquivos.html > arquivos.html
mas não consigo prever todos os casos.
Agradeço desde já a ajuda.