473,589 Members | 2,649 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

WebBrowser Control Printing

Greetings,

(.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).

I've decided to take advantage of the layout characteristics of HTML
documents to simplify my printing tasks, but of course it's thrown up a
whole host of new issues...

I'm generating a multi page printable document in HTML from my app, and
displaying it in a WebBrowser control. I've looked into using some CSS
commands to control pagination, but nothing seems to fit the bill so far.

I need to include a custom header/footer (imported from another HTML file)
on every page that's printed. I also need to draw a border around each
page. The closest I can get to the border is putting all my print-content
inside an HTML table, which looks ugly because it doesn't close off at the
foot of each page - it only draws its final horizontal line at the very end
of the document.

I tried inheriting from WebBrowser and overriding the OnPrint event, but
this never seems to get called? I've found an example on the MSDN site, but
it's all in C++ and seems designed around MFC.

How can I hang on to the snazzy built-in formatting features of HTML, but
still have control over the printed output & pagination? Help!

Thanks in advance,
Alex Clark


Mar 9 '06 #1
12 6344
Alex,

I suggest you look into Print Templates:

http://msdn.microsoft.com/library/de...intpreview.asp

http://msdn.microsoft.com/library/de...asp?frame=true

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Greetings,

(.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).

I've decided to take advantage of the layout characteristics of HTML
documents to simplify my printing tasks, but of course it's thrown up a
whole host of new issues...

I'm generating a multi page printable document in HTML from my app, and
displaying it in a WebBrowser control. I've looked into using some CSS
commands to control pagination, but nothing seems to fit the bill so far.

I need to include a custom header/footer (imported from another HTML file)
on every page that's printed. I also need to draw a border around each
page. The closest I can get to the border is putting all my print-content
inside an HTML table, which looks ugly because it doesn't close off at the
foot of each page - it only draws its final horizontal line at the very
end of the document.

I tried inheriting from WebBrowser and overriding the OnPrint event, but
this never seems to get called? I've found an example on the MSDN site,
but it's all in C++ and seems designed around MFC.

How can I hang on to the snazzy built-in formatting features of HTML, but
still have control over the printed output & pagination? Help!

Thanks in advance,
Alex Clark

Mar 9 '06 #2
Hi Colin,

These look really useful but the article seems to imply that this is only
possible when using C++. I know it was written a long time ago (before
..NET) but it doesn't seem as though it could be very VB.NET friendly :-(

Thanks,
Alex

"Colin Neller" <cn*****@gmail. com> wrote in message
news:e6******** ******@tk2msftn gp13.phx.gbl...
Alex,

I suggest you look into Print Templates:

http://msdn.microsoft.com/library/de...intpreview.asp

http://msdn.microsoft.com/library/de...asp?frame=true

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Greetings,

(.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).

I've decided to take advantage of the layout characteristics of HTML
documents to simplify my printing tasks, but of course it's thrown up a
whole host of new issues...

I'm generating a multi page printable document in HTML from my app, and
displaying it in a WebBrowser control. I've looked into using some CSS
commands to control pagination, but nothing seems to fit the bill so far.

I need to include a custom header/footer (imported from another HTML
file) on every page that's printed. I also need to draw a border around
each page. The closest I can get to the border is putting all my
print-content inside an HTML table, which looks ugly because it doesn't
close off at the foot of each page - it only draws its final horizontal
line at the very end of the document.

I tried inheriting from WebBrowser and overriding the OnPrint event, but
this never seems to get called? I've found an example on the MSDN site,
but it's all in C++ and seems designed around MFC.

How can I hang on to the snazzy built-in formatting features of HTML, but
still have control over the printed output & pagination? Help!

Thanks in advance,
Alex Clark


Mar 9 '06 #3
Alex,

Print Templates are certainly non-trivial, but they do not require C++. The
key line of code from the example I gave is:

