Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Lokale HTML Site mit Iframe vollständig automatisch ausdrucken lassen

Frage Entwicklung Batch & Shell

Mitglied: Beatzler

Beatzler (Level 1) - Jetzt verbinden

08.04.2012 um 20:45 Uhr, 5051 Aufrufe, 12 Kommentare

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!

Mit freundlichen Grüßen Beatzler
Mitglied: mak-xxl
08.04.2012 um 21:01 Uhr
Moin Beatzler,

Hiermit geht das auch auf der Kommandozeile prima. Das lohnt das anschauen, ebenso wie das.

Frohe Ostern und freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: Beatzler
08.04.2012 um 21:39 Uhr
Hey Mario,

super vielen Dank für deine Antwort und Hilfe!

Leider möchte ich für diese Lösung nich "verhältnissmäßig" soviel Geld ausgeben ...

Daher würden die ersten beiden Lösungen leider wegfallen ... C# kann ich leider nicht proggen :/

Dachte eher an ein einfaches, kleines Basic Skript oder Trick mit der Windows eigenen Druckmöglichkeit etc..

Mhhhhh
Bitte warten ..
Mitglied: mak-xxl
08.04.2012 um 21:46 Uhr
Moin Beatzler,

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
Bitte warten ..
Mitglied: rubberman
09.04.2012 um 00:02 Uhr
Hallo Beatzler.

Du könntest auch versuchen den InternetExplorer zu scripten:

*.vbs
01.
Const strURL = "http://www.google.com" 
02.
 
03.
' http://msdn.microsoft.com/en-us/library/ms691264%28v=vs.85%29.aspx 
04.
Const OLECMDID_PRINT = 6 
05.
 
06.
' http://msdn.microsoft.com/en-us/library/ms683930%28v=vs.85%29.aspx 
07.
Const OLECMDEXECOPT_DONTPROMPTUSER = 2 
08.
 
09.
Dim objIE 
10.
Set objIE = CreateObject("InternetExplorer.Application") 
11.
objIE.Visible = True 'Setze auf False, wenn alles funktioniert 
12.
objIE.Navigate strURL 
13.
 
14.
Do While objIE.Busy Or (objIE.ReadyState <> 4) 
15.
    Wscript.Sleep 100 
16.
Loop 
17.
 
18.
' http://msdn.microsoft.com/en-us/library/aa752087%28v=vs.85%29.aspx 
19.
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER 
20.
 
21.
WScript.Sleep 3000 
22.
objIE.Quit 
23.
Set objIE = Nothing
Grüße
rubberman
Bitte warten ..
Mitglied: Beatzler
09.04.2012 um 13:36 Uhr
Hey,

das scheint super gut zu funktionieren !!!

Vielen lieben Dank!

Wie bist du auf diese Lösung gekommen?!

Jetzt muss ich den IE nur noch dazu bringen das Iframe richtig anzuzeigen / zu laden aber das sollte man hinbekommen )

BIG THX !

Mit freundlichen Grüßen Beatzler
Bitte warten ..
Mitglied: rubberman
09.04.2012 um 15:14 Uhr
Hallo Beatzler.

Zitat von Beatzler:
Wie bist du auf diese Lösung gekommen?!

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
Bitte warten ..
Mitglied: Beatzler
09.04.2012 um 17:47 Uhr
Super, einfach genial

Vielen Dank nochmals !

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Beatzler
21.12.2012 um 14:08 Uhr
Hey hey,

hättet ihr ggf. nochmals einen Tipp für mich ? Das mit dem oben genannten Script funktioniert generell super. Nur leider lädt er manchmal das iframe ( google Maps Karte ) auf der auszudruckenden Seite unvollständig oder falsch .... Habe schon mit den Warte / Pausen Werten rumgespielt aber das bringt leider nichts. Wenn ich das ganze manuell per Hand mache funktioniert der Ausdruck ... :/

Jemand ne Idee / nen Tipp wodran das liegen könnte oder wie man das beheben kann ?

VIelen Dank !

Mit freundlichen Grüßen Beatzler
Bitte warten ..
Mitglied: rubberman
21.12.2012 um 19:02 Uhr
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).

01.
Const strURL = "http://maps.google.de/maps?hl=de&tab=wl" 
02.
 
03.
Const OLECMDID_PRINT = 6 
04.
Const OLECMDEXECOPT_DONTPROMPTUSER = 2 
05.
 
06.
Dim objIE 
07.
Set objIE = CreateObject("InternetExplorer.Application") 
08.
objIE.Visible = True 
09.
objIE.FullScreen = True 
10.
objIE.Navigate strURL 
11.
 
12.
Do While objIE.Busy Or (objIE.ReadyState <> 4) 
13.
    WScript.Sleep 100 
