Olá Leonardo,
Obrigado pela sugestão.
Ocorre que este módulo tem algumas particularidades que requereriam muito tempo para repensá-lo. Todo restante da aplicação está converida e funcionando corretamente. Mas esse módulo de impressão de código de barras está um parto.
Tenho que por exigência do cliente que manter a possibilidade de impressão em Matricial, especificamente este trecho que enviei o código.
Com testes realizados com fontes true type, não obtive resultado em matricial, o leitor demora para ler, e muitas vezes falham. A rotina que a aplicação usa imprime perfeitamente em matriciais e ink/lasers.
Por experiência, essa exigência faz sentido neste caso, pois se a etiqueta em jato de tinta umidece, ela com frequência borra, e não é lida.
Impressão em laser ou térmica, falham muito quando úmida, enquanto em matricial não dão problema. Pelo menos é fato isso neste caso.
Qualquer tentativa de negociação de mudança deste recurso está descartada, pois corro o risco de ouvir novamente: "se em DOS funciona, pq em 32 bits não vai funcionar".
Tentei encontrar na internet e neste e outros fóruns situação similar, se há, não encontrei. Talves se eu entendesse pq a função PrintFileRaw() é mais rápida, talves consiga encontrar alguma solução.
Mantendo em Harbour a rotina original, e imprimindo em lpt, funciona redondo, mas tem que usar usb.
_________________________________________________________________________________________________
Editei esta mensagem às 14h37m para inserir outra informação!
Depois que entendi o que ocorria, vi como fui "estúpido" ao dizer:
Tentei encontrar na internet e neste e outros fóruns situação similar, se há, não encontrei. Talves se eu entendesse pq a função PrintFileRaw() é mais rápida, talves consiga encontrar alguma solução.
Pois é! Como diz minha filha: "esqueci de lembrar" de ler, veja:
Method :startDoc() must be called after :create(). It istructs the spooler to begin with a new document and capture subsequent print output. The print output is sent to the printer after the document is closed with method :endDoc().
PrintFileRaw() se lixa pra isso, e imprime o documento imediatamente.
Porém ao usar :EndDoc() após a 1a. linha para iniciar outro para a 2a., a página sofre um eject. Como o que não tem solução está solucionado, titulo do produto e código numérico foi pro fim da etiqueta. Deu certo e foi aceito pelo cliente. Por enquanto vamos em frente.