É bem simples, eu mesmo não uso o tdosprn, uso o PRINTER mesmo, e da para imprimir em matricial normalmente usando fontes terminal do CLP do driver da impressora.
veja este exemplo
PRINTER oPrnEntrega NAME "Comprovante de Entrega de TÃtulos ao Requerente";
TO nPrn /////preview
oPrnEntrega:setpage(1)
oPrnEntrega:SetPortrait()
oPrnEntrega:draftmode(.t.)
nRcol:=oPrnEntrega:nlogpixelx()/2.537
nRlin:=oPrnEntrega:nlogpixely()/2.537
fimpagina:=oPrnEntrega:nvertres()-(1.8*nRlin)
IF ISWIN95()
DEFINE FONT oFntCond NAME "Roman 10cpi" SIZE 0,0 OF oPrnEntrega
DEFINE FONT oFnt1 NAME "Draft 10cpi" SIZE 0,0 Bold OF oPrnEntrega
DEFINE FONT oFnt2 NAME "Roman 6cpi" SIZE 0,0 BOLD OF oPrnEntrega
DEFINE FONT oFnt3 NAME "Roman 17cpi" SIZE 0,0 OF oPrnEntrega
DEFINE FONT oFnt4 NAME "Sans Serif 17cpi" SIZE 0,0 OF oPrnEntrega
DEFINE FONT oFnt5 NAME "Roman 10cpi" SIZE 0,0 BOLD OF oPrnEntrega
DEFINE FONT oFnt6 NAME "Draft 12cpi" SIZE 0,0 Bold OF oPrnEntrega
ELSE
DEFINE FONT oFntCond NAME "Roman 10cpi" SIZE 0,0 OF oPrnEntrega
DEFINE FONT oFnt1 NAME "Draft 10cpi" SIZE 0,0 Bold OF oPrnEntrega
DEFINE FONT oFnt2 NAME "Roman 6cpi" SIZE 0,0 OF oPrnEntrega
DEFINE FONT oFnt3 NAME "Draft 17cpi" SIZE 0,0 OF oPrnEntrega
DEFINE FONT oFnt4 NAME "Draft 17cpi" SIZE 0,0 OF oPrnEntrega
DEFINE FONT oFnt5 NAME "Roman 10cpi" SIZE 0,0 OF oPrnEntrega
DEFINE FONT oFnt6 NAME "Roman 12cpi" SIZE 0,0 OF oPrnEntrega
ENDIF
PAGE
oPrnEntrega:say(l_atual*nRlin,0.2*nRcol,;
"| "+STRZERO(PROTESTO->APONTA,8)+;
" | "+DTOC(PROTESTO->DAT_APONTA)+;
" | "+IF(PROTESTO->NTIPO_TIT > 0,;
(aEspecie[PROTESTO->NTIPO_TIT,9]),"")+;
" | "+VALOR(PROTESTO->VALOR,2,.T.,14," ",.T.)+;
" | "+PROTESTO->NUMERO+;
" | "+DTOC(PROTESTO->DT_EMISSAO)+;
" | "+cSolucao+;
" | "+cConclusao+"|",IF(lFntItalic,oFnt4,ofnt3))
oPrnEntrega:say(l_atual*nRlin,0.2*nRcol,;
REPLICATE("-",135),oFnt4)
l_atual+=.28
oPrnEntrega:say(l_atual*nRlin,0.2*nRcol,;
" | Protestados "+STRZERO(aSomaSolucao[2,1],3)+;
" - "+VALOR(aSomaSolucao[2,2],2,.T.,13," ",.T.)+;
" | Sustados "+STRZERO(aSomaSolucao[4,1],3)+;
" - "+VALOR(aSomaSolucao[4,2],2,.T.,13," ",.T.)+;
" | Irregulares "+STRZERO(aSomaSolucao[5,1],3)+;
" - "+VALOR(aSomaSolucao[5,2],2,.T.,13," ",.T.)+" |",;
oFnt3)
ENDPAGE
ENDPRINTER
*******************************************************
O nRLin e nRCol são para fazer a parte de Centimetros, já que tive problemas com o comando CMSAY
Giovany Vecchi - Jales - SP
FWH 2.6 /Clipper 5.3b /Blinker 5.0 / Harbour 0.45 / Bcc 5.6 / Ads 8.0 /PellesC