Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - pdf-Datei erstellen und speichern
C++arsten - Fr 22.07.11 09:53
Titel: pdf-Datei erstellen und speichern
Hallo,
ich starte mit Printer.BeginDoc, dann wird der Drucker "gefüllt", es endet mit Printer.EndDoc. Drucken funktioniert, sogar mit xps-Drucker. Ich möchte nun aber die Datei nicht drucken, sondern als pdf speichern. Hat jemand dazu einen Rat? Danke!
MfG
Carsten
uko - Fr 22.07.11 11:28
virtuellen PDF Drucker installieren und auf den drucken (z.B. FreePDF). Oder mal die diversen PDF Komponenten (QuickPDF, Gnostice, ...) ausprobieren.
C++arsten - Sa 23.07.11 09:52
ich probiers mal und melde mich, danke.
Kawa - Sa 23.07.11 18:00
Hallo,
aus Memo oder Richedit Datei willst du als PDF Speichern!
C++arsten - So 24.07.11 09:58
Hallo, pdfcreator scheint das Problem zu lösen.
Ich melde mich, wenn das Problem abschließend gelöst ist.
MfG Carsten
C++arsten - So 24.07.11 17:06
pdfcreator läuft. Danke erst einmal für die Antworten.
Nun habe ich noch eine Frage. Das Drucken soll im Hintergrund erfolgen, d. h. der user soll nicht über den Druckerdialog gehen müssen. Mir würde ein Codeschnipsel reichen, wie ich eine Seite mehrfach als pdf in einem gegebenen Verzeichnis (soll programmseitig festgelegt werden) abspeichern kann.
Hat jemand einen Rat?
Kawa - So 24.07.11 22:42
man kann auch so lösen ohne Komponente und Drucker Dialog!
die Units einfügen in "uses"
Delphi-Quelltext
1:
| SynCommons, SynPdf, SQLite3Pages,Fastmm4 |
direkt Speichern
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); begin with TGDIPages.Create(self) do try BeginDoc; Font.Size := 9; AppendRichEdit(RichEdit.Handle); EndDoc;
ExportPDF(ChangeFileExt(paramstr(0),'test.pdf'),true,false); finally Free; end; end; |
---------------------------
mit SaveDialog Speichern
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Button2Click(Sender: TObject); var dateiname:String; BEGIN if SaveDialog1.Execute then begin with TGDIPages.Create(self) do try BeginDoc; Font.Size := 9; AppendRichEdit(RichEdit.Handle); EndDoc;
if TFileName(SaveDialog1.FileName) = '*.pdf' then case SaveDialog1.FilterIndex of 0: dateiName := ChangeFileExt(SaveDialog1.FileName,'.pdf'); end else SaveDialog1.FileName :=ChangeFileExt(SaveDialog1.FileName,'.pdf'); dateiName :=ChangeFileExt(SaveDialog1.FileName,'.pdf'); ExportPDF(TFileName(SaveDialog1.FileName),true,false); finally Free; end; END; END; |
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
C++arsten - Mo 25.07.11 21:59
Hallo Kawa,
danke für die Antwort. Doch wo holst du denn das her: SynCommons, SynPdf, SQLite3Pages,Fastmm4?
Kawa - Mo 25.07.11 23:48
C++arsten hat folgendes geschrieben : |
Hallo Kawa,
danke für die Antwort. Doch wo holst du denn das her: SynCommons, SynPdf, SQLite3Pages,Fastmm4? |
wenn ich schaffe gucke ich morgen (26.07.11) nach!
uko - Di 26.07.11 06:02
FastMM4 kannst Du erst mal vergessen (ist der Delphi Speichermanager), die beiden Syn... Units brauchst Du wohl: das sollte von SynopsePDF sein, die PDF Komponente, die in dem Code verwendet wird (nur so viel zum Thema "ohne Komponente"):
http://blog.synopse.info/category/Open-Source-Projects/Synopse-PDF-engine
SQLite3Pages stammt auch aus dem Synopse Umfeld. Mußt schauen, ob Du sie brauchst oder ob sie nicht schon bei der PDF Engine dabei ist.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!