Fastreport individuelle Vorschau Problem
-
08-10-2019 - |
Frage
ich Begegnung Problem auf Fastreport, wird es nicht richtig auf den Seiten drucken, die koreanischen Zeichen enthalten. Es hapens nur auf Drucker HP K5300 jet, T-Test es Rave verwenden und kein Problem. Ich denke, dass es ein Fehler für schnelle Berichte. Ich habe bereits alle meine Berichte von Rave konvertieren und Fastreports Plan zurückbewegt nicht haben.
Ich plane die generierten Seiten als Bilder zu erhalten, ohne es auf der Festplatte zu speichern und dann eine neue preports zu erzeugen. dieses Mal werden die erzeugten Bilder verwendet werden und drucken. Ich weiß, dass diese Lösung nicht gut ist. dies ist worable jetzt zwar für ihre reagiert warten.
jemand hat eine Vorstellung davon, wie man die Bilder generierten Seiten bilden?
Lösung
Wenn Sie nur eine Menge Speichern von Dateien vermeiden möchten, können Sie eine neue Export Klasse erstellen die Datei drucken nur, nachdem es erstellt wird, und löschen Sie es sofort.
Sie können eine ganz neue Export-Klasse erstellen, die die Bitmap aus dem Speicher drucken (zum Beispiel der TPrinter-Klasse und die Bitmap direkt im Drucker Leinwand Zeichnung) ... Sie werden lernen, wie die Quelldatei der TfrxBMPExport Klasse Überprüfung .
Nehmen Sie diese nicht getesteten Code als Beispiel, die Sie führen, wie eine neue Klasse erstellen, speichern / drucken / löschen:
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;
In Produktionscode sollten Sie einen anderen Methoden außer Kraft setzen den Druckauftrag initialisieren und finalisieren, Reinigung, etc.
ist-Code basierend auf Fastreport v4.0 Implementierung von TfrxCustomImageExport, die speziell für die Seitennummerierung und Dateinamen. Es kann Anpassungen für andere Versionen von Fastreport erfordern.
Andere Tipps
You can use the TfrxBMPExport (frxExportImage unit) component to save the report as BMP.
For example, this code will export the report:
procedure ExportToBMP(AReport: TfrxReport; AFileName: String = '');
var
BMPExport: TfrxBMPExport;
begin
BMPExport := TfrxBMPExport.Create(nil);
try
BMPExport.ShowProgress := True;
if AFileName <> '' then
begin
BMPExport.ShowDialog := False;
BMPExport.FileName := AFileName;
BMPExport.SeparateFiles := True;
end;
AReport.PrepareReport(True);
AReport.Export(BMPExport);
finally
BMPExport.Free;
end;
end;
The Export component, in this case, uses a different file name for each page. If you pass 'c:\path\report.bmp' as the filename, the export component will generate c:\path\report.1.bmp, c:\path\report.2.bmp and such.
As usual, you can drop and manually configure the component on any form/data module if you prefer that way.