<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[HTML2BMP]]></title><description><![CDATA[<p>Hi.</p>
<p>Ich habe paar HTML Seiten erstellt und möchte diese als Grafiken in meine PDF ablegen. Dazu möchte ich mir ein kleines Programm schreiben und mit Hilfe der CppWebBrowser Komponente eine HTML-Seite auf feste Breite und Höhe definieren und darstellen kann. Klappt auch alles.</p>
<p>Nun fehlt mir der entscheidende finale Schritt, wie bekomme ich nun die Ansicht als Grafik gespeichert und zwar die komplette, auch den Teil der erst beim scrollen erscheint.</p>
<p>Kann da wer Tipps geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204822/html2bmp</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 16:12:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204822.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Feb 2008 11:56:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to HTML2BMP on Thu, 07 Feb 2008 11:56:15 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>Ich habe paar HTML Seiten erstellt und möchte diese als Grafiken in meine PDF ablegen. Dazu möchte ich mir ein kleines Programm schreiben und mit Hilfe der CppWebBrowser Komponente eine HTML-Seite auf feste Breite und Höhe definieren und darstellen kann. Klappt auch alles.</p>
<p>Nun fehlt mir der entscheidende finale Schritt, wie bekomme ich nun die Ansicht als Grafik gespeichert und zwar die komplette, auch den Teil der erst beim scrollen erscheint.</p>
<p>Kann da wer Tipps geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451141</guid><dc:creator><![CDATA[shrugi]]></dc:creator><pubDate>Thu, 07 Feb 2008 11:56:15 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Thu, 07 Feb 2008 14:10:35 GMT]]></title><description><![CDATA[<p>Habe ein beispiel in Delphi gefunden: <a href="http://cc.borland.com/download.aspx?id=21429&amp;file=article_bdn_4%2fufrmMain.pas&amp;ln=1" rel="nofollow">http://cc.borland.com/download.aspx?id=21429&amp;file=article_bdn_4%2FufrmMain.pas&amp;ln=1</a></p>
<p>Habe versucht dieses zu CBuilder umzuschreiben, bekomme leider paar Fehler. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">void __fastcall TForm1::WebBrowser1DocumentComplete(TObject *Sender,
      LPDISPATCH pDisp, TVariant *URL)
{
    IViewObject *viewObject;
    TRect arect;

    //we check that document is really loaded
    //by checking navComplete because OnDocumentComplete
    //may occur even if browser did not succesfully navigate to site
    if ((navComplete) &amp;&amp; (WebBrowser1-&gt;Document!=NULL))
    {
        //query interface for IViewObject
        WebBrowser1-&gt;Document-&gt;QueryInterface(IViewObject, viewObject);
        if (viewObject!=NULL)
        {
            //hide scroll bar of browser
            WebBrowser1-&gt;OleObject-&gt;Document-&gt;Body-&gt;Style-&gt;OverflowX = &quot;hidden&quot;;
            WebBrowser1-&gt;OleObject-&gt;Document-&gt;Body-&gt;Style-&gt;OverflowY = &quot;hidden&quot;;

            //set size of webbrowser as big as actual html size because
            //we want to capture ALL html
            if (WebBrowser1-&gt;ClientWidth &lt; WebBrowser1-&gt;OleObject-&gt;Document-&gt;Body-&gt;ScrollWidth)
            {
                WebBrowser1-&gt;ClientWidth = WebBrowser1-&gt;OleObject-&gt;Document-&gt;Body-&gt;ScrollWidth;
            }

            if (WebBrowser1-&gt;ClientHeight &lt; WebBrowser1-&gt;OleObject-&gt;Document-&gt;Body-&gt;ScrollHeight)
            {
                //4 is a little bit hack value! i'don't know why. the height is always cut few pixel at the bottom
                //can anybody tell me why?
                WebBrowser1-&gt;ClientHeight = WebBrowser1-&gt;OleObject-&gt;Document-&gt;Body-&gt;ScrollHeight+4;
            }

            //note:if your html height or width is too big this may cause
            //exception due to not enough resource or memory for bitmap
            TargetBitmap-&gt;Width = WebBrowser1-&gt;ClientWidth;
            TargetBitmap-&gt;Height = WebBrowser1-&gt;ClientHeight;

            arect = Rect(0,
                        0,
                        WebBrowser1-&gt;ClientWidth,
                        WebBrowser1-&gt;ClientHeight);
                        //the actual draw
                        viewObject-&gt;Draw(DVASPECT_CONTENT,
                                        0,
                                        NULL,
                                        NULL,
                                        0,
                                        TargetBitmap-&gt;Canvas-&gt;Handle,
                                        &amp;arect,
                                        NULL,
                                        NULL,
                                        0);

            //btnSaveBitmap-&gt;Enabled = true;
            viewObject-&gt;Release();
            viewObject = NULL;
        }
    }
}
</code></pre>
<p>Habe die Fehlerzeilen an obige Anzeige angepasst</p>
<pre><code>&lsqb;&lsqb;C++ Fehler] Unit1.cpp(13): E2108 Ungültige Verwendung von typedef 'IViewObject'
[C++ Fehler] Unit1.cpp(13): E2034 Konvertierung von 'IViewObject *' nach 'void * *' nicht möglich
[C++ Fehler] Unit1.cpp(13): E2342 Keine Übereinstimmung des Typs beim Parameter 'ppvObject' ('void * *' erwartet, 'IViewObject *' erhalten)
[C++ Fehler] Unit1.cpp(17): E2288 Zeiger auf Struktur auf linker Seite von -&gt; oder von -&gt;* erforderlich
[C++ Fehler] Unit1.cpp(18): E2288 Zeiger auf Struktur auf linker Seite von -&gt; oder von -&gt;* erforderlich
.............
[C++ Fehler] Unit1.cpp(53): E2034 Konvertierung von 'TRect *' nach 'const _RECTL *' nicht möglich
[C++ Fehler] Unit1.cpp(53): E2342 Keine Übereinstimmung des Typs beim Parameter 'lprcBounds' ('const _RECTL *' erwartet, 'TRect *' erhalten)
</code></pre>
<p>Kann wer dazu helfen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451235</guid><dc:creator><![CDATA[shrugi]]></dc:creator><pubDate>Thu, 07 Feb 2008 14:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 13:20:18 GMT]]></title><description><![CDATA[<p>kann keiner helfen wie man aus</p>
<pre><code>var viewObject:IViewObject;
WebBrowser1.Document.QueryInterface(IViewObject,viewObject);
Webbrowser1.OleObject.Document.Body.Style.OverflowX:='hidden';
</code></pre>
<p>entsprechenden CBuilder Syntax macht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451962</guid><dc:creator><![CDATA[shrugi]]></dc:creator><pubDate>Fri, 08 Feb 2008 13:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 13:44:18 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>In meinem BCB5 gibt es jedenfalls kein Typ namens IViewObject oder TViewObject. Frag doch dort nach wo du den Quellcode her hast.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451982</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 08 Feb 2008 13:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 14:20:07 GMT]]></title><description><![CDATA[<p>Das ist schon beim BCB (auch 5) dabei. sieh mal nach oleidl.h. Bei möglichen Anwendungen finde ich aber nur pascal oder MFC-Sachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1452002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452002</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 08 Feb 2008 14:20:07 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 14:31:34 GMT]]></title><description><![CDATA[<p>CBuilder hat kein Problem mit &quot;IViewObject *viewObject;&quot; da geht er fehlerfrei drüber.<br />
Aber die beiden Zeilen darunter mag er in dieser Form garnicht.</p>
<pre><code>WebBrowser1.Document.QueryInterface(IViewObject,viewObject);
Webbrowser1.OleObject.Document.Body.Style.OverflowX:='hidden';
</code></pre>
<pre><code class="language-cpp">WebBrowser1-&gt;Document-&gt;QueryInterface(IViewObject, viewObject);
WebBrowser1-&gt;OleObject-&gt;Document-&gt;Body-&gt;Style-&gt;OverflowX = &quot;hidden&quot;;
</code></pre>
<p>Allein schon die Zeile macht 3 Fehler</p>
<pre><code class="language-cpp">WebBrowser1-&gt;Document-&gt;QueryInterface(IViewObject, viewObject);
//E2108 Ungültige Verwendung von typedef 'IViewObject'
//E2034 Konvertierung von 'IViewObject *' nach 'void * *' nicht möglich
//E2342 Keine Übereinstimmung des Typs beim Parameter 'ppvObject' ('void * *' erwartet, 'IViewObject *' erhalten)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1452009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452009</guid><dc:creator><![CDATA[shrugi]]></dc:creator><pubDate>Fri, 08 Feb 2008 14:31:34 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 14:39:55 GMT]]></title><description><![CDATA[<p>Dann würde ich das mal folgendermaßen ändern</p>
<pre><code class="language-cpp">WebBrowser1.Document.QueryInterface(__classid(IViewObject),reinterpret_cast&lt;void**&gt;(viewObject));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1452015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452015</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 08 Feb 2008 14:39:55 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 14:57:10 GMT]]></title><description><![CDATA[<p>Danke! Aber das war es noch nicht ganz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">WebBrowser1-&gt;Document-&gt;QueryInterface(__classid(IViewObject),reinterpret_cast&lt;void**&gt;(viewObject));
// E2242 Für __classid ist ein Klassentyp im VCL-Stil erforderlich.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1452028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452028</guid><dc:creator><![CDATA[shrugi]]></dc:creator><pubDate>Fri, 08 Feb 2008 14:57:10 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 15:01:19 GMT]]></title><description><![CDATA[<p>Dann mußt du mal nachschauen was QueryInterface so verlangt. Der erste parameter soll ja wohl einen Typen darstellen. Da man in C++ aber keine Typen übergeben kann ist das hier bestimmt etwas anders gelöst. Bei der VCL nimmt man eben __classid. IViewObject ist aber ein OLE-Interface.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1452033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452033</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 08 Feb 2008 15:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 15:07:49 GMT]]></title><description><![CDATA[<p>Ich hab gerade mal ein wenig nachgeschaut. evtl. geht das ja</p>
<pre><code class="language-cpp">WebBrowser1.Document.QueryInterface(IID_IViewObject,reinterpret_cast&lt;void**&gt;(viewObject));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1452038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452038</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 08 Feb 2008 15:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Fri, 08 Feb 2008 15:13:35 GMT]]></title><description><![CDATA[<p>Danke das hat super geholfen, zumindest geht der Compiler nun ohne mux drüber. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Den letzten Fehler den er nun noch meldet ist hinter &quot;WebBrowser1-&gt;OleObject&quot;.<br />
Eventuell eine Idee wie das ausschauen soll? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code>// DELPHI
WebBrowser1.OleObject.Document-&gt;Body.Styl.OverflowX := 'hidden';
</code></pre>
<pre><code class="language-cpp">// CBUILDER
WebBrowser1-&gt;OleObject-&gt;Document-&gt;Body-&gt;Style-&gt;OverflowX = &quot;hidden&quot;;
// E2288 Zeiger auf Struktur auf linker Seite von -&gt; oder von -&gt;* erforderlich
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1452042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452042</guid><dc:creator><![CDATA[shrugi]]></dc:creator><pubDate>Fri, 08 Feb 2008 15:13:35 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Sun, 10 Feb 2008 15:56:08 GMT]]></title><description><![CDATA[<p>Habe mich mittlerweile totgegoogelt und finde keine Lösung, vielleicht jemand der schonmal mit geabreitet hat und weiss woran es liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453125</guid><dc:creator><![CDATA[shrugi]]></dc:creator><pubDate>Sun, 10 Feb 2008 15:56:08 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Sun, 10 Feb 2008 23:13:56 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Vermutlich darf mindestens einer der Punkt-Operatoren nicht in einen Pfeiloperator umgewandelt werden.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453396</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 10 Feb 2008 23:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Mon, 11 Feb 2008 03:07:49 GMT]]></title><description><![CDATA[<p>Na und selbst wenn, du hast bei der Implementation des CppWebbrowsers beim BCB einen entscheidenden Nachteil.<br />
Du kannst nicht auf das OleObject zugreifen.<br />
Vielleicht hilft dir das weiter:</p>
<p><a href="http://www.codeproject.com/KB/IP/htmlimagecapture.aspx?msg=783507" rel="nofollow">http://www.codeproject.com/KB/IP/htmlimagecapture.aspx?msg=783507</a><br />
und<br />
<a href="http://www.codeproject.com/KB/GDI-plus/WebPageSnapshot.aspx" rel="nofollow">http://www.codeproject.com/KB/GDI-plus/WebPageSnapshot.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453412</guid><dc:creator><![CDATA[bloxx]]></dc:creator><pubDate>Mon, 11 Feb 2008 03:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Mon, 11 Feb 2008 03:30:20 GMT]]></title><description><![CDATA[<p>Es gibt auch eine Komponente die das kann. Kostet allerdings 149$.<br />
<a href="http://www.guangmingsoft.net/download.htm" rel="nofollow">http://www.guangmingsoft.net/download.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453414</guid><dc:creator><![CDATA[bloxx]]></dc:creator><pubDate>Mon, 11 Feb 2008 03:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Mon, 11 Feb 2008 09:26:49 GMT]]></title><description><![CDATA[<p>Ja hast wohl recht, lässt sich mit dem CBuilder so nicht realisieren.<br />
Vielleicht hilft ja jemand dieser Weg: <a href="http://www.bytesandmore.de/rad/index.htm?http://www.bytesandmore.de/rad/cpp/snipp/sc08019.php" rel="nofollow">http://www.bytesandmore.de/rad/index.htm?http://www.bytesandmore.de/rad/cpp/snipp/sc08019.php</a></p>
<p>Sieht aber &quot;korksig&quot; aus und komplex. Delphi 1 Zeile und CBuilder 1 Seite. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453465</guid><dc:creator><![CDATA[shrugi]]></dc:creator><pubDate>Mon, 11 Feb 2008 09:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Mon, 11 Feb 2008 14:00:42 GMT]]></title><description><![CDATA[<p>Also ich würde da ganz anders heran gehen.</p>
<p>Ich würde mir eine Form erstellen in der in nur den CppWebBrwoser anzeigen lasse.<br />
Im Idealfall als ohne Rahmen ect.pp.</p>
<p>Dann schiebe ich die Form auf Left = -1000 (außerhalb des sichtbaren Bereichen)<br />
Focus auf das Fenster legen und STRG+Druck-Taste auslösen lassen (Geht auch direkt über eine<br />
Funktion -&gt; siehe FAQ) runter scrollen lassen und nochmal. Das ganze dann aus der Zwischenablage<br />
holen und als BMP speichern (-&gt; siehe FAQ) und dann aufwendig wieder zusammen schnipseln.</p>
<p>Wäre meine erste überlegung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453647</guid><dc:creator><![CDATA[Slashi]]></dc:creator><pubDate>Mon, 11 Feb 2008 14:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to HTML2BMP on Mon, 11 Feb 2008 14:08:12 GMT]]></title><description><![CDATA[<p>Die Überlegung hat nur den Nachteil, das er dann den Screenshot vom Bildschirm hat und nicht vom Fenster. Trotzdem müsste er auch noch an die Breite und die Höhe des angeigten Dokumentes kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453655</guid><dc:creator><![CDATA[flogge]]></dc:creator><pubDate>Mon, 11 Feb 2008 14:08:12 GMT</pubDate></item></channel></rss>