pCmdTarg->Exec(&CGID_MSH TML,
IDM_PRINT,
OLECMDEXECOPT_P ROMPTUSER,
&vTemplatePa th,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to an
IOleCommandTarg et and call the Exec method (as above) passing in the path to
your print template (vTemplatePath in the above example.) The vast majority
of the Print Template code will be written in JavaScript.

Honestly, I think you would be better investing in a report writing tool
(e.g. ActiveReports) The path you are headed down with the WB is not an
easy one.

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
Hi Colin,

These look really useful but the article seems to imply that this is only
possible when using C++. I know it was written a long time ago (before
.NET) but it doesn't seem as though it could be very VB.NET friendly :-(

Thanks,
Alex

"Colin Neller" <cn*****@gmail. com> wrote in message
news:e6******** ******@tk2msftn gp13.phx.gbl...
Alex,

I suggest you look into Print Templates:

http://msdn.microsoft.com/library/de...intpreview.asp

http://msdn.microsoft.com/library/de...asp?frame=true

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Greetings,

(.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).

I've decided to take advantage of the layout characteristics of HTML
documents to simplify my printing tasks, but of course it's thrown up a
whole host of new issues...

I'm generating a multi page printable document in HTML from my app, and
displaying it in a WebBrowser control. I've looked into using some CSS
commands to control pagination, but nothing seems to fit the bill so
far.

I need to include a custom header/footer (imported from another HTML
file) on every page that's printed. I also need to draw a border around
each page. The closest I can get to the border is putting all my
print-content inside an HTML table, which looks ugly because it doesn't
close off at the foot of each page - it only draws its final horizontal
line at the very end of the document.

I tried inheriting from WebBrowser and overriding the OnPrint event, but
this never seems to get called? I've found an example on the MSDN site,
but it's all in C++ and seems designed around MFC.

How can I hang on to the snazzy built-in formatting features of HTML,
but still have control over the printed output & pagination? Help!

Thanks in advance,
Alex Clark



Mar 9 '06 #4
Hi Colin,

After further investigation on the web I'm still fairly convinced this is a
C++ only option, due to the wrapping of COM Variant types - .NET interop
will, apparently, not support this at all, unless something has changed as
of 2.0.

I think you're right about the report-writing avenue however. It's a shame,
as what I'm trying to do would be ideally suited to generating a quick HTML
file and printing it, if only I could have slightly more control over the
printed output :-(

Thanks for your help,
Alex Clark


"Colin Neller" <cn*****@gmail. com> wrote in message
news:Ok******** ******@TK2MSFTN GP12.phx.gbl...
Alex,

Print Templates are certainly non-trivial, but they do not require C++.
The key line of code from the example I gave is:

pCmdTarg->Exec(&CGID_MSH TML,
IDM_PRINT,
OLECMDEXECOPT_P ROMPTUSER,
&vTemplatePa th,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to
an IOleCommandTarg et and call the Exec method (as above) passing in the
path to your print template (vTemplatePath in the above example.) The
vast majority of the Print Template code will be written in JavaScript.

Honestly, I think you would be better investing in a report writing tool
(e.g. ActiveReports) The path you are headed down with the WB is not an
easy one.

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
Hi Colin,

These look really useful but the article seems to imply that this is only
possible when using C++. I know it was written a long time ago (before
.NET) but it doesn't seem as though it could be very VB.NET friendly :-(

Thanks,
Alex

"Colin Neller" <cn*****@gmail. com> wrote in message
news:e6******** ******@tk2msftn gp13.phx.gbl...
Alex,

I suggest you look into Print Templates:

http://msdn.microsoft.com/library/de...intpreview.asp

http://msdn.microsoft.com/library/de...asp?frame=true

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Greetings,

(.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).

I've decided to take advantage of the layout characteristics of HTML
documents to simplify my printing tasks, but of course it's thrown up a
whole host of new issues...

I'm generating a multi page printable document in HTML from my app, and
displaying it in a WebBrowser control. I've looked into using some CSS
commands to control pagination, but nothing seems to fit the bill so
far.

I need to include a custom header/footer (imported from another HTML
file) on every page that's printed. I also need to draw a border
around each page. The closest I can get to the border is putting all
my print-content inside an HTML table, which looks ugly because it
doesn't close off at the foot of each page - it only draws its final
horizontal line at the very end of the document.

I tried inheriting from WebBrowser and overriding the OnPrint event,
but this never seems to get called? I've found an example on the MSDN
site, but it's all in C++ and seems designed around MFC.

How can I hang on to the snazzy built-in formatting features of HTML,
but still have control over the printed output & pagination? Help!

Thanks in advance,
Alex Clark




Mar 9 '06 #5
Hi Alex,
Thanks for your response!
After further investigation on the web I'm still fairly convinced this is aC++ only option, due to the wrapping of COM Variant types - .NET interop
will, apparently, not support this at all, unless something has changed as.of 2.0.
WebBrowser control provide us IWebBrowser2 com-interface and we can use
this interface to control WebBrowser control's operation. IWebBrowser2 is
an IDispatch interface, in a word, this is a dual-interface, so we can use
it in C++ and VB. If your environment is .Net, we could use it with
Interoperabilit y mechanism. I hope the following articles will be helpful
for you:
Title: Using the WebBrowser control in .NET
URL: http://www.codeproject.com/csharp/webbrowser.asp

Title: Using MSHTML Advanced Hosting Interfaces
URL: http://www.codeproject.com/csharp/advhost.asp

Title: Microsoft Web Browser Automation using C#
URL: http://www.codeproject.com/csharp/mshtml_automation.asp

I hope the above information is helpful for you. If there is anything I
can do for you, please feel free to let me know. Thanks and have a nice day!

Best Regards,

Terry Fei[MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

--------------------Reply-To: "Alex Clark" <ho*******@news groups.nospam>
From: "Alex Clark" <ho*******@news groups.nospam>
References: <#5************ **@tk2msftngp13 .phx.gbl> <e6************ **@tk2msftngp13 .phx.gbl>
<#8************ **@TK2MSFTNGP11 .phx.gbl>
<Ok************ **@TK2MSFTNGP12 .phx.gbl>Subject: Re: WebBrowser Control Printing
Date: Thu, 9 Mar 2006 16:22:23 -0000
Lines: 116
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
X-RFC2646: Format=Flowed; Response
Message-ID: <e7************ **@TK2MSFTNGP12 .phx.gbl>
Newsgroups: microsoft.publi c.dotnet.langua ges.vb
NNTP-Posting-Host: host86-134-248-72.range86-134.btcentralpl us.com 86.134.248.72Path: TK2MSFTNGXA03.p hx.gbl!TK2MSFTN GP08.phx.gbl!TK 2MSFTNGP12.phx. gbl
Xref: TK2MSFTNGXA03.p hx.gbl microsoft.publi c.dotnet.langua ges.vb:321151
X-Tomcat-NG: microsoft.publi c.dotnet.langua ges.vb

Hi Colin,

After further investigation on the web I'm still fairly convinced this is aC++ only option, due to the wrapping of COM Variant types - .NET interop
will, apparently, not support this at all, unless something has changed as
of 2.0.

I think you're right about the report-writing avenue however. It's a shame,as what I'm trying to do would be ideally suited to generating a quick HTMLfile and printing it, if only I could have slightly more control over the
printed output :-(

Thanks for your help,
Alex Clark


"Colin Neller" <cn*****@gmail. com> wrote in message
news:Ok******* *******@TK2MSFT NGP12.phx.gbl.. .
Alex,

Print Templates are certainly non-trivial, but they do not require C++.
The key line of code from the example I gave is:

pCmdTarg->Exec(&CGID_MSH TML,
IDM_PRINT,
OLECMDEXECOPT_P ROMPTUSER,
&vTemplatePa th,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to
an IOleCommandTarg et and call the Exec method (as above) passing in the
path to your print template (vTemplatePath in the above example.) The
vast majority of the Print Template code will be written in JavaScript.

Honestly, I think you would be better investing in a report writing tool
(e.g. ActiveReports) The path you are headed down with the WB is not an
easy one.

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
Hi Colin,

These look really useful but the article seems to imply that this is only possible when using C++. I know it was written a long time ago (before
.NET) but it doesn't seem as though it could be very VB.NET friendly :-(

Thanks,
Alex

"Colin Neller" <cn*****@gmail. com> wrote in message
news:e6******** ******@tk2msftn gp13.phx.gbl...
Alex,

I suggest you look into Print Templates:

http://msdn.microsoft.com/library/de...us/dnie55/html
/beyondprintprev iew.asp
http://msdn.microsoft.com/library/de...us/dnie55/html
/printtemplate2. asp?frame=true
--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
> Greetings,
>
> (.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).
>
> I've decided to take advantage of the layout characteristics of HTML
> documents to simplify my printing tasks, but of course it's thrown up a> whole host of new issues...
>
> I'm generating a multi page printable document in HTML from my app, and> displaying it in a WebBrowser control. I've looked into using some CSS> commands to control pagination, but nothing seems to fit the bill so
> far.
>
> I need to include a custom header/footer (imported from another HTML
> file) on every page that's printed. I also need to draw a border
> around each page. The closest I can get to the border is putting all
> my print-content inside an HTML table, which looks ugly because it
> doesn't close off at the foot of each page - it only draws its final
> horizontal line at the very end of the document.
>
> I tried inheriting from WebBrowser and overriding the OnPrint event,
> but this never seems to get called? I've found an example on the MSDN> site, but it's all in C++ and seems designed around MFC.
>
> How can I hang on to the snazzy built-in formatting features of HTML,
> but still have control over the printed output & pagination? Help!
>
> Thanks in advance,
> Alex Clark
>
>
>
>




Mar 14 '06 #6
Hi Terry,

Any chance you could give me some example code in either C# or VB.NET for
using Print Templates with the WebBrowser control? I'm using .NET 2.0 and
my clients will have IE6 installed as a minimum. A simple example just to
get me started would be much appreciated.

Many thanks,
Alex
""TerryFei" " <v-******@online.m icrosoft.com> wrote in message
news:np******** ******@TK2MSFTN GXA03.phx.gbl.. .
Hi Alex,
Thanks for your response!
After further investigation on the web I'm still fairly convinced this is aC++ only option, due to the wrapping of COM Variant types - .NET interop
will, apparently, not support this at all, unless something has changed as.of 2.0. WebBrowser control provide us IWebBrowser2 com-interface and we can use
this interface to control WebBrowser control's operation. IWebBrowser2 is
an IDispatch interface, in a word, this is a dual-interface, so we can use
it in C++ and VB. If your environment is .Net, we could use it with
Interoperabilit y mechanism. I hope the following articles will be helpful
for you:
Title: Using the WebBrowser control in .NET
URL: http://www.codeproject.com/csharp/webbrowser.asp

Title: Using MSHTML Advanced Hosting Interfaces
URL: http://www.codeproject.com/csharp/advhost.asp

Title: Microsoft Web Browser Automation using C#
URL: http://www.codeproject.com/csharp/mshtml_automation.asp

I hope the above information is helpful for you. If there is anything I
can do for you, please feel free to let me know. Thanks and have a nice
day!

Best Regards,

Terry Fei[MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

--------------------
Reply-To: "Alex Clark" <ho*******@news groups.nospam>
From: "Alex Clark" <ho*******@news groups.nospam>
References: <#5************ **@tk2msftngp13 .phx.gbl>

<e6************ **@tk2msftngp13 .phx.gbl>
<#8************ **@TK2MSFTNGP11 .phx.gbl>
<Ok************ **@TK2MSFTNGP12 .phx.gbl>
Subject: Re: WebBrowser Control Printing
Date: Thu, 9 Mar 2006 16:22:23 -0000
Lines: 116
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
X-RFC2646: Format=Flowed; Response
Message-ID: <e7************ **@TK2MSFTNGP12 .phx.gbl>
Newsgroups: microsoft.publi c.dotnet.langua ges.vb
NNTP-Posting-Host: host86-134-248-72.range86-134.btcentralpl us.com

86.134.248.72
Path: TK2MSFTNGXA03.p hx.gbl!TK2MSFTN GP08.phx.gbl!TK 2MSFTNGP12.phx. gbl
Xref: TK2MSFTNGXA03.p hx.gbl microsoft.publi c.dotnet.langua ges.vb:321151
X-Tomcat-NG: microsoft.publi c.dotnet.langua ges.vb

Hi Colin,

After further investigation on the web I'm still fairly convinced this is

a
C++ only option, due to the wrapping of COM Variant types - .NET interop
will, apparently, not support this at all, unless something has changed as
of 2.0.

I think you're right about the report-writing avenue however. It's a

shame,
as what I'm trying to do would be ideally suited to generating a quick

HTML
file and printing it, if only I could have slightly more control over the
printed output :-(

Thanks for your help,
Alex Clark


"Colin Neller" <cn*****@gmail. com> wrote in message
news:Ok****** ********@TK2MSF TNGP12.phx.gbl. ..
Alex,

Print Templates are certainly non-trivial, but they do not require C++.
The key line of code from the example I gave is:

pCmdTarg->Exec(&CGID_MSH TML,
IDM_PRINT,
OLECMDEXECOPT_P ROMPTUSER,
&vTemplatePa th,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to
an IOleCommandTarg et and call the Exec method (as above) passing in the
path to your print template (vTemplatePath in the above example.) The
vast majority of the Print Template code will be written in JavaScript.

Honestly, I think you would be better investing in a report writing tool
(e.g. ActiveReports) The path you are headed down with the WB is not an
easy one.

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
Hi Colin,

These look really useful but the article seems to imply that this is

only possible when using C++. I know it was written a long time ago (before
.NET) but it doesn't seem as though it could be very VB.NET friendly
:-(

Thanks,
Alex

"Colin Neller" <cn*****@gmail. com> wrote in message
news:e6******** ******@tk2msftn gp13.phx.gbl...
> Alex,
>
> I suggest you look into Print Templates:
>
> http://msdn.microsoft.com/library/de...us/dnie55/html
/beyondprintprev iew.asp>
> http://msdn.microsoft.com/library/de...us/dnie55/html
/printtemplate2. asp?frame=true>
> --
> Colin Neller
> http://www.colinneller.com/blog
>
>
> "Alex Clark" <ho*******@news groups.nospam> wrote in message
> news:%2******** ********@tk2msf tngp13.phx.gbl. ..
>> Greetings,
>>
>> (.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).
>>
>> I've decided to take advantage of the layout characteristics of HTML
>> documents to simplify my printing tasks, but of course it's thrown up a>> whole host of new issues...
>>
>> I'm generating a multi page printable document in HTML from my app, and>> displaying it in a WebBrowser control. I've looked into using some CSS>> commands to control pagination, but nothing seems to fit the bill so
>> far.
>>
>> I need to include a custom header/footer (imported from another HTML
>> file) on every page that's printed. I also need to draw a border
>> around each page. The closest I can get to the border is putting all
>> my print-content inside an HTML table, which looks ugly because it
>> doesn't close off at the foot of each page - it only draws its final
>> horizontal line at the very end of the document.
>>
>> I tried inheriting from WebBrowser and overriding the OnPrint event,
>> but this never seems to get called? I've found an example on the MSDN>> site, but it's all in C++ and seems designed around MFC.
>>
>> How can I hang on to the snazzy built-in formatting features of HTML,
>> but still have control over the printed output & pagination? Help!
>>
>> Thanks in advance,
>> Alex Clark
>>
>>
>>
>>
>
>


Mar 15 '06 #7
Hi Alex,
After researching, we can use WebBrowser to print, just like the following
code:
m_axWebBrowser. ExecWB(SHDocVw. OLECMDID.OLECMD ID_PRINT,
SHDocVw.OLECMDE XECOPT.OLECMDEX ECOPT_DODEFAULT ,
ref o, ref o);

I also the following article will be helpful for you:
Title: Using the WebBrowser control in .NET
URL: http://www.codeproject.com/csharp/webbrowser.asp

Thanks for your understanding!

Best Regards,

Terry Fei[MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

--------------------
Reply-To: "Alex Clark" <ho*******@news groups.nospam>
From: "Alex Clark" <ho*******@news groups.nospam>
References: <#5************ **@tk2msftngp13 .phx.gbl> <e6************ **@tk2msftngp13 .phx.gbl>
<#8************ **@TK2MSFTNGP11 .phx.gbl>
<Ok************ **@TK2MSFTNGP12 .phx.gbl>
<e7************ **@TK2MSFTNGP12 .phx.gbl>
<np************ **@TK2MSFTNGXA0 3.phx.gbl>Subject: Re: WebBrowser Control Printing
Date: Wed, 15 Mar 2006 11:44:28 -0000
Lines: 207
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
X-RFC2646: Format=Flowed; Original
Message-ID: <uY************ **@TK2MSFTNGP11 .phx.gbl>
Newsgroups: microsoft.publi c.dotnet.langua ges.vb
NNTP-Posting-Host: host81-152-10-23.range81-152.btcentralpl us.com 81.152.10.23Path: TK2MSFTNGXA03.p hx.gbl!TK2MSFTN GP08.phx.gbl!TK 2MSFTNGP11.phx. gbl
Xref: TK2MSFTNGXA03.p hx.gbl microsoft.publi c.dotnet.langua ges.vb:321889
X-Tomcat-NG: microsoft.publi c.dotnet.langua ges.vb

Hi Terry,

Any chance you could give me some example code in either C# or VB.NET for
using Print Templates with the WebBrowser control? I'm using .NET 2.0 and
my clients will have IE6 installed as a minimum. A simple example just to
get me started would be much appreciated.

Many thanks,
Alex
""TerryFei" " <v-******@online.m icrosoft.com> wrote in message
news:np******* *******@TK2MSFT NGXA03.phx.gbl. ..
Hi Alex,
Thanks for your response!
After further investigation on the web I'm still fairly convinced this is
a
C++ only option, due to the wrapping of COM Variant types - .NET interop
will, apparently, not support this at all, unless something has changed

as
.of 2.0.

WebBrowser control provide us IWebBrowser2 com-interface and we can use
this interface to control WebBrowser control's operation. IWebBrowser2 is
an IDispatch interface, in a word, this is a dual-interface, so we can use it in C++ and VB. If your environment is .Net, we could use it with
Interoperabilit y mechanism. I hope the following articles will be helpful
for you:
Title: Using the WebBrowser control in .NET
URL: http://www.codeproject.com/csharp/webbrowser.asp

Title: Using MSHTML Advanced Hosting Interfaces
URL: http://www.codeproject.com/csharp/advhost.asp

Title: Microsoft Web Browser Automation using C#
URL: http://www.codeproject.com/csharp/mshtml_automation.asp

I hope the above information is helpful for you. If there is anything I
can do for you, please feel free to let me know. Thanks and have a nice
day!

Best Regards,

Terry Fei[MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

--------------------
Reply-To: "Alex Clark" <ho*******@news groups.nospam>
From: "Alex Clark" <ho*******@news groups.nospam>
References : <#5************ **@tk2msftngp13 .phx.gbl>

<e6************ **@tk2msftngp13 .phx.gbl>
<#8************ **@TK2MSFTNGP11 .phx.gbl>
<Ok************ **@TK2MSFTNGP12 .phx.gbl>
Subject: Re: WebBrowser Control Printing
Date: Thu, 9 Mar 2006 16:22:23 -0000
Lines: 116
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
X-RFC2646: Format=Flowed; Response
Message-ID: <e7************ **@TK2MSFTNGP12 .phx.gbl>
Newsgroups : microsoft.publi c.dotnet.langua ges.vb
NNTP-Posting-Host: host86-134-248-72.range86-134.btcentralpl us.com

86.134.248.72
Path: TK2MSFTNGXA03.p hx.gbl!TK2MSFTN GP08.phx.gbl!TK 2MSFTNGP12.phx. gbl
Xref: TK2MSFTNGXA03.p hx.gbl microsoft.publi c.dotnet.langua ges.vb:321151
X-Tomcat-NG: microsoft.publi c.dotnet.langua ges.vb

Hi Colin,

After further investigation on the web I'm still fairly convinced this is

a
C++ only option, due to the wrapping of COM Variant types - .NET interop
will, apparently, not support this at all, unless something has changed
asof 2.0.

I think you're right about the report-writing avenue however. It's a

shame,
as what I'm trying to do would be ideally suited to generating a quick

HTML
file and printing it, if only I could have slightly more control over the
printed output :-(

Thanks for your help,
Alex Clark


"Colin Neller" <cn*****@gmail. com> wrote in message
news:Ok***** *********@TK2MS FTNGP12.phx.gbl ...
Alex,

Print Templates are certainly non-trivial, but they do not require C++.
The key line of code from the example I gave is:

pCmdTarg->Exec(&CGID_MSH TML,
IDM_PRINT,
OLECMDEXECOPT_P ROMPTUSER,
&vTemplatePa th,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to an IOleCommandTarg et and call the Exec method (as above) passing in the
path to your print template (vTemplatePath in the above example.) The
vast majority of the Print Template code will be written in JavaScript.

Honestly, I think you would be better investing in a report writing tool (e.g. ActiveReports) The path you are headed down with the WB is not an easy one.

--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@news groups.nospam> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
> Hi Colin,
>
> These look really useful but the article seems to imply that this is

only
> possible when using C++. I know it was written a long time ago (before> .NET) but it doesn't seem as though it could be very VB.NET friendly
> :-(
>
> Thanks,
> Alex
>
>
>
> "Colin Neller" <cn*****@gmail. com> wrote in message
> news:e6******** ******@tk2msftn gp13.phx.gbl...
>> Alex,
>>
>> I suggest you look into Print Templates:
>>
>>

http://msdn.microsoft.com/library/de...us/dnie55/html /beyondprintprev iew.asp
>>
>>

http://msdn.microsoft.com/library/de...us/dnie55/html /printtemplate2. asp?frame=true
>>
>> --
>> Colin Neller
>> http://www.colinneller.com/blog
>>
>>
>> "Alex Clark" <ho*******@news groups.nospam> wrote in message
>> news:%2******** ********@tk2msf tngp13.phx.gbl. ..
>>> Greetings,
>>>
>>> (.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).
>>>
>>> I've decided to take advantage of the layout characteristics of HTML
>>> documents to simplify my printing tasks, but of course it's thrown up
a
>>> whole host of new issues...
>>>
>>> I'm generating a multi page printable document in HTML from my app,

and
>>> displaying it in a WebBrowser control. I've looked into using some

CSS
>>> commands to control pagination, but nothing seems to fit the bill so
>>> far.
>>>
>>> I need to include a custom header/footer (imported from another HTML
>>> file) on every page that's printed. I also need to draw a border
>>> around each page. The closest I can get to the border is putting

all>>> my print-content inside an HTML table, which looks ugly because it
>>> doesn't close off at the foot of each page - it only draws its final
>>> horizontal line at the very end of the document.
>>>
>>> I tried inheriting from WebBrowser and overriding the OnPrint event,
>>> but this never seems to get called? I've found an example on the

MSDN
>>> site, but it's all in C++ and seems designed around MFC.
>>>
>>> How can I hang on to the snazzy built-in formatting features of HTML,>>> but still have control over the printed output & pagination? Help!
>>>
>>> Thanks in advance,
>>> Alex Clark
>>>
>>>
>>>
>>>
>>
>>
>
>




Mar 16 '06 #8
Hi Terry,

A few problems with this:

1) I'm using .NET 2.0 and would very much prefer to use the managed
WebBrowser control. Not so hard, as presumably I just need to call ExecWB
of the late-bound ActiveXInstance property?

2) Testing this example with the ActiveX version of the web-browser (i.e.
not using the managed control from 2.0), it does absolutely nothing at all.
I'm on XP Pro SP2 with IE6 and all latest service packs.

3) Printing in itself wasn't the problem to start with - getting the
web-browser control to print with a Print-Template from within a VB.NET
application is the problem I'm facing.

Please see:
http://msdn.microsoft.com/library/de...intpreview.asp
....for an example of what I'm talking about.
Essentially I need a custom header, footer, and border around every HTML
page I'm printing from within my VB.NET WinForms application, running on
v2.0 of the framework.

IE Print Templates seem to be the only way to go on this. Can you give me
some example VB.NET (or C#) code that illustrates how to use print templates
with the managed web-browser control, if it's even possible?

Thanks,
Alex Clark



""TerryFei" " <v-******@online.m icrosoft.com> wrote in message
news:Pp******** ******@TK2MSFTN GXA03.phx.gbl.. .
Hi Alex,
After researching, we can use WebBrowser to print, just like the following
code:
m_axWebBrowser. ExecWB(SHDocVw. OLECMDID.OLECMD ID_PRINT,
SHDocVw.OLECMDE XECOPT.OLECMDEX ECOPT_DODEFAULT ,
ref o, ref o);

I also the following article will be helpful for you:
Title: Using the WebBrowser control in .NET
URL: http://www.codeproject.com/csharp/webbrowser.asp

Thanks for your understanding!

Best Regards,

Terry Fei[MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

--------------------
Reply-To: "Alex Clark" <ho*******@news groups.nospam>
From: "Alex Clark" <ho*******@news groups.nospam>
References: <#5************ **@tk2msftngp13 .phx.gbl>

<e6************ **@tk2msftngp13 .phx.gbl>
<#8************ **@TK2MSFTNGP11 .phx.gbl>
<Ok************ **@TK2MSFTNGP12 .phx.gbl>
<e7************ **@TK2MSFTNGP12 .phx.gbl>
<np************ **@TK2MSFTNGXA0 3.phx.gbl>
Subject: Re: WebBrowser Control Printing
Date: Wed, 15 Mar 2006 11:44:28 -0000
Lines: 207
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
X-RFC2646: Format=Flowed; Original
Message-ID: <uY************ **@TK2MSFTNGP11 .phx.gbl>
Newsgroups: microsoft.publi c.dotnet.langua ges.vb
NNTP-Posting-Host: host81-152-10-23.range81-152.btcentralpl us.com

81.152.10.23
Path: TK2MSFTNGXA03.p hx.gbl!TK2MSFTN GP08.phx.gbl!TK 2MSFTNGP11.phx. gbl
Xref: TK2MSFTNGXA03.p hx.gbl microsoft.publi c.dotnet.langua ges.vb:321889
X-Tomcat-NG: microsoft.publi c.dotnet.langua ges.vb

Hi Terry,

Any chance you could give me some example code in either C# or VB.NET for
using Print Templates with the WebBrowser control? I'm using .NET 2.0 and
my clients will have IE6 installed as a minimum. A simple example just to
get me started would be much appreciated.

Many thanks,
Alex
""TerryFei" " <v-******@online.m icrosoft.com> wrote in message
news:np****** ********@TK2MSF TNGXA03.phx.gbl ...
Hi Alex,
Thanks for your response!

>After further investigation on the web I'm still fairly convinced this is a
>C++ only option, due to the wrapping of COM Variant types - .NET
>interop
>will, apparently, not support this at all, unless something has changed
as
>.of 2.0.
WebBrowser control provide us IWebBrowser2 com-interface and we can use
this interface to control WebBrowser control's operation. IWebBrowser2
is
an IDispatch interface, in a word, this is a dual-interface, so we can use it in C++ and VB. If your environment is .Net, we could use it with
Interoperabilit y mechanism. I hope the following articles will be
helpful
for you:
Title: Using the WebBrowser control in .NET
URL: http://www.codeproject.com/csharp/webbrowser.asp

Title: Using MSHTML Advanced Hosting Interfaces
URL: http://www.codeproject.com/csharp/advhost.asp

Title: Microsoft Web Browser Automation using C#
URL: http://www.codeproject.com/csharp/mshtml_automation.asp

I hope the above information is helpful for you. If there is anything I
can do for you, please feel free to let me know. Thanks and have a nice
day!

Best Regards,

Terry Fei[MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

--------------------
Reply-To: "Alex Clark" <ho*******@news groups.nospam>
From: "Alex Clark" <ho*******@news groups.nospam>
Reference s: <#5************ **@tk2msftngp13 .phx.gbl>
<e6************ **@tk2msftngp13 .phx.gbl>
<#8************ **@TK2MSFTNGP11 .phx.gbl>
<Ok************ **@TK2MSFTNGP12 .phx.gbl>
Subject: Re: WebBrowser Control Printing
Date: Thu, 9 Mar 2006 16:22:23 -0000
Lines: 116
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
X-RFC2646: Format=Flowed; Response
Message-ID: <e7************ **@TK2MSFTNGP12 .phx.gbl>
Newsgroup s: microsoft.publi c.dotnet.langua ges.vb
NNTP-Posting-Host: host86-134-248-72.range86-134.btcentralpl us.com
86.134.248.72
Path: TK2MSFTNGXA03.p hx.gbl!TK2MSFTN GP08.phx.gbl!TK 2MSFTNGP12.phx. gbl
Xref: TK2MSFTNGXA03.p hx.gbl microsoft.publi c.dotnet.langua ges.vb:321151
X-Tomcat-NG: microsoft.publi c.dotnet.langua ges.vb

Hi Colin,

After further investigation on the web I'm still fairly convinced this
is
a
C++ only option, due to the wrapping of COM Variant types - .NET interop
will, apparently, not support this at all, unless something has changed asof 2.0.

I think you're right about the report-writing avenue however. It's a
shame,
as what I'm trying to do would be ideally suited to generating a quick
HTML
file and printing it, if only I could have slightly more control over
the
printed output :-(

Thanks for your help,
Alex Clark


"Colin Neller" <cn*****@gmail. com> wrote in message
news:Ok**** **********@TK2M SFTNGP12.phx.gb l...
> Alex,
>
> Print Templates are certainly non-trivial, but they do not require
> C++.
> The key line of code from the example I gave is:
>
> pCmdTarg->Exec(&CGID_MSH TML,
> IDM_PRINT,
> OLECMDEXECOPT_P ROMPTUSER,
> &vTemplatePa th,
> NULL);
>
> Basically, what you would do in .NET is cast your IWebBrowser2 object to> an IOleCommandTarg et and call the Exec method (as above) passing in
> the
> path to your print template (vTemplatePath in the above example.) The
> vast majority of the Print Template code will be written in
> JavaScript.
>
> Honestly, I think you would be better investing in a report writing tool> (e.g. ActiveReports) The path you are headed down with the WB is not an> easy one.
>
> --
> Colin Neller
> http://www.colinneller.com/blog
>
>
> "Alex Clark" <ho*******@news groups.nospam> wrote in message
> news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
>> Hi Colin,
>>
>> These look really useful but the article seems to imply that this is
only
>> possible when using C++. I know it was written a long time ago (before>> .NET) but it doesn't seem as though it could be very VB.NET friendly
>> :-(
>>
>> Thanks,
>> Alex
>>
>>
>>
>> "Colin Neller" <cn*****@gmail. com> wrote in message
>> news:e6******** ******@tk2msftn gp13.phx.gbl...
>>> Alex,
>>>
>>> I suggest you look into Print Templates:
>>>
>>>
http://msdn.microsoft.com/library/de...us/dnie55/html /beyondprintprev iew.asp
>>>
>>>
http://msdn.microsoft.com/library/de...us/dnie55/html /printtemplate2. asp?frame=true
>>>
>>> --
>>> Colin Neller
>>> http://www.colinneller.com/blog
>>>
>>>
>>> "Alex Clark" <ho*******@news groups.nospam> wrote in message
>>> news:%2******** ********@tk2msf tngp13.phx.gbl. ..
>>>> Greetings,
>>>>
>>>> (.NET 2.0, WinXP Pro/Server 2003, IE6 with latest service packs).
>>>>
>>>> I've decided to take advantage of the layout characteristics of
>>>> HTML
>>>> documents to simplify my printing tasks, but of course it's thrown up a
>>>> whole host of new issues...
>>>>
>>>> I'm generating a multi page printable document in HTML from my app,
and
>>>> displaying it in a WebBrowser control. I've looked into using some
CSS
>>>> commands to control pagination, but nothing seems to fit the bill
>>>> so
>>>> far.
>>>>
>>>> I need to include a custom header/footer (imported from another
>>>> HTML
>>>> file) on every page that's printed. I also need to draw a border
>>>> around each page. The closest I can get to the border is putting all>>>> my print-content inside an HTML table, which looks ugly because it
>>>> doesn't close off at the foot of each page - it only draws its
>>>> final
>>>> horizontal line at the very end of the document.
>>>>
>>>> I tried inheriting from WebBrowser and overriding the OnPrint
>>>> event,
>>>> but this never seems to get called? I've found an example on the
MSDN
>>>> site, but it's all in C++ and seems designed around MFC.
>>>>
>>>> How can I hang on to the snazzy built-in formatting features of HTML,>>>> but still have control over the printed output & pagination? Help!
>>>>
>>>> Thanks in advance,
>>>> Alex Clark
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>


Mar 16 '06 #9
Hi Terry,

After some tinkering I've managed to get it to work with a sample Print
Template! However, I am left with another problem.

If I call .ExecWB of the ActiveX control, it works no problem. However, I
have a requirement to use the managed .NET 2.0 WebBrowser control rather
than the COM control. This is easy enough, as all I then do is the
following:

WebBrowser1.Act iveXInstance.Ex ecWB(SHDocVw.OL ECMDID.OLECMDID _PRINTPREVIEW,
SHDocVw.OLECMDE XECOPT.OLECMDEX ECOPT_DODEFAULT , "c:\Template.ht m", Nothing)

(Note: Option Strict is OFF to permit late binding calls like this).

However, this returns an error message:

"Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED ))"

Why would this work fine using the COM version of the control, but fail when
trying it with the managed version? Any ideas?

Thanks,
Alex Clark

Mar 16 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
7544
by: Noozer | last post by:
I've got a WebBrowser control (AxBrowse - VCMAXB.DLL) and I'm having a few difficulties with it. Just looking for a few pointers, not whole solutions here. I've tried looking at the MSDN help files with little success. - When a new window is trying to pop up, how do I determine the target URL? How can I get the page to open in the current browser control? - When printing from the webbrowser control is there a way to ensure it prints...
5
7317
by: John Bowman | last post by:
Hi, I've been reading through the threads on using the WebBrowser control in C# app's and how to print it's contents. I've got that much working. However, the big problem is I can't figure out how to detect when the printing is finished. I've read the article "Printing with the Internet Explorer WebBrowser Control" and it mentions some sample code in pwaitvb. This example pretty much useless to me because VB hides the how to do it. I...
2
4769
by: Chris Bingham | last post by:
Hi everyone, Does anyone know how to fix the paper orientation depending on the paper size used when printing with the WebBrowser control please? What I've got is a HTML file, containing 1 big table of data, created by transforming an XML file using a XSLT file I created in InfoPath (didn't have time to learn XSLT!), the resulting HTML file is fine, except I had to fix the column sizes of the table in cm. Because of this, the table will...
1
2072
by: eskildb | last post by:
First, please be gently. I am fairly new to the programming world (1.5 years with some expermentation prior to). I have been working on a project that has to print HTML pages with graphics in a unattended automated fashion. I have a webbrowser that is created with code but not seen. I found the below code on the internet. It creates a webbrowser, and specifies the URL, which navigates the webbrowser to the page. When the document is...
1
2881
by: eskildb | last post by:
First, please be gently. I am fairly new to the programming world (1.5 years with some expermentation prior to). I have been working on a project that has to print HTML pages with graphics in a unattended automated fashion. I have a webbrowser that is created with code but not seen. I found the below code on the internet. It creates a webbrowser, and specifies the URL, which navigates the webbrowser to the page. When the document is...
2
2631
by: johnb41 | last post by:
I'm using .NET 2.0. My form is displaying the webbrowser control, which is displaying some HTML text. When printing with webbrowser.print(), my printout includes the header and footer. How can I remove the header and footer from the print out? Can this be done? If i can suppress the header and footer, i think this might be a really
11
8701
by: Webbert | last post by:
I am trying to display XML in a WebBrowser Control. I receive a data feed of XML and am trying to inject it into the control. I have not been successful in doing so. The only solution I have found is to write it to a temp file and then use the Navigate method to load it. As the control is capable of loading it from disk, I would like to find a way to skip the save/load and just inject. Thanks, Dave
1
1761
by: Meels Lilbok | last post by:
Hi Im usin a WebBrowser control on my C#/WinForm application. There are 2 options for user, 1) Print output to PDFPrinter or 2) Print output to default system printer. In code i change default printer and then call theWebBrowser.Print() method. All works fine but... browsercontrol "remebers" only first printer change.
1
12589
by: Tim Sprout | last post by:
I want to call Page Setup to set default printer and page size and orientation before batch printing pdf's silently from WebBrowser controls. I can print silently using DDE (the NDde library) or Adobe Interapplication Communication (IAC) DotNet API. There is no Adobe DDE command or IAC API for Page Setup. I don't see a print silent method for the WebBrowser control. I can get a Page Setup dialog to appear by using the code below, but the...
0
7865
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
8360
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
7990
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
6637
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
5731
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5399
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
1
2374
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1461
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
1198
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.