Bom dia Douglas,
A questão é o seguinte:
1. sempre devemos ao alimentar o componente usar como quebra de linha o caracter ";" conforme o tópico abaixo.
2. Ao gerar o XML poderá ocorrer a troca do ";" por outro caracter conforme configuração definida na unit provider do provedor que no caso do IPM temos o seguinte:
procedure TACBrNFSeProviderIPM204.Configuracao;
begin
inherited Configuracao;
ConfigGeral.QuebradeLinha := sLineBreak;
ConfigGeral.Identificador := '';
ConfigGeral.ConsultaPorFaixaPreencherNumNfseFinal := True;
ConfigWebServices.AtribVerLote := '';
ConfigMsgDados.GerarPrestadorLoteRps := True;
end;
Como você pode ver vai ocorrer a troca do ";" pelo LineBreak que é #13, isso explica a troca.
Quando o componente faz a leitura do XML da NFS-e realiza o processo inverso, veja:
Descricao := ObterConteudo(ANodes[i].Childrens.FindAnyNs('Discriminacao'), tcStr);
Descricao := StringReplace(Descricao, FpQuebradeLinha,
sLineBreak, [rfReplaceAll, rfIgnoreCase]);
Que no caso do provedor IPM vai substituir o LineBreak por LineBreak, ou seja, vai ficar exatamente igual, mas vai ocorrer a quebra de linha no DANFSE.
Lembre-se que o XML a ser utilizado para imprimir o DANFSE tem que ser o XML da NFS-e e não o XML do RPS.
Até agora não consegui entender o problema que você esta tendo.
Você poderia anexar o XML do RPS gerado pelo componente e da NFS-e gerada pelo webservice do provedor após o envio desse RPS, para que possamos analisar?