【问题标题】:How do I stream ReportBuilder Reports as PDFs on Intraweb using ExtraDevices?如何使用 ExtraDevices 在 Intraweb 上将 ReportBuilder 报告流式传输为 PDF?
【发布时间】:2009-10-20 16:18:52
【问题描述】:

我们将 Intraweb 用于我们的 Web 应用程序,并且还一直在使用 ReportBuilder 为我们的内部 Windows 应用程序提供报告。我们也有 ExtraDevices,我们使用它可以将 ReportBuilder 报告保存为 Excel 文件。

现在,我想以 PDF 文件的形式生成一份关于我们的 Web 应用程序的报告。我有一个关于如何使用 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;

【问题讨论】:

    标签: delphi reportbuilder intraweb


    【解决方案1】:

    我想我找到了问题的答案。我只需要使用 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;
    

    【讨论】:

      【解决方案2】:

      您是否看过 Intraweb 附带的 RaveDemo?我相信它可以满足您的需求,但使用 Rave Reports。不久前,我用它构建了一个 Intraweb ReportBuilder PDF 版本。

      我不确定它是否会流式传输报告。自从我查看它已经有一段时间了,但我认为它可能会将其保存到磁盘而不是像您的示例那样从内存中发送响应。

      【讨论】:

      • 我来看看。但我当然想坚持使用 ReportBuilder,因为我们已经使用了一段时间了。
      • 无需更改为 Rave。我自己使用 Reportbuilder。从 Rave 到 Reportbuilder 的代码相对容易适应。
      猜你喜欢
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多