14.
Loop 
15.
 
16.
Dim n 
17.
n = objIE.Document.getElementsByTagName("iframe").length 
18.
If n > 0 Then 
19.
  Dim objIFrame 
20.
  Set objIFrame = objIE.Document.getElementsByTagName("iframe")(0) 
21.
  Do While objIFrame.ReadyState <> "complete" 
22.
      WScript.Sleep 100 
23.
  Loop 
24.
End If 
25.
 
26.
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER 
27.
 
28.
WScript.Sleep 3000 
29.
 
30.
Set objIFrame = Nothing 
31.
objIE.Quit 
32.
Set objIE = Nothing
Hoffe das funktioniert.

Grüße
rubberman
Bitte warten ..
Mitglied: Beatzler
21.12.2012 um 19:42 Uhr
Hey rubberman,

klasse erstmal vielen Dank für deinen tollen und schnellen Support !!! Mal wieder Genial!

Kann es auswirkungen haben ob ich das ganze sichtbar oder "unsichtbar" ausführen lasse ?
objIE.Visible = True ( hatte es bisher immer im Hintergrund )

Ich kann das ganze mit nem PDF Printer testen, nur leider verhält sich dort immer alles korrekt und auf Papier stimmt es dann komischerweise nicht ganz .... ( kann ich mir auch noch nicht ganz erklären, passiert aber auf zwei unterschiedlchen Systemen / Druckern identisch ... )

Die aufzurufende Website hat zwei kleine iframe´s, oben nur einen kleinen text und unten die google maps Karte ...
Bin leider kein Experte :/ Muss ich meine frame´s irgendwie speziell bennen oder hat das hiermit nix zu tun getElementsByTagName("iframe") ? Wäre das der name=Tag in der HTML Site ??

Müsste morgen mal einen Versuch mit deinem neuem Code real starten ...

Danke und Gruß

Beatzler
Bitte warten ..
Mitglied: rubberman
21.12.2012, aktualisiert 22.12.2012
Hallo Beatzler,

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.
01.
Const strURL = "http://maps.google.de/maps?hl=de&tab=wl" 
02.
 
03.
Const OLECMDID_PRINT = 6 
04.
Const OLECMDEXECOPT_DONTPROMPTUSER = 2 
05.
 
06.
Dim objIE 
07.
Set objIE = CreateObject("InternetExplorer.Application") 
08.
objIE.Visible = True 
09.
objIE.FullScreen = True 
10.
objIE.Navigate strURL 
11.
 
12.
Do While objIE.Busy Or (objIE.ReadyState <> 4) 
13.
    WScript.Sleep 100 
14.
Loop 
15.
 
16.
Dim n 
17.
n = objIE.Document.getElementsByTagName("iframe").length 
18.
If n > 0 Then 
19.
  Dim objIFrame, i 
20.
  For i = 1 To n 
21.
    Set objIFrame = objIE.Document.getElementsByTagName("iframe")(i - 1) 
22.
    Do While objIFrame.ReadyState <> "complete" 
23.
        WScript.Sleep 100 
24.
    Loop 
25.
    Set objIFrame = Nothing 
26.
  Next 
27.
End If 
28.
 
29.
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER 
30.
 
31.
WScript.Sleep 3000 
32.
 
33.
objIE.Quit 
34.
Set objIE = Nothing
Grüße
rubberman

EDIT: (i - n) war natürlich falsch. (i - 1) !
Bitte warten ..
Mitglied: Beatzler
23.12.2012 um 19:52 Uhr
Hey rubberman,

vielen dank!!! ICh konnte das ganze heute real mal testen und habe ein bisschen gespielt mit visibile an / aus, den Wartezeiten, FUllscreen sowie ein paar IE Druckeinstellungen usw.
Es ist eine Verbesserung ersichtlich aber leider entstehen immer noch komische Anzeigevarianten der Google Karte....
Das komische ist nur wenn ich im Visible bin sieht alles gut aus, auch wenn ich manuell auf die Druckvorschau klick sieht noch alles schicki aus ... Nur der PDF oder Real Ausdruck ist dann immer teilweise verschoben oder verzehrt ...


Ich glaube es liegt nicht wirklich an deinem Skript....

Sehr komisch alles. Ich danke dir trotzdem auf jedenfall nochmals für deine bisherige klasse Hilfe !!!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
Drucker automatisch verbinden lassen (9)

Frage von 2Seiten zum Thema Windows Server ...

VB for Applications
Aus VBA E-Mail und HTML Dokument erstellen lassen (3)

Frage von Pago159 zum Thema VB for Applications ...

Debian
Ist es möglich den Pi automatisch booten zu lassen? (15)

Frage von M.Marz zum Thema Debian ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...