Autor Beitrag
Oliver Maas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: Mi 21.11.12 18:11 
Hallo allerseits

ich erzeuge ein pdf File mit rein textuellem Inhalt. Und zwar so:

ausblenden 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// muss sein, ansonsten zu kleine Fläche!
   r.Bottom := 1500;
   Printer.Canvas.TextRect(r,1,1,s);
   DrawTextEx(Printer.Canvas.Handle, Pchar(s), Length(s), r, 16nil);
   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 user profile iconMartok: Code- durch Delphi-Tags ersetzt
Megamuckel
Hält's aus hier
Beiträge: 1
Erhaltene Danke: 1



BeitragVerfasst: Mi 21.11.12 18:40 
Dein aktiver Drucker ist "PDFCreator" ??

Für diesen Beitrag haben gedankt: Oliver Maas
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: Do 22.11.12 18:08 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 23.11.12 11:56 
user profile iconOliver Maas hat folgendes geschrieben Zum zitierten Posting springen:
Wie müsste ich das machen, wenn ich 2 oder mehr Seiten pro pdf bräuchte?!

Eigentlich nur an passender Stelle Printer.NewPage aufrufen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Oliver Maas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Oliver Maas
Oliver Maas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: Mo 26.11.12 13:01 
Hm, irgendwie bin ich zu blöd, diesen Smiley-Button zu finden... :?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 26.11.12 13:38 
Du musst in den Einstellungen AJAX aktiviert haben. (Wie auch für ein paar andere nette Sachen. ;-))
Hier in den erweiterten Einstellungen ganz unten:
www.entwickler-ecke....itprofile&page=2

Für diesen Beitrag haben gedankt: Oliver Maas
Serbsis
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 11.12.12 10:52 
Der Smiley-Button war vor mir anfangs auch versteckt...