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)+' m²');
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é