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
Código Delphi
[-]
Function TDMreport.Report2File(Tipo: String; report_name: string; file_name: String): Integer;
begin
Screen.Cursor:=crHourGlass;
RvSystem1.DefaultDest := rdfile;
RvSystem1.DoNativeOutput := false;
if not RvProject1.SelectReport(report_name,false)
then
begin
Result:=1; Screen.Cursor:=crDefault;
exit;
end;
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;
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
RvSystem1.OutputFileName:=file_name+'.'+tipo;
try
RvProject1.Execute;
except
on E: Exception do
begin
result:=1;
showmessage(e.Message);
Screen.Cursor:=crDefault;
exit;
end;
end;
Screen.Cursor:=crDefault;
result:=0;
end;
A ver si te vale, yo lo uso para enviar el PDF por correo sin hacer previo.