Seite 1 von 1
HTML Drucken
Verfasst: 26.12.2005 17:38
von Zero_Cool
Hallo Zusammen
ICh habe in der Suchfunktion folgenden Code Gefunden.
Code: Alles auswählen
Global z.w
z=100
If PrintRequester()
If StartPrinting("PureBasic Test")
If StartDrawing(PrinterOutput())
ReadFile(0,"c:\Dev\out.htm")
While Loc()<Lof()
zeile$ = ReadString()
Locate(100, z) : DrawText(zeile$)
z + 100
Wend
CloseFile(0)
StopDrawing()
EndIf
StopPrinting()
EndIf
EndIf
Nun wollte ich ein HTML File drucken. Leider druckt der Drucker den Gesammten Code aus, und nicht wie gewohnt einfach das Layout der HTML Seite. Wie kann ich den Code so abändern, das der HTML Code nicht mehr gedruckt wird?
Danke & Gruss
Verfasst: 26.12.2005 17:43
von Lukas-P
Ist ja auch logich das der den Code der HTML Seite ausdruckt, denn du ließt die HTML Datei doch so ein!
Um die Seite mit Layout auszudrucken, müsstest du einen eigenen "Browser" dafür schreiben. Doch das ist viel arbeit! an deiner Stellen würde ich in der API mal eine wenig "rumwühlen" und irgdwas mit dem IE machen.
Verfasst: 26.12.2005 18:01
von Hroudtwolf
Um die Seite mit Layout auszudrucken, müsstest du einen eigenen "Browser" dafür schreiben. Doch das ist viel arbeit!
Eben !
Einfach zum Drucken ein unsichtbares Fenster mit einem Webgadget öffnen, Code reinschicken und hier...
http://forums.purebasic.com/english/vie ... +webgadget
...mal reinschauen um zu kucken wie das Drucken funzt.
Verfasst: 23.02.2009 16:02
von Grillmeister
Hallo Zusammen !
Weil bei mir gerade aktuell, muss ich dieses alte Thema mal wieder hervorholen.
Ich möchte mit Purebasic eine Webseite ausdrucken und bin nach der Anleitung aus dem englischen Forum vorgegangen.
Hier der Code:
Code: Alles auswählen
Enumeration
#Adresse
#OLECMDID_PRINT = 6
#OLECMDEXECOPT_DONTPROMPTUSER = 2
#OLECMDID_PRINTPREVIEW = 7
EndEnumeration
If OpenWindow(0, 0, 0, 1024, 768, "Ausdruck", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(#Adresse, 0, 0, 1024, 768, "http://www.google.de")
WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#Adresse), #GWL_USERDATA)
Repeat
WebObject\get_Busy(@IsBusy.l)
Delay(1)
While WindowEvent(): Wend
Until IsBusy = 0
;WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
WebObject\ExecWB(#OLECMDID_PRINTPREVIEW, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Um Papier zu sparen

lasse ich mir nur die Druckvorschau anzeigen. Das Problem dabei ist, dass die Seite leer ist. Das Webgadget zeigt die Seite aber korrekt an.
Hat jemand eine Idee was ich da falsch gemacht habe ?
Danke und Gruß
Grillmeister
Verfasst: 24.02.2009 16:52
von Grillmeister
Dank diesem Thema:
http://www.purebasic.fr/english/viewtop ... t=printweb
habe ich meinen Code geändert und nun funktioniert er so wie er soll (habe die Kommentare mal drin gelassen):
Code: Alles auswählen
#Adresse = 0
#OLECMDID_PRINT = 6
#OLECMDEXECOPT_DONTPROMPTUSER = 2
#OLECMDID_PRINTPREVIEW = 7
If OpenWindow(0, 0, 0, 1024, 768, "Ausdruck", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(#Adresse, 0, 0, 1024, 768, "www.google.de")
WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#Adresse), #GWL_USERDATA)
printit = #True ; ok to print when ready
Repeat
Event = WaitWindowEvent()
If printit = #True
WebObject\get_ReadyState(@ready.l)
; from what I've seen in the past, a web page may not reach
; #READYSTATE_COMPLETE = 4 if there are missing objects, such
; as images. Once the web page reaches #READYSTATE_INTERACTIVE = 3
; it seems as though print works fine. You can change the following line to
; If ready = 4 And printit = #True
; and see which works best in your situation.
If ready = 4 And printit = #True ; once we have interactive page we print
If printit
;Preview
WebObject\ExecWB(#OLECMDID_PRINTPREVIEW, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;Direkt drucken ohne Promt
;WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
printit = #False
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
End
Verfasst: 24.02.2009 17:20
von Andesdaf
und schon ist das Problemchen weg!
