No puedo probarlo, así que no se si funcionará a la primera, pero creo que algo como esto te podría servir:
Código vb:
Ver originalPrinter.Print
rs.MoveFirst
Do Until rs.EOF
With rs
Dim sImp0 As String, F As Long, VarTemp As String
sImp0 = Format(!descripcion)
sImp3 = Format(!subtotal, "###0.00")
For F = 1 To Len(sImp0)
VarTemp = VarTemp & Mid$(sImp0, F, 1)
If Printer.TextWidth(VarTemp) > 44 Then Exit For
Next F
VarTemp = ""
If F <= Len(sImp0) Then
sImp3 = sImp3 & vbCrLf & Mid$(sImp0, F)
sImp0 = Left$(sImp0, F-1)
End If
Printer.CurrentX = 5
Printer.Print sImp0;
sImp1 = Format(!precio, "###0.00")
Printer.CurrentX = 49 - (Printer.TextWidth(sImp1)) 'Alinea los decimales a la derecha?
Printer.Print sImp1;
sImp2 = Format(!cantidad)
Printer.CurrentX = 59 - (Printer.TextWidth(sImp2))
Printer.Print sImp2;
Printer.CurrentX = 69 - (Printer.TextWidth(sImp3))
Printer.Print sImp3;
Printer.CurrentY = Printer.CurrentY + 0.9 'Espacio entre cada fila del rs
End With
rsl.MoveNext
Loop
Printer.Print
Feliz 2010