Seite 1 von 1

Frage zu :SetPrintFile

Verfasst: Mo, 19. Jan 2015 10:34
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

Re: Frage zu :SetPrintFile

Verfasst: Mo, 19. Jan 2015 11:07
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.

Re: Frage zu :SetPrintFile

Verfasst: Mo, 19. Jan 2015 20:39
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.