Converter para PDF - ajuste páginas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

FARLEY

Converter para PDF - ajuste páginas

Mensagem por FARLEY »

Caro colegas

Não sei como resolver o problema abaixo.

Consegui importar um arquivo texto e converte-lo para pdf.

Mas o relatório fica distorcido de uma página para outra.


Farley

xHarbour 0.99.50

#include "inkey.ch"
#define CR chr(13)
#define LF chr(10)

function main

local arq_
local ahead := {"....","....."}
Local aData :={}
Local n
local handle, primeira_linha, var_imp, arquivo

arq_ := netname() + ".pdf"
arquivo = "bancos.txt" // arquivo exemplo...
primeira_linha := .t.

* Cria documento
PdfNew(arq_, 8, 842, 595, 1, 1,,, {"RB","RB","RB","RB","RB"} )

// Inicializa a pagina...
pdfstartpage(ahead,.t.)

/*
for n :=1 to 100
aadd(aData,str(n) + " "+ dtoc(date()+n))
next
*/

// leitura do arquivo texto e tratamento do mesmo...
handle := fopen(arquivo)
if ferror() <> 0
return .f.
endif

var_imp = ''
do while freadln(handle,@var_imp,512)
if primeira_linha .and. substr(var_imp,1,1) = chr(12)
var_imp = substr(var_imp, 2, 1)
primeira_linha = .f.
endif
if primeira_linha .and. substr(var_imp,2,1) = chr(12)
var_imp = substr(var_imp, 3, 1)
primeira_linha = .f.
endif
Aadd(aData, var_imp)
if !primeira_linha .and. substr(var_imp,137,1) = chr(12)
pdfdrawpage(aData)
pdfstartpage(ahead,.t.)
aData := {}
var_imp := ''
primeira_linha = .t.
endif

enddo
if !empty(var_imp)
Aadd(aData, var_imp)
endif
fclose(handle)
// pdfdrawpage(aData,{||pdfstartpage(ahead,.t.)})
pdfdrawpage(aData)
pdfendpage()
pdfend()

return (.t.)

*---------------------------------------------------------------------------*
* Lˆ linha a linha de arquivo ASCII...

function FReadln(fhandle, cBuffer, nMaxLine)

LOCAL cCh := " ", nLineSize := 0, nSavePos

PRIVATE nNumRead

cBuffer := ""
nNumRead := FRead(fhandle, @cCh, 1)

DO WHILE nNumRead == 1 .and. cCh != CR .and. nLineSize < nMaxline

cBuffer := cBuffer + cCh
nLineSize := nLineSize + 1
nNumRead := FRead(fHandle, @cCh, 1)

ENDDO

// Se terminamos em CR, salta (pressumido) LF

if cCh == LF
nNumRead := Fread(fHandle, @cCh, 1)
endif

cBuffer := strtran(cbuffer, chr(10), "")
cBuffer := strtran(cbuffer, chr(13), "")

RETURN nNumRead != 0
Responder