我&#39;有一个在delphi7中创建的服务器应用程序,我正在使用idhttpserver,当我的网站用户通过GET传递参数请求报告时,我希望用pdf版本的报告回复此客户端,我该怎么做?< / p>
答案 0 :(得分:4)
您必须自己生成PDF报告,这不是Indy的范围。请确保以线程安全的方式执行此操作,因为TIdHTTPServer
是一个使用工作线程处理客户端请求的多线程组件。
在TIdHTTPServer.OnCommandGet
事件中,如果ARequestInfo.Params
为true,则可以通过TIdHTTPServer.ParseParams
属性访问请求的参数,否则您可以手动解析ARequestInfo.QueryParams
属性的值。要将报告发送回客户端,您可以:
将报告保存到.pdf
文件,然后调用AResponseInfo.ServeFile()
方法。例如:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
// handle request parameters...
// generate PDF to file...
AResponseInfo.ServeFile(AContext, 'C:\path to\report.pdf');
end;
将报告保存到TStream
对象,将其分配给AResponseInfo.ContentStream
属性(TIdHTTPServer
将获得它的所有权),并设置AResponseInfo.ContentType
属性到'application/pdf'
。例如:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
// handle request parameters...
AResponseInfo.ContentType := 'application/pdf';
AResponseInfo.ContentStream := TMemoryStream.Create;
// generate PDF into ContentStream...
end;