Aktuelle Zeit: 08.12.2019 11:01

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 23.10.2018 20:40 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
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):
Code:
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; }")


So sieht das aus:
Bild

_________________
USAC Protokoll
Universal Stringbased Application Communication Protocoll

Github: Zum Spezifikationdokument v0.01


Zuletzt geändert von TroaX am 25.10.2018 09:42, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 11:43 
Offline
Benutzeravatar

Registriert: 19.07.2018 20:41
Cool :D .

Welche Umwege muss man für Linux gehen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 11:45 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Berlin
Da das HTML und Javascript ist, sollte das keine Rolle spielen. Das sollte unter Linux genauso funktionieren. Und WebGadget wird unter Linux auch unterstützt.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 11:55 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Hier mit Ubuntu 18 bricht das Break sofort aus der Schleife, und ohne Break öffntet sich kein Druckdialog. Ich kann das HTML aber in eine Datei speichern
Code:
   CreateFile(0, "/tmp/file.html")
   WriteString(0, FullHTML)
   CloseFile(0)
und diese mit Firefox öffnen, dann erscheint der Druckdialog. Kenne mich leider mit dem Webgadget nicht weiter aus.

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 12:04 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
RSBasic hat geschrieben:
Da das HTML und Javascript ist, sollte das keine Rolle spielen. Das sollte unter Linux genauso funktionieren. Und WebGadget wird unter Linux auch unterstützt.

Interessant! Laut Handbuch kann man nur mit Windows den HTML-Code direkt ins Gadget schieben. Mit Linux und Mac geht es nur über Datei oder Server. Zumindest war das bisher so. Wenn es jetzt dort auch mit SetGadgetItemText geht, dann habe ich nichts gesagt und es ist Cross-Plattform. Ansonsten geht es nur über Umwege.

Kleiner Tipp: Der Atomic Webserver aus dem Examples-Ordner dürfte für einen Umweg reichen ;)

_________________
USAC Protokoll
Universal Stringbased Application Communication Protocoll

Github: Zum Spezifikationdokument v0.01


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 12:32 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Berlin
@TroaX
Danke für die Information. Ist das generell eine Einschränkung unter Linux und MacOS oder liegt es an PB?
Diesen Umweg finde ich doof, dass man den Inhalt nicht direkt reinschreiben kann und dass man jedes Mal eine Datei erstellen muss.

Wenn es an PB liegt, vielleicht kann man mit Liinux-API den Inhalt direkt einfügen.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 12:36 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Berlin
Ich hab da was gefunden: https://www.purebasic.fr/english/viewto ... 12&t=71089

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 12:42 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
RSBasic hat geschrieben:
@TroaX
Danke für die Information. Ist das generell eine Einschränkung unter Linux und MacOS oder liegt es an PB?

Das kann ich dir so nicht genau sagen. Ich denke es ließ sich nicht direkt so einfach implementieren wie unter Windows.

RSBasic hat geschrieben:
Diesen Umweg finde ich doof, dass man den Inhalt nicht direkt reinschreiben kann und dass man jedes Mal eine Datei erstellen muss.

Ich würde es dann sowieso eher über einen Webserver auf Basis des Atomics machen. Er muss das HTML ja nur stumpf ausliefern. Mehr nicht.

_________________
USAC Protokoll
Universal Stringbased Application Communication Protocoll

Github: Zum Spezifikationdokument v0.01


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 15:06 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
So endlich zu Hause! :lol:

#NULL hat geschrieben:
Hier mit Ubuntu 18 bricht das Break sofort aus der Schleife, und ohne Break öffntet sich kein Druckdialog.

Es kann durchaus sein, das unter Linux und Mac dem Webkit-Gadget der Druckdialog fehlt. Unter Windows funktioniert das ganze so auch nur, weil der Druckdialog die weitere Ausführung des Javascripts verhindert. Damit das ganze wie eine Vorschau mit direktem Druckdialog funktioniert, ist auf Grund der eingeschränkten Möglichkeiten des Gadgets ein kleiner Javascript-Hack nötig. Wenn aber der Druckdialog fehlt, läuft das Javascript weiter und löst das Event aus, welches das Schließen der Vorschau forcieren soll. Deswegen läuft es bei dir auch direkt in den Break. Und das der Dialog ohne Break nicht erscheint, zeigt leider das Fehlen des Dialogs im Gadget unter Linux. Denn das Fenster der Druckvorschau bekommste denke ich mal.

_________________
USAC Protokoll
Universal Stringbased Application Communication Protocoll

Github: Zum Spezifikationdokument v0.01


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTMLPrintDialog mit PB unter Windows
BeitragVerfasst: 24.10.2018 15:16 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Zitat:
Denn das Fenster der Druckvorschau bekommste denke ich mal.

Ich sehe das Fenster mit dem gerenderten HTML, den Druckdialog nur über eine Datei mit Firefox.
Mir kam das jetzt aber irgendwie bekannt vor, und hatten wir auch tatsächlich schonmal:
https://www.purebasic.fr/german/viewtopic.php?p=344041#p344041

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye