Einzelnen Beitrag anzeigen

andloer

Registriert seit: 26. Nov 2020
5 Beiträge
 
Delphi 7 Enterprise
 
#1

Pdf erzeugen mit SynPdf

  Alt 8. Dez 2020, 13:22
Hallo Zusammen,

ich versuche mit SynPDF eine Pdf mit den Komponenten meines Programms zu erzeugen.

Problem 1:
Mein ausgefülltes Memo-Feld soll auf die Pdf mit Absätzen erzeugt werden, jedoch steht alles in einer Reihe:

Delphi-Quellcode:
//Memo erzeugen
  Memo1.Lines.Add('Sie heizen aktuell mit: ' + Namealt );
  Memo1.Lines.Add('Sie wollen zukünftig heizen mit: ' + Nameneu);
  Memo1.Lines.Add('Die Warmwasserbereitung wird ' + NameWW + ' der Heizung betrieben!');
  Memo1.Lines.Add('Die Wohnfläche ihres Gebäudes beträgt: ' + FloattoStr(Wohnflaeche)+'');
  Memo1.Lines.Add('In ihrem Haus wohnen: ' + InttoStr(Personen)+' Personen');
  Memo1.Lines.Add('Baujahr des Gebäudes: ' + Bauj);
  Memo1.Lines.Add('Die Heizlast des Gebäudes beträgt: '+FloattoStr(Heizlast)+ ' Watt');
Delphi-Quellcode:
// Übergabe PDF
procedure TForm1.Button7Click(Sender: TObject);
var PDF:TPDFDocumentGDI;
metafile:Tmetafile;
Page:TPdfPage;
begin
 PDF:=TpdfDocumentGDI.Create();
 metafile:=TMetafile.Create;
 try
 PDF.Info.Author :='andloer';
 PDF.Info.CreationDate := now;
 PDF.Info.Creator:= 'andloer';
 PDF.Info.Subject := 'Delphi';
 PDF.Info.Title := ' Heizkosten Rechner ';
 Page:=PDF.AddPage;
 Page.PageLandscape:=false;
 PDF.DefaultPaperSize:=psA4;
 PDF.VCLCanvas.TextOut(100,100,Memo1.Text);
 Chart1.CopyToClipboardmetafile(true);
 metafile.assign(clipboard);
 pdf.VCLCanvas.Draw(100,200,metafile);
 PDF.SaveToFile(filename);
 finally PDF.Free;Metafile.Free end;

 Shellexecute(Handle,'Open',pchar(filename),'','',SW_Normal);

Problem 2:
Ich erzeuge beim Erstellen der PDF eine Datei die im Projektordner abgelegt wird, sobald diese jedoch einmal erstellt ist, kommt beim nächsten Durchlauf eine Fehlermeldung.
Mir ist auch nicht ganz klar wie ich das mit einem SaveDialog hinbekomme.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
  var Monat:Integer;
begin
  filename :=extractfilepath(paramstr(0)) + 'Kosten.pdf';
  for MOnat:= 1 to 12 do

  //Stringgrid beschriften

  Stringgrid1.Cells[0,Monat] :=InttoStr(Monat);
  Stringgrid1.Cells[1,0] := 'Alt';
  Stringgrid1.Cells[0,0] := 'Monat';
  Stringgrid1.Cells[2,0] := 'Neu';
end;
Habe den Quelltext zum erzeugen der PDF auch aus einem Youtube-Video, weiß also nicht, ob das so alles stimmig ist, funktioniert jedoch auf dem ersten Blick

Ich hoffe die Infos reichen aus, um eine Antwort zu finden..

Freundliche Grüße und vielen Dank vorab
André
  Mit Zitat antworten Zitat