Frage zu :SetPrintFile

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Frage zu :SetPrintFile

Beitrag von mini990 »

Hallo,
wenn ich den Druck in eine Datei umleite....
- muss der Drucker vorab gewählt sein?
- kann ich diese Datei dann nur auf diesem Drucker ausgeben?
- kann ich diese Datei visuell in einem Fenster anzeigen?

Ist das hier richtig oder hätte das unter "Newbie"-Fragen gepostet werden müssen?

Gruß Stefan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu :SetPrintFile

Beitrag von brandelh »

Ohne Druckertreiber geht nix, wenn keiner gewählt wurde, wird der Standardtreiber verwendet.

Die "Druckerdatei" ist auf die Druckerhardware festgelegt, hier kommt es also darauf an, was für ein Drucker gewählt wurde.
1. Textdruckertreiber erzeugt nur Textausgabe, die ist flexibel sieht aber nicht schön aus.
2. Richtige PCL Drucker, die Datei sollte auf einem anderen richtigen PCL Drucker druckbar sein, garantieren kann ich das aber nicht ;-)
3. Richtiger PostScript Drucker, auch diese (PS) Datei sollte auf anderen PostScriptdruckern druckbar sein.
4. Richtiger IBM Proprinter / Epson ESC/P Drucker, ähnliche Modelle sollten verwendbar sein.
5. Windows Drucker mit GDI Schnittstelle, vermutlich sind diese Dateien nur auf dem speziellen Drucker druckbar, aber ich wüßte jetzt nicht wie man das macht ...
6. PDF Druckertreiber oder HBPrintPDF (QuickPDF) ... erzeugen Standard PDF Dateien und können mit Acrobat Reader (etc.) angesehen und auf jedem Drucker gedruckt werden.

Früher war die Idee nicht schlecht, eine lokale Druckkopie zu erstellen und per NET COPY auf z.B. Netzwerkdrucker zu senden ...
Heute ist es schon nicht einfach eine solche Datei an ein Druckerobjekt zu übergeben NET USE LPT ... mit Zuordnung zu einer Netzfreigabe und COPY könnte gehen, aber macht das auch Sinn ?

PDF oder auf neuen Windowsversionen XPS Dokumente (auf meinen Windows 7 Rechner standardmäßig als Druckertreiber installiert)
können alles was du willst und später auch auf anderer Hardware gedruckt werden.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Frage zu :SetPrintFile

Beitrag von AUGE_OHR »

mini990 hat geschrieben:wenn ich den Druck in eine Datei umleite....
- muss der Drucker vorab gewählt sein?
- kann ich diese Datei dann nur auf diesem Drucker ausgeben?
- kann ich diese Datei visuell in einem Fenster anzeigen?
du solltest dir mal die mitgelieferten Beispiele ansehen ;)

Code: Alles auswählen

C:\ALASKA\XPPW32\Source\samples\basics\Printer\PrintOut.prg
es ist ein Preview Fenster wie du ihn vor dem Ausdruck haben kannst.

das (grafische) Drucken, gegenüber ESC Sequenzen, funktioniert unter Xbase++ mit GRA* Funktionen.
das "malen" geschieht dabei in einen "Presentation-Space" welcher mit einem "Device Context" verbunden wird.

wenn du nun, im "Presentation-Space" , dein Bild "gemalt" hast kannst du es durch den Bildschirm, Drucker oder anderen "Device Context" ausgeben.
siehe dazu im Xbase++ Help File unter "Grafische Ausgabegeräte"

mit

Code: Alles auswählen

XbpPrinter():setPrintFile() - Druckausgabe in Datei umleiten. 
wäre eine Lösung.

zum "Debuggen" gibt es noch eine andere Lösung zum Umleiten in eine Datei

Code: Alles auswählen

PROCEDURE MAIN
   SET ALTERNATE TO _Debug.TXT
   ...
   // irgendwo im Code zum debuggen
   LogFile("hier",x,y,Time(),PROCNAME(1),PROCLINE(1),PROCNAME(2),PROCLINE(2))
   //
   SET ALTERNATE TO 
RETURN

FUNCTION LogFile()
LOCAL iMax := PCount()
LOCAL i
LOCAL cText := ""
LOCAL xValue

   FOR i := 1 TO iMax -1
      cText += Var2Char( PValue( i ) ) + CHR(9)
   NEXT
   cText += Var2Char( PValue( iMax ) )

   SET CONSOLE OFF
   SET ALTER ON
   ? cText
   SET ALTER OFF
   SET CONSOLE ON
RETURN
er schreibt ( "?" ) dir also alles in die Datei _Debug.TXT

p.s. es gibt natürlich auch noch das "SET PRINTER TO xxx" um nach Cl*pper Art in eine Datei umzuleiten.
gruss by OHR
Jimmy
Antworten