mostrar un reporte en pdf desde web
#1
Escrito 01 septiembre 2011 - 01:11
Estoy usando DELPHI 2007 y QuickReports 4
Alguna idea, una sugerencia???
HELP
#2
Escrito 02 septiembre 2011 - 06:44
Saludos.
#3
Escrito 02 septiembre 2011 - 08:26
A ver amigo, ¿qué quieres invocar desde PHP?, un reporte hecho en Delphi + Quick y/o un reporte PDF desde BD???.
Saludos.
SI amigo, mira, yo tengo un sistema que genera un reporte y bueno ya lo puedo pasar a PDF, esto esta en delphi con quickreports, ahora mi cliente me solicita ver cierta información en web, bueno ya desarrolle un módulo que muestra la info requerida, pero ahora el cliente me solicito el mismo reporte, y este es por ID de la info que muestro, pero como ya lo tengo, lo único que quiero es pasar este reporte a un CGI para asi poder llamarlo desde la aplicaicon web (hecha en php).
si me explique?
y pos no sé ni por donde empezar, alguna idea?
#4
Escrito 02 septiembre 2011 - 09:03
Quiero imaginar que en tu caso es muy parecido, necesitas un cgi que envie el archivo pdf al navegador para su visualización. De ser así el criterio debe ser el mismo que el vio de la imagen desde mi cgi
#5
Escrito 02 septiembre 2011 - 09:15
Hola amigo, te comento que yo tengo algo parecido. Hice un CGI en delphi que corre con apache, es cgi devuelve al navegador una imagen JPG que se visualiza en el navegador.
Quiero imaginar que en tu caso es muy parecido, necesitas un cgi que envie el archivo pdf al navegador para su visualización. De ser así el criterio debe ser el mismo que el vio de la imagen desde mi cgi
Que tal amigo, andale, es algo similar, obviamente cuando llamas al CGI le pasas un valor como parametro para que este internamente procese la info y regrese el pdf al navegador con la información adecuada...
#6
Escrito 02 septiembre 2011 - 09:22
#7
Escrito 02 septiembre 2011 - 09:28
Te parece bien si te envio el código de php y del programa? o solo quieres el del CGI?
Gracias amigo pues si no tienes inconveniente, de ambos, para revisarlo. graicas
#8
Escrito 02 septiembre 2011 - 09:48
#9
Escrito 02 septiembre 2011 - 09:54
#10
Escrito 02 septiembre 2011 - 11:32
Excelente amigo, deja lo reviso y cualquier detalle si no lo entiendo te pregunto, un saludo.
pero por supuesto amigo. en todo lo que pueda ayudarte.
#11
Escrito 02 septiembre 2011 - 12:52
Que estare omitiendo? o por que me sale ese error en el navegaro web?
#12
Escrito 02 septiembre 2011 - 01:03
Que estare omitiendo? o por que me sale ese error en el navegaro web?
Seguramente se debe a que el cgi está corriendo fuera del contexto de usuario, vas a tener que incluir lo siguiente:
function NTLogon(User: string; Password: string; Dominio: String; Token: cardinal): String; begin Result := ''; try if LogonUser(PChar(User), Pchar(Dominio), PChar(Password), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, Token) then if ImpersonateLoggedOnUser(token) then Result := 'Nada'; except on E: Exception do Result := E.Message; end; end; function NTLogoff(Token: cardinal): String; begin Result := 'Nada'; try CloseHandle(Token); except on E: Exception do result := E.Message; end; end; function Tworkflow.GetFlujograma(PsIdInstWrf: AnsiString): TFlujograma; Var LsMensaje : String; // Mensaje de esatus Token : integer; begin Result := TFlujograma.Create; Result.Estatus := 'Nada'; Try if NTLogon('usuario','password','dominio',Token) = 'Nada' then begin Result.Flujo := DameFlujograma(LsMensaje); Result.Estatus := LsMensaje; end; NTLogoff(Token); Except On Error: Exception Do Begin Result.Estatus := Error.Message; End; End; end;
#13
Escrito 03 septiembre 2011 - 04:19
{Esta es la funcion que utilizo para crear el reporte} function VistaPreviaStream(sValId: string; var msMemS: TMemoryStream; var sVal: string): Boolean; var PDFfiltro: TQRPDFDocumentFilter; sCFDFilePDF: string; begin Result := True; sCFDFilePDF := sRutaExe+'REP_'+sValId+'.pdf'; {} qrReporte := TqrReporte.Create(nil); with qrReporte do try ReportTitle := 'Reporte '+sValId; try PDFfiltro := TQRPDFDocumentFilter.Create(sCFDFilePDF); if qrReporte <> nil then begin qrReporte.ExportToFilter(PDFfiltro); msMemS := TMemoryStream(PDFfiltro.Stream); end; except Result := False; end; finally Free; end; end;
Y asi es como lo estoy tratando de mostrar....
... msStreamMem := TMemoryStream.Create; msStreamMem.Clear; if NTLogon(sNTUsu,sNTPas,sNTDom,Token) = 'Nada' then begin VistaPreviaStream(sID,msStreamMem,sMsg); end; NTLogoff(Token); if msStreamMem.Size = 0 then raise(Exception.Create('No se puede mostrar')); Response.ContentType := 'application/pdf'; Response.ContentStream := msStreamMem;
de esto amigo, cabe mencionar que si me crea el reporte bien en la ruta que le doy, pero y ano lo puede mostrar.
#14
Escrito 03 septiembre 2011 - 08:56
aqui más info http://www.livingint..._att_encode.htm
#15
Escrito 03 septiembre 2011 - 04:49
Luego creo un reporte sencillo nuevo y ese si lo puedo exportar, pero ya no lo puedo cargar al TMemoryStram como lo estaba haciendo, tengo que invocar lo siguiente:
esto no me funciona::::
sCFDFilePDF := sRutaExe+'REP_'+sValId+'.pdf' PDFfiltro := TQRPDFDocumentFilter.Create(sCFDFilePDF); qrReporte.ExportToFilter(PDFfiltro); msMemS := TMemoryStream(PDFfiltro.Stream);
Esto si me sirve y funcion OK:
sCFDFilePDF := sRutaExe+'REP_'+sValId+'.pdf' PDFfiltro := TQRPDFDocumentFilter.Create(sCFDFilePDF); qrReporte.ExportToFilter(PDFfiltro); msMemS.LoadFromFile(sCFDFilePDF);
No se que sera, voy a intentar con lo que ma pasaste y te comento, nuevamente gracias y saludos, sigo en que si algo se me atora te comento...
Pstta:
Me refiero que si me atoro con el código...
Aclaro por aquellos que mal interpretan las cosas, jejeje saludos amigos...