如果您只是想避免保存大量文件,您可以创建一个新的导出类来在文件创建后立即打印并立即删除它。
您可以创建一个全新的导出类,从内存中打印位图(例如,使用 TPrinter 类并直接在打印机画布中绘制位图)...您将学习如何检查 TfrxBMPExport 类的源文件。
以这个未经测试的代码为例,它将指导您如何创建一个新类来保存/打印/删除:
type
TBMPPrintExport = class(TfrxBMPExport)
private
FCurrentPage: Integer;
FFileSuffix: string;
protected
function Start: Boolean; override;
procedure StartPage(Page: TfrxReportPage; Index: Integer); override;
procedure Save; override;
end;
{ TBMPPrintExport }
procedure TBMPPrintExport.Save;
var
SavedFileName: string;
begin
inherited;
if SeparateFiles then
FFileSuffix := '.' + IntToStr(FCurrentPage)
else
FFileSuffix := '';
SavedFileName := ChangeFileExt(FileName, FFileSuffix + '.bmp');
//call your actual printing routine here. Be sure your the control returns here when the bitmap file is not needed anymore.
PrintBitmapFile(SavedFileName);
try
DeleteFile(SavedFileName);
except
//handle exceptions here if you want to continue if the file is not deleted
//or let the exception fly to stop the printing process.
//you may want to add the file to a queue for later deletion
end;
end;
function TBMPPrintExport.Start: Boolean;
begin
inherited;
FCurrentPage := 0;
end;
procedure TBMPPrintExport.StartPage(Page: TfrxReportPage; Index: Integer);
begin
inherited;
Inc(FCurrentPage);
end;
在生产代码中,您将需要覆盖其他方法来初始化和完成打印机作业、清理等。
代码基于 TfrxCustomImageExport 的 FastReport v4.0 实现,专门用于页码和文件命名。它可能需要针对其他 FastReport 版本进行调整。