Как передать отчеты ReportBuilder в формате PDF в Intraweb с помощью ExtraDevices?
-
22-09-2019 - |
Вопрос
Мы используем Intraweb для наших веб-приложений, а также используем ReportBuilder для создания отчетов для наших внутренних приложений Windows.У нас также есть ExtraDevices, которые мы использовали, чтобы сохранять отчеты ReportBuilder в виде файлов Excel.
Теперь я хочу создать отчет о наших веб-приложениях в формате PDF.У меня есть пример того, как это делается с помощью ExtraDevices.Однако как следующий пример изменится с помощью 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;
Решение
Думаю, я нашел ответ на свой вопрос.Мне просто нужно использовать TIWApplication.SendStream.
Код будет изменен следующим образом:
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;
Другие советы
Вы видели RaveDemo, поставляемую с Intraweb?Я считаю, что он делает то, что вы ищете, но с Rave Reports.Некоторое время назад я использовал его для создания PDF-версии Intraweb ReportBuilder.
Однако я не уверен, транслирует ли он отчет.Прошло много времени с тех пор, как я на него смотрел, но думаю, что он может сохранить его на диск, а не отправлять ответ из памяти, как в вашем примере.