Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-12-2007
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Como Crear un PDF con Rave (RvRenderPDF)

Hola!

Actualmente uso este codigo para imprimir un reporte prediseñado en el Rave Reports:

Código Delphi [-]
with ADODiario do
      begin
        close;
        sql.Clear ;
        sql.Add('SELECT * FROM Captura ' +
              'WHERE ((hfCaptura BETWEEN :HFIni AND :HFFin) ' +
             'AND (Dispositivo = :Numero)) ' +
              'ORDER BY Consecutivo');
        Parameters.ParamByName('HFIni').Value := Inicio;
        Parameters.ParamByName('HFFin').Value := Final;
        Parameters.ParamByName('Numero').Value := IDDispositivo;
        open;
      end;
    
    if not ADODiario.IsEmpty then
      with frmMain.RvProject1 do
        begin
          SetParam('Titulo', strTitulo);
          SelectReport('ReporteDiario', false);
          Execute ;
        end
   else
       ShowMessage('No hay datos para imprimir');


Hasta aqui no hay problema funciona OK. Mi necesidad ademas de imprimirlo es que debo de guardar el reporte en formato PDF. Para esto Rave tiene un componente llamado RvRenderPDF. Este componente tiene una propiedad que requiere de dos parametros:

Cita:
RvRenderPDF.PrinterRender(NDRStream:TStream, OutputFiliName: TFileName);
Aqui es mi duda ¿de donde obtengo de acuerdo a el codigo anterior el objeto TStream?

gracias por la ayuda!
Responder Con Cita
  #2  
Antiguo 11-12-2007
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Buscando encontre que debo de hacer esto:

Código Delphi [-]
//Declarar una variable
var 
   Informe: TMemoryStream;
 
//Modificar esta seccion del codigo
if not ADODiario.IsEmpty then
      begin
        Informe := TmemoryStream.Create ;  //Nueva linea
        with frmMain.RvProject1 do
        begin
          SetParam('Titulo', strTitulo);
          SelectReport('ReporteDiario', false);
          SaveToStream(Informe);
          Execute ;
          frmMain.RvRenderPDF1.PrintRender(Informe,'reportehoy.pdf'); //Nueva linea
        end;
      end;

al ejecutar aparece un error

---------------------------
Error
---------------------------
Unable to gain control of RAVE Data Communication System.
---------------------------
Cancel Retry
---------------------------

oprimo el boton retry El reporte impreso se genera adecuadamente pero el archivo pdf no:

---------------------------
Debugger Exception Notification
---------------------------
Project Jugoso.exe raised exception class EReportPrinter with message
'Unexpected header code [82] found in report file.'. Process stopped. Use Step
or Run to continue.
---------------------------
OK Help
---------------------------

el archivo reportehoy.pdf se crea, sin embargo al intentar abrirlo con Acrobat este dice que el archivo esta dañado. ¿Alguna idea?
Responder Con Cita
  #3  
Antiguo 13-12-2007
Oriol Carreras Oriol Carreras is offline
Registrado
 
Registrado: mar 2007
Posts: 3
Poder: 0
Oriol Carreras Va por buen camino
Thumbs up

Yo utilizo este codigo fuente y me ha funcionado:

necesitamos un TRvSystem, TRvProject y un TRvRenderPDF
Vinculamos el RvProject.Engine -> RvSystem


Código:
RvSystem.DefaultDest := rdFile;
RvSystem.DoNativeOutput := false;
RvSystem.RenderObject := RvRenderPdf;
RvSystem.OutputFileName := 'c:\ruta\mifichero.pfd';
RvSystem.SystemSetups := RvSystem.SystemSetups - [ssAllowSetup];
RvProject.Execute
Saludos.

uri.
Responder Con Cita
  #4  
Antiguo 13-12-2007
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Gracias por responder, El codigo que pones ya lo habia visto sin embargo esto solo es valido para crear el archivo pdf, yo necesito que se imprima en la impresora y a la vez que se genere el archivo pdf. Revisando los foros de noticias encontre que para evitar el primer error que menciono en el post anterior debo declarar lo siguiente en codigo del dpr:

Código Delphi [-]
//en USES 
SysUtils, RpDefine,
 
//en el codigo de inicializacion:
 
{$R *.res}
 
begin

  RPDefine.DataID := IntToStr(Application.Handle);
  Application.Initialize;
  Application.Title := 'MiApp';

El segundo error aun no se que es o a que se debe. Agradesco tu ayuda y si tienes otra sugerencia sera bienvenida.
Responder Con Cita
  #5  
Antiguo 13-12-2007
Oriol Carreras Oriol Carreras is offline
Registrado
 
Registrado: mar 2007
Posts: 3
Poder: 0
Oriol Carreras Va por buen camino
Eso me pasa por no leer lo que tengo que leer

Respecto al segundo error has provado en lugar de utilizar

Código:
 SaveToStream(Informe);
utilizar

Código:
SaveRaveBlob(Informe);
ya que tambien tiene como parametro un TStream y tiene mas pinta de formatear el stream con el formato de Rave.
No lo he provado, ya me diras algo.

Y en el caso de que tampoco funcione, repetir el proceso dos veces:
1. para imprimir
2. para genererar el pfd
con la misma query, sin abrir ni cerrar los datos son los mismos.

saludos.

uri.
Responder Con Cita
  #6  
Antiguo 23-06-2011
martita martita is offline
No confirmado
 
Registrado: jun 2005
Posts: 146
Poder: 0
martita Va por buen camino
Question Ok, Pero No Aparece Preview

hola he provado el codigo que pusieron
pero se va directo a generar el archivo pdf y no muestra el reporte
en pantalla osea un preview, incluso le agregue una linea al codigo
que esta marcarda con asteriscos para ver si asi hacia preview
pero negativo se va directo a generar el pdf, como puedo hacer
para que me genere el preview en pantalla y tambien genere el pdf?

rvproject1.ProjectFile:=lreporte.Caption;
rvproject1.SetParam('periodo1',FormatDateTime('dd/mm/yyyy', cal1.Date));
rvproject1.SetParam('periodo2',FormatDateTime('dd/mm/yyyy', cal2.date));
rvproject1.SetParam('fecha',FormatDateTime('dd/mm/yyyy', date()));
rvproject1.SetParam('hora',FormatDateTime('HH:MM:SS', time()));
rvproject1.SetParam('equipo', edit1.text);
rvproject1.SetParam('chofer', edit2.text);

rvsystem1.DefaultDest:=rdpreview; //***** agregue esta linea
RvSystem1.DefaultDest := rdFile;
RvSystem1.DoNativeOutput := false;
RvSystem1.RenderObject := RvRenderPdf1;
RvSystem1.OutputFileName := 'c:\mifichero.pdf';
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
rvsystem1.DefaultDest:=rdpreview;

rvproject1.Execute;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear Reportes Rave en tiempo de ejecucion jlcasih Impresión 1 26-02-2009 23:09:08
Crear ficheros Rave desde Delphi murrai Impresión 0 13-03-2005 11:06:51
crear informe apaisado en rave reports JoseQ Impresión 2 05-03-2005 14:28:27
como imprimo con rave JefeNet Impresión 3 23-08-2004 12:29:29


La franja horaria es GMT +2. Ahora son las 16:56:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi