Lokale HTML Site mit Iframe vollständig automatisch ausdrucken lassen
Hey,
habt ihr ggf. noch nen guten Tipp für mich ?
Ich bin derzeit auf der Suche nach einer Lösung voll automatisch mittels skript etc. eine lokale, ganze einfache html Seite auszudrucken. Soweit so gut hab ich auch schon z.B. sowas hier gefunden: www.printhtml.com/index.php
klappt wunderbar, Knackpunkt: In dem File ist ein iframe ( Karte ) eingebaut was nicht mit gedruckt wird ....
Habt ihr nen Tipp / Trick?
Per Batch wird dies denke ich sehr schwierig oder ?
Danke im Voraus!
MFG Beatzler
habt ihr ggf. noch nen guten Tipp für mich ?
Ich bin derzeit auf der Suche nach einer Lösung voll automatisch mittels skript etc. eine lokale, ganze einfache html Seite auszudrucken. Soweit so gut hab ich auch schon z.B. sowas hier gefunden: www.printhtml.com/index.php
klappt wunderbar, Knackpunkt: In dem File ist ein iframe ( Karte ) eingebaut was nicht mit gedruckt wird ....
Habt ihr nen Tipp / Trick?
Per Batch wird dies denke ich sehr schwierig oder ?
Danke im Voraus!
MFG Beatzler
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183264
Url: https://administrator.de/contentid/183264
Ausgedruckt am: 13.11.2024 um 22:11 Uhr
12 Kommentare
Neuester Kommentar
Moin Beatzler,
Nun, wenn 29,99 USD viel Geld sind, dann vielleicht noch:
eventuell kannst Du mit einem dieser Vorschläge die browserinterne Druckfunktion aufrufen?
Frohe Ostern und freundliche Grüße von der Insel - Mario
Nun, wenn 29,99 USD viel Geld sind, dann vielleicht noch:
... Trick mit der Windows eigenen Druckmöglichkeit ...
eventuell kannst Du mit einem dieser Vorschläge die browserinterne Druckfunktion aufrufen?
Frohe Ostern und freundliche Grüße von der Insel - Mario
Hallo Beatzler.
Du könntest auch versuchen den InternetExplorer zu scripten:
*.vbs
Grüße
rubberman
Du könntest auch versuchen den InternetExplorer zu scripten:
*.vbs
Const strURL = "http://www.google.com"
' http://msdn.microsoft.com/en-us/library/ms691264%28v=vs.85%29.aspx
Const OLECMDID_PRINT = 6
' http://msdn.microsoft.com/en-us/library/ms683930%28v=vs.85%29.aspx
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
Dim objIE
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True 'Setze auf False, wenn alles funktioniert
objIE.Navigate strURL
Do While objIE.Busy Or (objIE.ReadyState <> 4)
Wscript.Sleep 100
Loop
' http://msdn.microsoft.com/en-us/library/aa752087%28v=vs.85%29.aspx
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
WScript.Sleep 3000
objIE.Quit
Set objIE = Nothing
Grüße
rubberman
Hallo Beatzler.
Ich wusste, dass man den IE scripten kann und hatte auch eine Vorstellung davon wie es funktionieren müsste. Den Rest habe ich bei Google und auf den auskommentierten Seiten im MSDN nachgelesen. Ist also nicht sooo kompliziert gewesen
Das Problem bei HTML Dateien ist nun mal, dass der Quelltext geparst und interpretiert werden muss, um einen Ausdruck der Seite zu erzeugen. Nichts eignet sich besser als ein Webbrowser ...
Grüße
rubberman
Ich wusste, dass man den IE scripten kann und hatte auch eine Vorstellung davon wie es funktionieren müsste. Den Rest habe ich bei Google und auf den auskommentierten Seiten im MSDN nachgelesen. Ist also nicht sooo kompliziert gewesen
Das Problem bei HTML Dateien ist nun mal, dass der Quelltext geparst und interpretiert werden muss, um einen Ausdruck der Seite zu erzeugen. Nichts eignet sich besser als ein Webbrowser ...
Grüße
rubberman
Hallo Beatzler.
Ich könnte mir vorstellen, das Browser heutzutage soweit optimiert sind, dass sie nur noch die Teile einer Seite laden, die sichtbar sind.
Vielleicht sollte man dann tatsächlich den Browser im Fullscreen Modus laufen lassen und zusätzlich prüfen, ob das IFrame geladen wurde (sofern eines existiert).
Hoffe das funktioniert.
Grüße
rubberman
Ich könnte mir vorstellen, das Browser heutzutage soweit optimiert sind, dass sie nur noch die Teile einer Seite laden, die sichtbar sind.
Vielleicht sollte man dann tatsächlich den Browser im Fullscreen Modus laufen lassen und zusätzlich prüfen, ob das IFrame geladen wurde (sofern eines existiert).
Const strURL = "http://maps.google.de/maps?hl=de&tab=wl"
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
Dim objIE
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.FullScreen = True
objIE.Navigate strURL
Do While objIE.Busy Or (objIE.ReadyState <> 4)
WScript.Sleep 100
Loop
Dim n
n = objIE.Document.getElementsByTagName("iframe").length
If n > 0 Then
Dim objIFrame
Set objIFrame = objIE.Document.getElementsByTagName("iframe")(0)
Do While objIFrame.ReadyState <> "complete"
WScript.Sleep 100
Loop
End If
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
WScript.Sleep 3000
Set objIFrame = Nothing
objIE.Quit
Set objIE = Nothing
Hoffe das funktioniert.
Grüße
rubberman
Hallo Beatzler,
ob die Visible Eigenschaft einen Einfluss hat, solltest du mal real testen.
In meinem obigen Code bin ich nur von maximal einem IFrame ausgegangen. Um sicher zu stellen, dass wirklich alle IFrames geladen sind, muss noch eine zusätzlich Schleife rein.
Grüße
rubberman
EDIT: (i - n) war natürlich falsch. (i - 1) !
ob die Visible Eigenschaft einen Einfluss hat, solltest du mal real testen.
getElementsByTagName("iframe")
gibt eine Collection (Array) aller im Dokument enthaltenen IFrames zurück. Die Eigenschaft .length
dann die gefundene Anzahl. Über den Index lässt sich auf die einzelenen Elemente zugreifen, ein spezieller Name/ID ist nicht notwendig.In meinem obigen Code bin ich nur von maximal einem IFrame ausgegangen. Um sicher zu stellen, dass wirklich alle IFrames geladen sind, muss noch eine zusätzlich Schleife rein.
Const strURL = "http://maps.google.de/maps?hl=de&tab=wl"
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
Dim objIE
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.FullScreen = True
objIE.Navigate strURL
Do While objIE.Busy Or (objIE.ReadyState <> 4)
WScript.Sleep 100
Loop
Dim n
n = objIE.Document.getElementsByTagName("iframe").length
If n > 0 Then
Dim objIFrame, i
For i = 1 To n
Set objIFrame = objIE.Document.getElementsByTagName("iframe")(i - 1)
Do While objIFrame.ReadyState <> "complete"
WScript.Sleep 100
Loop
Set objIFrame = Nothing
Next
End If
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
WScript.Sleep 3000
objIE.Quit
Set objIE = Nothing
Grüße
rubberman
EDIT: (i - n) war natürlich falsch. (i - 1) !