Seite 1 von 1

Druck einer Datei [ERLEDIGT]

Verfasst: Mi, 01. Feb 2012 11:38
von Rolf Ramacher
Hallo zusammen,

ich muß eine mit clipper erstelle DruckDatei auf einen Drucker schicken, über xbpprintdialog. der der Drucker kein Parallel-anschluss mehr hat.
Lade ich den Inhalt der Datei in Word, kommen die Informationen raus. aber verschoben, sodaß man damit nichts mehr anfangen kann.

Nun habe ich es mit GrastringAt versucht - kommt gar nichts leeres Blatt. Kann mir jemand auf die Srpünge helfen

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "Inkey.ch"
#include "xbpdev.ch"

#pragma Library( "XppUI2.lib" ) 

Function ListeDrucken()
	Local cZwText:="", aPos:={}

	If file("hart.lit")
		cZwText:=memoread("hart.lit")

	   oDlg := XbpPrintDialog():new() 
	
	   oDlg := XbpPrintDialog():new() 
	   // Druckausgabe nicht standardmäßig in Datei umleiten 
	   oDlg:enablePrintToFile := .f. 
	   oDlg:printToFile       := .f. 
	   oDlg:create() 
	
	   // Konfiguriertes Drucker Objekt erzeugen 
	   oPrinter := oDlg:display() 
	   oDlg:destroy() 
	   IF oPrinter <> NIL 
			oPrinter:setOrientation(XBPPRN_ORIENT_PORTRAIT)
	      oPS   := XbpPresSpace():new() 
	      // Bedruckbarer Bereich auf dem Papier 
	      aSize := oPrinter:paperSize() 
	      aSize := { aSize[5] - aSize[3],aSize[6] - aSize[4]  } 
	      oPS:create( oPrinter, aSize, GRA_PU_LOMETRIC ) 
			aPos:={0,aSize[2]-50 }

			oPrinter:Startdoc()
				oFont := XbpFont():new():create( "18.Courier New" )
				GraSetFont( oPs, oFont )
		      GraStringAt( oPS, aPos , cZwText ) 

			oPrinter:Enddoc()
		EndIf
	Endif
Return Nil

Re: Druck einer Datei

Verfasst: Mi, 01. Feb 2012 11:44
von georg
Hallo, Rolf -


hast Du es mal mit einem Font versucht, der nicht proportional ist?

Oder in Word mal Lucida Console zum Anzeigen verwendet?

Es dürfte am (standardmässig) proportionalen Font liegen.


Gruss,

Georg

Re: Druck einer Datei

Verfasst: Mi, 01. Feb 2012 11:59
von Rolf Ramacher
an der Font liegt es nicht. habe es bei Word auch mit mit Lucida Console versucht. - nichts gleiches ergebnis. mit der GrastrinAt - methode
dürfte ja wohl Courier New ja wohl Ok sein.

Re: Druck einer Datei

Verfasst: Mi, 01. Feb 2012 12:26
von UliTs
Hallo Rolf,

du hast bei

Code: Alles auswählen

oFont := XbpFont():new():create( "18.Courier New" )
den Presentation Space nicht angegeben!

Probier mal

Code: Alles auswählen

oFont := XbpFont():new(oPS)
oFont:create( "18.Courier New" )
Uli

Re: Druck einer Datei

Verfasst: Mi, 01. Feb 2012 13:02
von brandelh
Hast du Druckersteuerzeichen in der Datei oder ist sie nur OEM/ANSI Text, der auf den Drucker muss ?
bei ersterem müssen die raus wenn du GraStringAt() nutzen willst.

Ansonsten kann ich dir auch meine Druckerklasse empfehlen, dort habe ich neben :PrintText() auch :say(...) als Methode eingebaut,
mit der man @ say Druckausgaben einfach umstellen kann. Hier das Druckbeispiel, das man leicht ändern könnte um z.B.
Die Datei Zeilenweise einzulesen und auszudrucken:

Code: Alles auswählen

*#### ANSI .t. äöü ÄÖÜ ß !!!!
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "xbpdev.ch"


