HTML Drucken

Anfängerfragen zum Programmieren mit PureBasic.
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

HTML Drucken

Beitrag 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
Benutzeravatar
Lukas-P
Beiträge: 262
Registriert: 07.10.2004 12:03

Beitrag 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.
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag 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.
Benutzeravatar
Grillmeister
Beiträge: 23
Registriert: 17.04.2008 09:54
Wohnort: Hannover
Kontaktdaten:

Beitrag 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 :wink: 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
Benutzeravatar
Grillmeister
Beiträge: 23
Registriert: 17.04.2008 09:54
Wohnort: Hannover
Kontaktdaten:

Beitrag 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
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

und schon ist das Problemchen weg! :)
Win11 x64 | PB 6.20
Antworten