我正在使用 Delphi XE3 编写 Windows 服务。该服务将从数据库中读取,使用 quickreport 5.05.1 生成 pdf。我计划使用 TQRPDFDocumentFilter 生成 pdf。
在普通的 VCL 应用程序中一切正常,但是当我在 Windows 服务中实现它时,当我执行 QuickRep.Prepare 时,服务会挂起(没有任何例外)。
我读过可以在 Windows 服务中使用 QuickReport,但我不知道如何。有什么建议么?
代码在哪里:
procedure foo
var
pdfFilter: TQRPDFDocumentFilter;
begin
with TForm2.Create(Self) do
begin
ClientDataSet1.Open;
QuickRep1.Prepare;
pdfFilter := TQRPDFDocumentFilter.Create(GetApplicationFolder() + 'test.pdf');
try
QuickRep1.QRPrinter.ExportToFilter(pdfFilter);
finally
pdfFilter.Free;
ClientDataSet1.Close;
end;
end;
end;
编辑:我还尝试按照另一个线程中的建议关闭 QuickReport 上的“显示进度”。编写一些代码来捕获异常表明它确实抛出了一个异常。消息是“当前没有选择默认打印机”。所以这让我相信运行该服务的本地系统用户没有安装任何打印机,这就是问题所在。