Entwickler-Ecke
Sonstiges (Delphi) - pdf erstellen mit eigenem Dateinamen
Oliver Maas - Mi 21.11.12 18:11
Titel: pdf erstellen mit eigenem Dateinamen
Hallo allerseits
ich erzeuge ein pdf File mit rein textuellem Inhalt. Und zwar so:
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:
| procedure TForm1.Button1Click(Sender: TObject); var r:TRect; s:String; begin s := Memo1.Text; r := Memo1.ClientRect; if PrintDialog1.Execute then begin Printer.Begindoc; Printer.Title := 'TITEL'; Printer.Canvas.Font.Size := 12; Printer.Canvas.Font.Name := 'Verdana'; s := Memo1.Text; r := Memo1.ClientRect; r.Right := 1500; r.Bottom := 1500; Printer.Canvas.TextRect(r,1,1,s); DrawTextEx(Printer.Canvas.Handle, Pchar(s), Length(s), r, 16, nil); Printer.Enddoc; end; end; |
Das funktioniert, ich bekomme ein pdf mit Inhalt (Text aus einem Memo), aber der Dateiname ist immer unknown.pdf, unknown1.pdf, unknown2.pdf usw.
Weiß jemand, wie ich auf diese Art und Weise den Dateinamen festlegen kann?
vielen Dank
Olli
Moderiert von
Martok: Code- durch Delphi-Tags ersetzt
Megamuckel - Mi 21.11.12 18:40
Dein aktiver Drucker ist "PDFCreator" ??
jaenicke - Mi 21.11.12 21:57
Vermutlich gar nicht, für diesen Zweck brauchst du eine PDF-Komponente, auf die du dann zugreifen kannst. So druckst du einfach irgendwo hin, je nach Einstellung deines PDF-Druckers. Du kannst höchstens schauen, ob du auf dessen Einstellungen zugreifen kannst, ob der eine API hat oder so.
Oliver Maas - Do 22.11.12 18:08
jaenicke hat folgendes geschrieben : |
Vermutlich gar nicht, für diesen Zweck brauchst du eine PDF-Komponente, auf die du dann zugreifen kannst. So druckst du einfach irgendwo hin, je nach Einstellung deines PDF-Druckers. Du kannst höchstens schauen, ob du auf dessen Einstellungen zugreifen kannst, ob der eine API hat oder so. |
Danke. So in etwa dachte ich mir das schon. ;)
Inzwischen hab ich folgendes gefunden: wenn ich nun ohne den TPrinterDialog drucke, und zwar so:
Zitat: |
Printer.SetPrinter(PAnsiChar(PrinterName),PAnsiChar(Driver),PAnsiChar(Port),Devmode);
|
macht er folgende Files: unknown.pdf, dann aber TITEL.pdf, TITEL1.pdf usw.
Das ist zwar nicht perfekt, aber schon viel besser als vorher.
Olli
Oliver Maas - Fr 23.11.12 11:52
Hmm, noch eine Frage hätte ich dazu. Wenn ich nur eine Seite erstelle, funktioniert das prima (inzwischen nehme ich den PDFCreator, nun
ist auch der Dateiname gar kein Problem mehr).
Wie müsste ich das machen, wenn ich 2 oder mehr Seiten pro pdf bräuchte?!
viele Grüße
Olli
Nersgatt - Fr 23.11.12 11:56
Oliver Maas hat folgendes geschrieben : |
Wie müsste ich das machen, wenn ich 2 oder mehr Seiten pro pdf bräuchte?! |
Eigentlich nur an passender Stelle
Printer.NewPage aufrufen.
Oliver Maas - Fr 23.11.12 18:02
Stimmt. Danke. So, nun gehen Dateiname und auch 2./3. (usw.) Seite korrekt.
Jetzt ist fast alles perfekt, bis auf eine Kleinigkeit: jede erste Zeile auf der pdf-Seite hat zwar
vorne den korrekten Inhalt, hintendran erscheint aber (von 2 Quadraten getrennt) der Inhalt der 2.Zeile (überflüssigerweise).
Sieht also so aus:
Zeile1 (Quadrat) (Quadrat) Zeile2
Zeile2
Zeile3
In meinem Memo ist das aber nicht so, nur im pdf...
Wenn ich ein 2-seitiges pdf mache, ist die erste Zeile der 2.Seite auch so komisch.
Olli
PS: wie kann ich "Danke" verteilen (Forumssoftware-Bedienung)?!
Nersgatt - Fr 23.11.12 18:10
Ich vermute, dass da in Deinem Text noch Sonderzeichen drin sind, die als Quadrat dargestellt werden. Vermutlich ein Carrige Return + Line Feed. Die kannst Du abschneiden (siehe Hilfe: Copy).
Ein Danke verteilst Du, indem Du unter dem Beitrag, für den Du Dich bedanken möchtest, auf :zustimm: klickst.
Oliver Maas - Mo 26.11.12 13:01
Hm, irgendwie bin ich zu blöd, diesen Smiley-Button zu finden... :?
Serbsis - Di 11.12.12 10:52
Der Smiley-Button war vor mir anfangs auch versteckt...
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!