Como faço para transmitir relatórios de relatórios como PDFs no intraweb usando extradevices?

StackOverflow https://stackoverflow.com/questions/1595803

  •  22-09-2019
  •  | 
  •  

Pergunta

Utilizamos o Intraweb para nossos aplicativos da Web e também usamos o ReportBuilder para relatar nossos aplicativos internos do Windows. Também temos extradevices que usamos para nos permitir salvar nossos relatórios Relatórios como arquivos do Excel.

Agora, quero produzir um relatório em nossos aplicativos da Web como um arquivo PDF. Tenho um exemplo de como isso é feito com extradevices. No entanto, como o exemplo a seguir é alterado com o intraweb?

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request:
  TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  HD: TPDFDevice;
  MS: TMemoryStream;
begin
  MS := TMemoryStream.Create;
  HD := TPDFDevice.Create(Self);
  HD.PrintToStream := True;
  HD.ReportStream := MS;
  HD.Publisher := Rpt.Publisher;
  Rpt.PrintToDevices;
  Response.ContentType := HD.ContentType;
  Response.ContentStream := MS;
  Response.SendResponse;
  HD.Free;
end;
Foi útil?

Solução

Acho que encontrei a resposta para minha pergunta. Eu simplesmente preciso usar o Tiwapplication.SendStream.

O código seria modificado desta maneira:

procedure TfrmSomeIWForm.SomeBtnClick(Sender: TObject);
var
  HD: TPDFDevice;
  MS: TMemoryStream;
begin
  MS := TMemoryStream.Create;
  HD := TPDFDevice.Create(Self);
  HD.PrintToStream := True;
  HD.ReportStream := MS;
  HD.Publisher := Rpt.Publisher;
  Rpt.PrintToDevices;
  WebApplication.SendStream(MS,false,HD.ContentType);
  HD.Free;
end;

Outras dicas

Você já viu o Ravedemo que é enviado com intraweb? Eu acredito que faz o que você está procurando, mas com relatórios raves. Eu o usei para criar uma versão PDF do Intraweb ReportBuilder há algum tempo.

Não tenho certeza se ele transmite o relatório. Já faz um tempo desde que olhei, mas acho que pode salvá -lo no disco, em vez de enviar a resposta da memória como o seu exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top