GARANTIR DESCONTO

Fórum Como criar um pdf com rave em tempo de execução? #350304

08/12/2007

0

Já li diversos tópicos sobre criação de pdf com rave, porém todos partem do princípio que pré existe um relatório rave.
Eu estou querendo criar um relatório 100¬ em tempo de execução para transformá-lo em um pdf!
Alguém conhece o caminho das pedras?


Edilcimar

Edilcimar

Responder

Posts

10/12/2007

Futuro

Também estou interessado em saber como!!!! (pode ser com qualquer gerenciador de relatório, QReport, Rave, etc....)


Responder

Gostei + 0

10/12/2007

Joaoshi

Colegas, no site do Rave:

http://www.nevrona.com/Default.aspx?tabid=87

Vale a pena dar uma olhada nos outros itens.

Espero ter ajudado.


Responder

Gostei + 0

10/12/2007

Edilcimar

João, este exemplo eu conheço, mas ele só cria um pdf em branco, eu estou querendo colocar dados dentro do rave (que tem que ser criado em tempo de execução), antes de utilizar este procedimento que você indicou


Responder

Gostei + 0

10/12/2007

Joaoshi

Edilcimar, no projeto de teste inclua no evento onPrint do RvSystem1:
RvSystem1.BaseReport.Print(´Coisas´);

A magica toda acontece no evento onPrint do RvSystem.

Espero ter ajudado.


Responder

Gostei + 0

10/12/2007

Edilcimar

Veja bem, o meu problema é o criar o relatório para transformar em pdf, por exemplo:
Query1 -> aqui eu pego a posição de linhas e colunas do cabeçalho (eu sei quantas coisas tem lá, mas não sei quantas colunas nem linhas, pois é configurado pelo cliente, tanto a posição da linha quanto da coluna).
With Query2 do while not eof
begin
...aqui eu pego somente uma linha, onde a posição dela e a posição da coluna são configuradas pelo cliente
...with Query3 do while not eof
...begin
......aqui eu pego não sei quantas linhas, nem quantas colunas, pois a posição da linha e da coluna também são configuradas pelo cliente
......whith Query4 do while not eof
......begin
.........aqui eu pego entre zero e 6 linhas, onde não sei a posição nem da linha nem da coluna que também são configuráveis pelo cliente
.........next -> Query4
......end;
......next -> Query3
...end;
...next -> Query2
...end
...next - Query1
end;
Quando mando imprimir, eu pego estes valores e envio para printer.canvas.textout() e sai tudo certinho, agora preciso transformar isto em pdf, portanto preciso criar o rave totalmente em tempo de execução para depois transformá-lo em pdf, todos os exemplos que vi, inclusive da nevrona não funcionaram.
Grato


Responder

Gostei + 0

10/12/2007

Joaoshi

Você montaria seu relatório no evento onPrint do RvSystem, usando os [b:8137593839]comandos do Rave programado[/b:8137593839].

Deve utilizar [b:8137593839]PrintXY[/b:8137593839] ao invés de [b:8137593839]printer.canvas.textout().[/b:8137593839]

Lamento não poder ajudar mais.


Responder

Gostei + 0

11/12/2007

Edilcimar

João, eis o código que acrescentei:
Try
...RVSystem1.DefaultDest := rdFile;
...RVSystem1.DoNativeOutput := false;
...RVSystem1.RenderObject := RvRenderPDF1;
...RVSystem1.OutputFileName := ´.\\´ + IntToStr(NumeroLaudo) + ´.pdf´;
...RVSystem1.BaseReport.PrintLeft(´xxx´,1); -> se eu incluir esta linha dá um erro de violação de memória, se tirar passa mas não cria nada
...RVSystem1.SystemSetups := RVSystem1.SystemSetups - [ssAllowSetup];
...RVSystem1.Execute;
Finally
...RvRenderPDF1.Free;
End;

No onPrint do RvSystem1 eu coloquei
RvNDRWriter1.PrintXY( 1.0, 2.0, ´Texto´); -> aqui ele dá o erro ´invalid method call.ReportPrinter is not printing´, ou seja diz que não está imprimindo, se eu retirar o RvNDRWriter1 ele não reconhece o comando PrintXY()!


Responder

Gostei + 0

11/12/2007

Joaoshi

Colega,

substitua:
-- RvNDRWriter1.PrintXY( 1.0, 2.0, ´Texto´);
por:
-- RvSystem1.BaseReport.PrintXY( 1.0, 2.0, ´Texto´);

A linha abaixo com *** deve estar no evento onPrint do RvSystem1.
Try
...RVSystem1.DefaultDest := rdFile;
...RVSystem1.DoNativeOutput := false;
...RVSystem1.RenderObject := RvRenderPDF1;
...RVSystem1.OutputFileName := ´.\\´ + IntToStr(NumeroLaudo) + ´.pdf´;
***...[b:109bdc8741]RVSystem1.BaseReport.PrintLeft(´xxx´,1); [/b:109bdc8741]-> se eu incluir esta linha dá um erro de violação de memória, se tirar passa mas não cria nada -> esta linha deve estar no onPrint do RvSystem1.
...RVSystem1.SystemSetups := RVSystem1.SystemSetups - [ssAllowSetup];
...RVSystem1.Execute;
Finally
...RvRenderPDF1.Free;
End;

Espero ter ajudado.


Responder

Gostei + 0

11/12/2007

Edilcimar

Ok agora funcionou, só que com o comando RVSystem1.BaseReport.PrintLeft(´xxx´,1);
determino a posição da coluna (número 1), e como faço para determinar a posição da linha?


Responder

Gostei + 0

11/12/2007

Edilcimar

Descobri mais uma coisa, este documento que foi criado pode ser modificado pelo usuário final, como colocá-lo para que este usuário só possa imprimir?


Responder

Gostei + 0

11/12/2007

Joaoshi

Da forma como você esta fazendo:

-- RVSystem1.BaseReport.PrintLeft(´xxx´,1);

Para definir a linha utilize:
-- RVSystem1.BaseReport.[b:04176ec079]yPos[/b:04176ec079] = 2
Se precisar definir a coluna utilize:
-- RVSystem1.BaseReport.[b:04176ec079]xPos[/b:04176ec079] = 2

Se quiser mandar direto coluna e linha utilize:
-- RVSystem1.BaseReport.[b:04176ec079]PrintXY[/b:04176ec079](1,1,´xxx´);

Espero ter ajudado.


Responder

Gostei + 0

11/12/2007

Edilcimar

Ok, beleza, agora só preciso aprender a colocar o attributo de readonly ao arquivo para evitarque o usuário modifique o texto, sabe fazer isto?


Responder

Gostei + 0

13/12/2007

Edilcimar

Será possível que ninguém sabe como colocar senha num pdf criado pelo rave, para evitar que o mesmo seja modificado?


Responder

Gostei + 0

15/12/2007

Edilcimar

sobe


Responder

Gostei + 0

18/12/2007

Edilcimar

sobe


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar