By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,561 Members | 3,265 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,561 IT Pros & Developers. It's quick & easy.

WebBrowser Control Printing

P: n/a
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
Share this Question
Share on Google+
12 Replies


P: n/a
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*******@newsgroups.nospam> wrote in message
news:%2****************@tk2msftngp13.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

P: n/a
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**************@tk2msftngp13.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*******@newsgroups.nospam> wrote in message
news:%2****************@tk2msftngp13.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

P: n/a
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_MSHTML,
IDM_PRINT,
OLECMDEXECOPT_PROMPTUSER,
&vTemplatePath,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to an
IOleCommandTarget 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*******@newsgroups.nospam> wrote in message
news:%2****************@TK2MSFTNGP11.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**************@tk2msftngp13.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*******@newsgroups.nospam> wrote in message
news:%2****************@tk2msftngp13.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

P: n/a
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**************@TK2MSFTNGP12.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_MSHTML,
IDM_PRINT,
OLECMDEXECOPT_PROMPTUSER,
&vTemplatePath,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to
an IOleCommandTarget 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*******@newsgroups.nospam> wrote in message
news:%2****************@TK2MSFTNGP11.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**************@tk2msftngp13.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*******@newsgroups.nospam> wrote in message
news:%2****************@tk2msftngp13.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

P: n/a
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
Interoperability 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*******@newsgroups.nospam>
From: "Alex Clark" <ho*******@newsgroups.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.public.dotnet.languages.vb
NNTP-Posting-Host: host86-134-248-72.range86-134.btcentralplus.com 86.134.248.72Path: TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP12.phx.gbl
Xref: TK2MSFTNGXA03.phx.gbl microsoft.public.dotnet.languages.vb:321151
X-Tomcat-NG: microsoft.public.dotnet.languages.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**************@TK2MSFTNGP12.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_MSHTML,
IDM_PRINT,
OLECMDEXECOPT_PROMPTUSER,
&vTemplatePath,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to
an IOleCommandTarget 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*******@newsgroups.nospam> wrote in message
news:%2****************@TK2MSFTNGP11.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**************@tk2msftngp13.phx.gbl...
Alex,

I suggest you look into Print Templates:

http://msdn.microsoft.com/library/de...us/dnie55/html
/beyondprintpreview.asp
http://msdn.microsoft.com/library/de...us/dnie55/html
/printtemplate2.asp?frame=true
--
Colin Neller
http://www.colinneller.com/blog
"Alex Clark" <ho*******@newsgroups.nospam> wrote in message
news:%2****************@tk2msftngp13.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

P: n/a
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.microsoft.com> wrote in message
news:np**************@TK2MSFTNGXA03.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
Interoperability 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*******@newsgroups.nospam>
From: "Alex Clark" <ho*******@newsgroups.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.public.dotnet.languages.vb
NNTP-Posting-Host: host86-134-248-72.range86-134.btcentralplus.com

86.134.248.72
Path: TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP12.phx.gbl
Xref: TK2MSFTNGXA03.phx.gbl microsoft.public.dotnet.languages.vb:321151
X-Tomcat-NG: microsoft.public.dotnet.languages.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**************@TK2MSFTNGP12.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_MSHTML,
IDM_PRINT,
OLECMDEXECOPT_PROMPTUSER,
&vTemplatePath,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to
an IOleCommandTarget 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*******@newsgroups.nospam> wrote in message
news:%2****************@TK2MSFTNGP11.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**************@tk2msftngp13.phx.gbl...
> Alex,
>
> I suggest you look into Print Templates:
>
> http://msdn.microsoft.com/library/de...us/dnie55/html
/beyondprintpreview.asp>
> http://msdn.microsoft.com/library/de...us/dnie55/html
/printtemplate2.asp?frame=true>
> --
> Colin Neller
> http://www.colinneller.com/blog
>
>
> "Alex Clark" <ho*******@newsgroups.nospam> wrote in message
> news:%2****************@tk2msftngp13.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

P: n/a
Hi Alex,
After researching, we can use WebBrowser to print, just like the following
code:
m_axWebBrowser.ExecWB(SHDocVw.OLECMDID.OLECMDID_PR INT,
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_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*******@newsgroups.nospam>
From: "Alex Clark" <ho*******@newsgroups.nospam>
References: <#5**************@tk2msftngp13.phx.gbl> <e6**************@tk2msftngp13.phx.gbl>
<#8**************@TK2MSFTNGP11.phx.gbl>
<Ok**************@TK2MSFTNGP12.phx.gbl>
<e7**************@TK2MSFTNGP12.phx.gbl>
<np**************@TK2MSFTNGXA03.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.public.dotnet.languages.vb
NNTP-Posting-Host: host81-152-10-23.range81-152.btcentralplus.com 81.152.10.23Path: TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP11.phx.gbl
Xref: TK2MSFTNGXA03.phx.gbl microsoft.public.dotnet.languages.vb:321889
X-Tomcat-NG: microsoft.public.dotnet.languages.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.microsoft.com> wrote in message
news:np**************@TK2MSFTNGXA03.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
Interoperability 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*******@newsgroups.nospam>
From: "Alex Clark" <ho*******@newsgroups.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.public.dotnet.languages.vb
NNTP-Posting-Host: host86-134-248-72.range86-134.btcentralplus.com

86.134.248.72
Path: TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP12.phx.gbl
Xref: TK2MSFTNGXA03.phx.gbl microsoft.public.dotnet.languages.vb:321151
X-Tomcat-NG: microsoft.public.dotnet.languages.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**************@TK2MSFTNGP12.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_MSHTML,
IDM_PRINT,
OLECMDEXECOPT_PROMPTUSER,
&vTemplatePath,
NULL);

Basically, what you would do in .NET is cast your IWebBrowser2 object to an IOleCommandTarget 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*******@newsgroups.nospam> wrote in message
news:%2****************@TK2MSFTNGP11.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**************@tk2msftngp13.phx.gbl...
>> Alex,
>>
>> I suggest you look into Print Templates:
>>
>>

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

http://msdn.microsoft.com/library/de...us/dnie55/html /printtemplate2.asp?frame=true
>>
>> --
>> Colin Neller
>> http://www.colinneller.com/blog
>>
>>
>> "Alex Clark" <ho*******@newsgroups.nospam> wrote in message
>> news:%2****************@tk2msftngp13.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

P: n/a
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.microsoft.com> wrote in message
news:Pp**************@TK2MSFTNGXA03.phx.gbl...
Hi Alex,
After researching, we can use WebBrowser to print, just like the following
code:
m_axWebBrowser.ExecWB(SHDocVw.OLECMDID.OLECMDID_PR INT,
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_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*******@newsgroups.nospam>
From: "Alex Clark" <ho*******@newsgroups.nospam>
References: <#5**************@tk2msftngp13.phx.gbl>

<e6**************@tk2msftngp13.phx.gbl>
<#8**************@TK2MSFTNGP11.phx.gbl>
<Ok**************@TK2MSFTNGP12.phx.gbl>
<e7**************@TK2MSFTNGP12.phx.gbl>
<np**************@TK2MSFTNGXA03.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.public.dotnet.languages.vb
NNTP-Posting-Host: host81-152-10-23.range81-152.btcentralplus.com

81.152.10.23
Path: TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP11.phx.gbl
Xref: TK2MSFTNGXA03.phx.gbl microsoft.public.dotnet.languages.vb:321889
X-Tomcat-NG: microsoft.public.dotnet.languages.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.microsoft.com> wrote in message
news:np**************@TK2MSFTNGXA03.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
Interoperability 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*******@newsgroups.nospam>
From: "Alex Clark" <ho*******@newsgroups.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.public.dotnet.languages.vb
NNTP-Posting-Host: host86-134-248-72.range86-134.btcentralplus.com
86.134.248.72
Path: TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP12.phx.gbl
Xref: TK2MSFTNGXA03.phx.gbl microsoft.public.dotnet.languages.vb:321151
X-Tomcat-NG: microsoft.public.dotnet.languages.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**************@TK2MSFTNGP12.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_MSHTML,
> IDM_PRINT,
> OLECMDEXECOPT_PROMPTUSER,
> &vTemplatePath,
> NULL);
>
> Basically, what you would do in .NET is cast your IWebBrowser2 object to> an IOleCommandTarget 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*******@newsgroups.nospam> wrote in message
> news:%2****************@TK2MSFTNGP11.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**************@tk2msftngp13.phx.gbl...
>>> Alex,
>>>
>>> I suggest you look into Print Templates:
>>>
>>>
http://msdn.microsoft.com/library/de...us/dnie55/html /beyondprintpreview.asp
>>>
>>>
http://msdn.microsoft.com/library/de...us/dnie55/html /printtemplate2.asp?frame=true
>>>
>>> --
>>> Colin Neller
>>> http://www.colinneller.com/blog
>>>
>>>
>>> "Alex Clark" <ho*******@newsgroups.nospam> wrote in message
>>> news:%2****************@tk2msftngp13.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

P: n/a
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.ActiveXInstance.ExecWB(SHDocVw.OLECMDI D.OLECMDID_PRINTPREVIEW,
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, "c:\Template.htm", 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

P: n/a
Hi Alex,
Thanks for your feedback! :)
After some tinkering I've managed to get it to work with a sample Print
Template! However, I am left with another problem. We are glad our information is helpful for you.
Why would this work fine using the COM version of the control, but fail whentrying it with the managed version?
After researching, this issue needs trace code further in dinput.dll and
debug internal to find what happens at all. This is beyond Newsgroup
support. So in this scenario, we suggest you contact with our CSS (Customer
Support Service) support team to get more information and support. This may
need you submit a support incident in Microsoft CSS. As a MSDN subscriber,
you have two free support incidents.

By the way, if the problem is confirmed by Microsoft CSS as a product
issue, CSS won't charge money. Every MSDN subscriber has two free support
incidents. You could use one of them to contact Microsoft CSS. So you don't
need to pay money yet. Surely if the issue is a product issue, you still
have two free support incidents.

For your reference, I attached steps to contact Microsoft CSS here: You can
contact Microsoft Customer Support directly to discuss additional support
options you may have available, by contacting us at 1-(800)936-5800 or by
choosing one of the options listed at:
http://support.microsoft.com/d-efaul...Offe-rProPhone

If you have any questions or concerns, please let me know. I am standing by
to help you. Thanks for your understanding!

Best Regards,

Terry Fei [MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security

--------------------Reply-To: "Alex Clark" <ho*******@newsgroups.nospam>
From: "Alex Clark" <ho*******@newsgroups.nospam>
References: <#5**************@tk2msftngp13.phx.gbl> <e6**************@tk2msftngp13.phx.gbl>
<#8**************@TK2MSFTNGP11.phx.gbl>
<Ok**************@TK2MSFTNGP12.phx.gbl>
<e7**************@TK2MSFTNGP12.phx.gbl>
<np**************@TK2MSFTNGXA03.phx.gbl>
<uY**************@TK2MSFTNGP11.phx.gbl>
<Pp**************@TK2MSFTNGXA03.phx.gbl>Subject: Re: WebBrowser Control Printing
Date: Thu, 16 Mar 2006 15:21:36 -0000
Lines: 27
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-RFC2646: Format=Flowed; Original
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
Message-ID: <ue**************@TK2MSFTNGP09.phx.gbl>
Newsgroups: microsoft.public.dotnet.languages.vb
NNTP-Posting-Host: host81-152-10-23.range81-152.btcentralplus.com 81.152.10.23Path: TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP09.phx.gbl
Xref: TK2MSFTNGXA03.phx.gbl microsoft.public.dotnet.languages.vb:322116
X-Tomcat-NG: microsoft.public.dotnet.languages.vb

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.ActiveXInstance.ExecWB(SHDocVw.OLECMD ID.OLECMDID_PRINTPREVIEW,
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, "c:\Template.htm", 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 whentrying it with the managed version? Any ideas?

Thanks,
Alex Clark


Mar 20 '06 #11

P: n/a
Hi Terry,
http://support.microsoft.com/d-efaul...Offe-rProPhone


This link seems to be broken? :-(

-Alex
Mar 22 '06 #12

P: n/a
Hi Alex,
Please use the following link:
http://support.microsoft.com/

Thanks for your understanding!

Best Regards,

Terry Fei [MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security

--------------------
Reply-To: "Alex Clark" <ho*******@newsgroups.nospam>
From: "Alex Clark" <ho*******@newsgroups.nospam>
References: <#5**************@tk2msftngp13.phx.gbl> <e6**************@tk2msftngp13.phx.gbl>
<#8**************@TK2MSFTNGP11.phx.gbl>
<Ok**************@TK2MSFTNGP12.phx.gbl>
<e7**************@TK2MSFTNGP12.phx.gbl>
<np**************@TK2MSFTNGXA03.phx.gbl>
<uY**************@TK2MSFTNGP11.phx.gbl>
<Pp**************@TK2MSFTNGXA03.phx.gbl>
<ue**************@TK2MSFTNGP09.phx.gbl>
<6Q**************@TK2MSFTNGXA03.phx.gbl>Subject: Re: WebBrowser Control Printing
Date: Wed, 22 Mar 2006 12:44:15 -0000
Lines: 9
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-RFC2646: Format=Flowed; Original
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
Message-ID: <#B**************@TK2MSFTNGP12.phx.gbl>
Newsgroups: microsoft.public.dotnet.languages.vb
NNTP-Posting-Host: host86-134-249-208.range86-134.btcentralplus.com 86.134.249.208Path: TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP12.phx.gbl
Xref: TK2MSFTNGXA03.phx.gbl microsoft.public.dotnet.languages.vb:322967
X-Tomcat-NG: microsoft.public.dotnet.languages.vb

Hi Terry,
http://support.microsoft.com/d-efaul...Offe-rProPhone


This link seems to be broken? :-(

-Alex


Mar 23 '06 #13

This discussion thread is closed

Replies have been disabled for this discussion.