AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fastreport: Optimierung

Ein Thema von haentschman · begonnen am 30. Nov 2021 · letzter Beitrag vom 2. Dez 2021
 
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.431 Beiträge
 
Delphi 12 Athens
 
#1

Fastreport: Optimierung

  Alt 30. Nov 2021, 14:01
Hallöle...

Durch eine Anforderung des Kunden habe ich statt 1x Drucken jetzt 2x Drucken pro Rechnung. 1x Original + 1x mit "Kopie" im Text.

Das Ganze kostet mich doppelte Zeit, weil der Report nun 2x Prepared + Export nach PDF + Verkleinern ist. Bei einer RE ist das noch verschmerzbar. Aber der Stapeldruck mit ~1000 Rechnungen braucht fast eine Stunde.

Aktuell Test: 800 Rechnungen(Ordner) mit 2.9GB Anhängen -> ca. 1 Stunde
Delphi-Quellcode:
function ExportPDF(FilePath, FileName: string): Boolean;
begin
  Result := dmReport.frxReport1.Export(dmReport.frxPDFExport1);

  if Result then
  begin
    try
      if not FGhostscript.PDFShrink(FilePath + FileName) then // Fehler über Event
      begin
        Result := False;
      end;
    except
      Result := False;
    end;
  end;
end;
...
if AllowPrint and dmReport.frxReport.PrepareReport(True) then
begin
  FillReportPDF; // Vorgaben PDF
  ExportPDF(Print.PDF.FilePath, Print.PDF.FileName); // Archiv

  Print.IsReceiptCopy := True; // + "Kopie" -> das 2. Mal :-(
  dmReport.FillReportVariable('IsReceiptCopy', Print.IsReceiptCopy); // im Report wird das Feld eingeblendet/ausgeblendet
  if dmReport.frxReport.PrepareReport(True) then
  begin
    FillReportTransus; // Vorgaben Dienstleister
    if ExportPDF(Print.Transus.FilePath, Print.Transus.FileName) then // Transus
    begin
      if Transus.ExportXML(Print.Receipt, Print.Transus.FilePath) then // schreiben XML
      begin
        if Print.Transus.WithAttachments then
        begin
          if CopyAttachments(Print.Transus.FilePath) then // Kopie der Anhänge PDF 2-5 Anhänge 120KB je PDF Seite, Schnitt = 3 Seiten je Anhang
          begin
            WriteMiscToDB(Print.ID); // DB Einträge setzen
            WriteSendToDB(dmReport.frxReport1.ReportOptions.Name, sdtFolder); // DB Einträge setzen
          end;
        end;
      end;

      if Assigned(FOnPrintConfirmation) then
      begin
        FOnPrintConfirmation(Self, ReportType, Print, FFileList); // nur wenn benötigt, in diesem Falle nicht eingehängt
      end;
    end;
  end;
end;
Frage:
1. Wo kann ich noch was rausholen?
2. Alternative?

Geändert von haentschman (30. Nov 2021 um 14:12 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz