PDA

Ver la Versión Completa : rave report generar PDF


aldmoscardi
10-10-2006, 11:44:32
Hola a todos, tengo un serio problema, e creado con los componentes indy un cliente de correo SMTP para el envio de informes, el problema es que no puedo crear el pdf desde codigo, transparente para el usuario, y usando un codigo que encontre en el foro, me termina destruyendo al archivo .rav que contiene el proyecto del reporte, si algien sabe la solucion les agradeseria. el codigo que uso para crear el pdf es el siguiente:

procedure generarPDF
var
pdfstream : TMemoryStream;
begin
pdfstream := TMemoryStream.create(self);
try
pdfstream.loadfromfile(NDRWriter.filename);
PDF.PrintRender(pdfStream, ´C:\myArchivoEnFormatopdf.pdf´);
except
//MostrarError
end;
pdfstream.free;
end;

//Ante cualquier respuesta que me ayude muchas gracias

Loviedo
10-10-2006, 14:36:03
Esto me funciona.
Saludos.

aldmoscardi
10-10-2006, 22:26:14
Gracias por tomarte el tiempo, saludos

fly
12-10-2006, 04:27:22
Este es el que yo uso, ya no recuerdo si lo hice o lo pille por ahí, aunque ahora que me fijo casi seguro que lo hice... a juzgar por la cantidad de "exits" que hay ;)


Function TDMreport.Report2File(Tipo: String; report_name: string; file_name: String): Integer;
begin
// **** CREAR PDF FUNCIONA OK *******
Screen.Cursor:=crHourGlass;
RvSystem1.DefaultDest := rdfile;
RvSystem1.DoNativeOutput := false;
// Seleccionamos el report
if not RvProject1.SelectReport(report_name,false)
then
begin
Result:=1; // Repor No encontrado
Screen.Cursor:=crDefault;
exit;
end;
// Seleccionamos el renderizador...
if Uppercase(tipo)='PDF' then RvSystem1.RenderObject := RvRenderPDF1;
if Uppercase(tipo)='HTM' then RvSystem1.RenderObject := RvRenderHTML1;
if Uppercase(tipo)='RTF' then RvSystem1.RenderObject := RvRenderRTF1;
if Uppercase(tipo)='TXT' then RvSystem1.RenderObject := RvRenderText1;

// le quitamos el permiso de mostrar el setup
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
// asignamos el nombre del fichero
RvSystem1.OutputFileName:=file_name+'.'+tipo;
// ejecutamos el report
try
RvProject1.Execute;
except
on E: Exception do
begin
result:=1;
showmessage(e.Message);
Screen.Cursor:=crDefault;
exit;
end;
end; // try

// **** FIN CREAR PDF FUNCIONA OK *******
Screen.Cursor:=crDefault;
result:=0;
end;


A ver si te vale, yo lo uso para enviar el PDF por correo sin hacer previo.