Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Drucken in eine Datei (https://www.delphipraxis.net/53007-drucken-eine-datei.html)

FunkyGT 8. Sep 2005 11:00


Drucken in eine Datei
 
Hallo zusammen,

wenn ich einen Drucker auswähle, mit dem ich eine Datei erzeuge, quasi den Druckspool auf der Platte speichern möchte, erhalte ich eine Eingabeaufforderung, den Dateinamen einzugeben, wo sie gespeichert werden soll.

Meine Frage habe ich die Möglichkeit dem Druckertreiber über einen Parameter, diesen Dateinamen mitzugeben? Bzw. Bietet TPrinter um aus Delphi zu drucken einen Eigenschaft, Methode oder ähnliches ???

Ich bin etwas am verzweifelen.

Danke schon mal

Gruß Funky

RavenIV 8. Sep 2005 11:10

Re: Drucken in eine Datei
 
da bin ich auch schon mal daran verzweifelt.
konnte zwar in eine datei speichern, habe es aber nicht geschafft, Windows irgendwie zu überreden, diese auch wieder auszudrucken.

wenn du also eine Lösung bekommen hast, dann bitte hier posten.

gruessle

WoGe 8. Sep 2005 11:29

Re: Drucken in eine Datei
 
Hallo

probier mal
Code:
 Copy %1 \\rechner\drucker /b
wenn ich micht recht erinnere muss der Drucker freigegeben sein und der Freigabename benutzt werden.

mfg
wo

RavenIV 8. Sep 2005 12:06

Re: Drucken in eine Datei
 
der Parameter /b ist ne gute idee.
ich habs nämlich auch schon probiert mit dem copy, aber ohne /b.

FunkyGT 8. Sep 2005 12:27

Re: Drucken in eine Datei
 
Zitat:

Zitat von RavenIV
da bin ich auch schon mal daran verzweifelt.
konnte zwar in eine datei speichern, habe es aber nicht geschafft, Windows irgendwie zu überreden, diese auch wieder auszudrucken.

wenn du also eine Lösung bekommen hast, dann bitte hier posten.

gruessle

und wie hast du das gemcht mit dem datei speichern ???

RavenIV 8. Sep 2005 12:37

Re: Drucken in eine Datei
 
datei drucken -> ausdruck in datei umleiten...

sollte mit jeder windows-anwendung gehen, die auch druclen kann.
manche druckertreiber unterstützen dieses feature zusätzlich auch.

FunkyGT 8. Sep 2005 12:52

Re: Drucken in eine Datei
 
yo das weiss ich ja das ist ja mein eingangsproblem, ich möchte gerne als parameter den dateinamen mitgeben, damit das festern nicht mehr aufgeblendet wird, wo gespeichert werden soll

gruß Funky

RavenIV 8. Sep 2005 13:16

Re: Drucken in eine Datei
 
Zitat:

Zitat von FunkyGT
yo das weiss ich ja das ist ja mein eingangsproblem, ich möchte gerne als parameter den dateinamen mitgeben, damit das festern nicht mehr aufgeblendet wird, wo gespeichert werden soll

gruß Funky

achso, du möchtest also in eine datei drucken, aber das häkchen nicht machen und auch keinen dateinamen eingeben müssen.
da hab ich dich wohl falsch verstanden...

schau dir mal diesen link an: Drucken in Datei

FunkyGT 8. Sep 2005 13:36

Re: Drucken in eine Datei
 
ja ne ist das gleiche problem, wenn ich den generic text only nehme, muss ich auch den dateinamen eingeben und den will ich über einen parameter (oder wie auch immer ) dynamisch mitgeben können. :?:

stay tuned

Funky

Flocke 8. Sep 2005 13:56

Re: Drucken in eine Datei
 
Im Grunde kann man bei StartDoc (API-Funktion) einen Dateinamen mit angeben. Das Original aus Printers.pas sieht so aus (hoffe es ist ok, wenn ich den SC poste):

Delphi-Quellcode:
procedure TPrinter.BeginDoc;
var
  DocInfo: TDocInfo;
begin
  CheckPrinting(False);
  SetState(psHandleDC);
  Canvas.Refresh;
  TPrinterCanvas(Canvas).UpdateFont;
  FPrinting := True;
  FAborted := False;
  FPageNumber := 1;
  FillChar(DocInfo, SizeOf(DocInfo), 0);
  with DocInfo do
  begin
    cbSize := SizeOf(DocInfo);
    lpszDocName := PChar(Title);
  end;
  SetAbortProc(DC, AbortProc);
  StartDoc(DC, DocInfo);
  StartPage(DC);
end;
Die benutzte TDocInfo-Struktur hat auch ein Feld lpszOutput (PChar). Wenn das gesetzt ist, dann erfolgt die Ausgabe in diese Datei.

Ich hacke mal eben eine Erweiterung von Printers...

Nicht so einfach ... theoretisch müsste man den gesamten SC in eine neue Unit kopieren und fast alles übernehmen ... das kann ich natürlich hier nicht posten (wg. Copyright).

FunkyGT 8. Sep 2005 14:10

Re: Drucken in eine Datei
 
prima, dann werde ich das mal versuchen

danke :)

stay tuned

Funky

Flocke 8. Sep 2005 14:17

Re: Drucken in eine Datei
 
Ggf. geht's so:
Delphi-Quellcode:
procedure BeginDocWithFilename(Printer: TPrinter; const Filename: string);
var
  DC: HDC;
  DocInfo: TDocInfo;
begin
  if not Printer.Printing then
    Printer.BeginDoc;

  if Filename <> '' then
  begin
    DC := Printer.Handle;

    EndPage(DC);
    AbortDoc(DC);

    FillChar(DocInfo, SizeOf(DocInfo), 0);
    with DocInfo do
    begin
      cbSize := SizeOf(DocInfo);
      lpszDocName := PChar(Printer.Title);
      lpszOutput := PChar(Filename);
    end;

    StartDoc(DC, DocInfo);
    StartPage(DC);
  end;
end;
... und dann BeginDocWithFilename(Printer, 'C:\hallo.prn') aufrufen statt Printer.BeginDoc.

Flocke 12. Sep 2005 12:48

Re: Drucken in eine Datei
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich kram den Thread jetzt noch mal hoch 8)


Ich habe jetzt eine relativ allgemeingültige Lösung erstellt, die die API-Funktion StartDoc an drei unterschiedlichen Stellen abfangen kann (je nachdem, wie man es möchte). Dadurch kann man bei ALLEN Komponenten, also auch denen, die nicht das TPrinter-Objekt benutzen, direkt in eine Datei mit vorgegebenem Dateinamen drucken.

Code (incl. Beispiel) ist angehängt, spätere Updates wird's hier geben.

FunkyGT 13. Sep 2005 12:47

Re: Drucken in eine Datei
 
@ volker

ja die unit ist ech super funktioniert echt gut !!!

aber jetzt habe ich nochmal ne andere frage vielleicht weiss auch hier der ein oder andere rat und bitte icht mit dem kopf schütteln, wenn ich mich zu dösig anstelle

ich möchte gerne ein Tif aus delphi drucken

nur habe ich keinen blassen schimmer, wie ich das machen könnte

hat jemand eine idee

danke schon mal

stay tuned

Funky

HERMES 13. Sep 2005 14:11

Re: Drucken in eine Datei
 
da hast du 2 möglichkeiten, entweder du beschäftigst dich mal ne weile mit bildkopremierungsverfahren und entwickelst seber eine anzeigekomponente für tifs oder du legst dir ein paar komoenenten zu die diese bilder anzeigen können ( z.b. LeadTools ).

mfg
herm


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz