HTMLPrintDialog mit PB unter Windows
Verfasst: 23.10.2018 20:40
Wem das zeichnen von Dokumente zu müßig ist, um sie mit den PureBasic eigenen Mitteln zu drucken, habe ich hier einen kleinen Trick, wie man den Druckdialog des WebGadgets dafür nutzen kann, ein erzeugtes HTML zu drucken (nur Windows - Linux und Mac über Umwege):
So sieht das aus:
Code: Alles auswählen
EnableExplicit
Define.s HTMLContent
HTMLContent = "<h1>HTML-Inhalt</h1>"
HTMLContent + "<p>Dies ist der HTML-Inhalt, der gedruckt werden soll.</p>"
HTMLContent + "<p>Ziel ist es, mit dem Webgadget eine Druckvorschau mit direktem <strong>Druckbefehl</strong> zu erzeugen."
Procedure HTMLPrintDialog(Content.s, Stylesheet.s = "")
Define.s FullHTML
Define.i PrintDialog, Event, Window
FullHTML = "<HTML><HEAD><TITLE>PRINTOUTPUT</TITLE>"
FullHTML + "<meta http-equiv="+Chr(34)+"X-UA-Compatible"+Chr(34)+" content="+Chr(34)+"IE=edge"+Chr(34)+" />"
If Stylesheet <> ""
FullHTML + "<style>" + Stylesheet + "</style>"
EndIf
FullHTML + "</HEAD><BODY ONLOAD="+Chr(34)+"window.focus(); window.print(); window.onfocus = function(){ document.title = 'CLOSE'; };"+Chr(34)+">"
FullHTML + Content
FullHTML + "</BODY></HTML>"
Window = OpenWindow(#PB_Any,800,0,600,900,"Druckvorschau ...")
PrintDialog = WebGadget(#PB_Any,0,0,600,900,"")
SetGadgetItemText(PrintDialog, #PB_Web_HtmlCode, FullHTML)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = PrintDialog And EventType() = #PB_EventType_TitleChange
If GetGadgetItemText(PrintDialog,#PB_Web_PageTitle) = "CLOSE"
break
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
CloseWindow(Window)
EndProcedure
HTMLPrintDialog(HTMLContent, "h1 { color: red; }")