Eu achei este um problema interessante e tive um olhar mais atento ...
Primeiro, usei a ferramenta de linha de comando qpdf
para descompactar fluxos de dados PDF para poder ver melhor os códigos-fonte de ambos os arquivos:
qpdf.exe ^
--qdf ^
from_abbyy.pdf ^
qdf--from_abbyy.pdf
qpdf.exe ^
--qdf ^
after_ghostscript.pdf ^
qdf--after_ghostscript.pdf
Olhando para uma das primeiras ocorrências onde um espaço extra é inserido (é a string original "Bund Deutscher Gymnastik-Schulleiter" transformando-se em "Bun d Deutsche GymnastikSchulleiter" ), eu encontro os seguintes trechos em PDF:
Em qdf - from_abbyy.pdf:
( Deutsche) Tj
0 Tc
(r) Tj
1 0 0 1 143.236 265.140 Tm %% Tm = 'text matrix' operator
3.569 Tw
0.706 Tc
( Gymnastik-Schulleite) Tj
Em qdf - after_ghostscript.pdf:
( Deutsche)Tj
0 Tc
36.235 0 Td %% extra Td = 'move text current point' operator
(r)Tj
2.16501 0 Td %% Td = 'move text current point' instead of Tm
3.569 Tw
0.706 Tc
( Gymnastik-Schulleite)Tj
Para você ter uma pequena ideia do que os operadores gráficos em PDF usaram aqui, aqui está uma pequena lista:
Tj - show text
Tc - set character spacing
Tm - set text matrix
Tw - set word spacing
Td - move text current point
Como você pode ver, o Ghostscript substituiu o operador original Tm
( matriz textual ) por um Td
( mover ponto atual do texto ), e também adicionou um extra 2.16501 0 Td
... Eu não sei porque isso é. Vou enviar um relatório de bug para o bugzilla do Ghostscript [*] e ver se eles estão interessados em resolvê-lo.
Note, no entanto, que este problema não ocorre, se eu usar o Linux Acrobat Reader 9.4.2 e usar a ação do menu "Arquivo -> Salvar como texto ..." . Nesse caso, não há espaços adicionais (mas algumas quebras de linha extras). No Linux também, o texto não é pesquisável corretamente e também mostra os espaços extras ao fazer copy'n'paste ....
[*] Vou atualizar aqui com o número do bug quando o fizer.
Atualização:
Depois de pensar um pouco mais sobre o operador Tm
, agora acho que isso não deveria ser a raiz do problema.
Ao perceber isso, tentei fazer a conversão com o Ghostscript v8.71 em vez de v9.02. E o que devo dizer? O problema do copy'n'paste não ocorre com a saída v8.71!
Isso significa que há um problema no Ghostscript 9.02 que não estava lá em 8.71. O mais provável é que tenha a ver com as métricas de fontes incorporadas no PDF de saída. Porque os fragmentos de PDF acima citados são os mesmos na saída da v8.71 como na saída da v9.02 ....
Atualização 2:
URL da entrada de bug no bugzilla do Ghostscript:
Atualização 3:
Este bug parece ter sido corrigido enquanto isso. Eu não vejo isso acontecer com as versões do Ghostscript que eu testei novamente com ele: o atual Git (v9.10GIT) nem com o Ghostscript v9.06.