*---------------- Fonts nur einmal erzeugen - create fonts only once ------

procedure main
local oHBPrinter, nRow, nCol, nCPI, nFont

SET CHARSET TO ANSI

*    nur für Tests - only for debugging

#ifdef __WIN32__
   set alternate to log.txt
#else
   set alternate to log2.txt
#endif
set alternate on


? "Test_SAY.EXE - Printertest"
oHBPrinter := HBPrinter():New():create()
if oHBPrinter:IsPrinterError()             // Fehler verhindern, avoid errors
   ?
   ? "Standarddrucker ist nicht verfügbar !"
   ? "Standardprinter is not ready !"
   ?
   ? "Status: ",oHBPrinter:printerStatus(),"=",cPrinterStatus(oHBPrinter:printerStatus())
   ?
   ?
   wait
else

   nFont := 1

   nCPI  := { 10, 12, 17, 10 }[nFont]

   // The fonts are not exactly the same size, and may depend on the printer
   // or printersetting (:setFontMode( [<nMode>] )
   // Die Fontgröße sind nicht genau gleich. Außerdem können Sie vom
   // Druckermodell bzw. der Druckereinstellung abhängen (:setFontMode( [<nMode>] )

   // oHBPrinter:setFontMode(XBPPRN_FONTMODE_GRAPHIC)
   oHBPrinter:addFont("12.Courier New" ) // -> 10CPI
   oHBPrinter:addFont("10.Courier New" ) // -> 12CPI
   oHBPrinter:addFont(" 7.Courier New" ) // -> 17CPI
   oHBPrinter:addFont("12.Verdana" )     // why not, but don't use Blanks to format.

   oHBPrinter:SetFont(nFont)
   oHBPrinter:StartDoc("SAY Print")

   for nRow := 1 to 70
     do case
       case nRow == 7
         for nCol := 1 to 9
             oHBPrinter:say(nRow,nCol*10,nCol,,10)
         next
       case nRow == 8
         oHBPrinter:say(nRow,1,"         1         2         3         4         5         6         7         8         9",,nCPI)
       case nRow == 9
         for nCol := 1 to 9
             oHBPrinter:say(nRow,nCol*10,nCol,,nCPI)
         next
       case nRow == 10
         oHBPrinter:say(nRow,1,"123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-",,nCPI)
       otherwise
         oHBPrinter:say(nRow,11,"Zeile / Row: "+str(nRow,3),,nCPI)
     endcase
   next
   oHBPrinter:say(15,30,oHBPrinter:DevName)
   oHBPrinter:say(16,30,"iiiii")
   oHBPrinter:say(17,30,"mMmmm")
   oHBPrinter:say(19,30,":compoundname")
   oHBPrinter:say(20,30,":nominalPointSize")
   oHBPrinter:say(21,30,":fixed")
   oHBPrinter:say(19,50,oHBPrinter:SetFont():compoundname)
   oHBPrinter:say(20,50,oHBPrinter:SetFont():nominalPointSize)
   oHBPrinter:say(21,50,oHBPrinter:SetFont():fixed)

   oHBPrinter:newPage()
   oHBPrinter:say(15,30,"NewPage()")

   for nRow := 1 to 70
     do case
       case nRow == 9
         oHBPrinter:say(nRow,1,"         1         2         3         4         5         6         7         8         9")
       case nRow == 10
         oHBPrinter:say(nRow,1,"123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-")
       otherwise
         oHBPrinter:say(nRow,11,"Zeile / Row: "+str(nRow,3))
     endcase
   next
   oHBPrinter:EndDoc()

endif

? "END"
inkey(5)


quit


return

Re: Druck einer Datei

Verfasst: Mi, 01. Feb 2012 13:23
von Rolf Ramacher
Hi Uli

funkt. auch nicht - leeres Blatt - Hubert - keine Steuerzeichen

Re: Druck einer Datei [ERLEDIGT]

Verfasst: Mi, 01. Feb 2012 15:24
von Rolf Ramacher
ich heini,

viel einfacher - ich übergebe an Word einfach die Datei und fertig. alles OK