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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top