473,320 Members | 1,857 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

Problem Printing objects from web page

I am pulling my hair out trying to print various objects from a .net
web page
My apologies for cross posting but I need an answer and my previous
post has attracted no interest.

ASP.Net 2.0 using C#

This is a simple web page on our intranet (written as a test) and all
I am trying to do is print a document to a named printer.
If I use a StreamReader then I get an output to the printer. This
prints all the lines in the text file to the printer. However, this
only works for basic text files. I cannot achieve an output for an
Excel spreadsheet, a MS Word document or a pdf document.

If I choose not to use a StreamReader then all I get is a blank sheet
of paper no matter what type of file I try to print.

Can anyone please help as I am getting desperate as I need to create a
complex web based printing application very soon.
// A Simple HTML Page For A test web based application
<body>
<form runat="server">
<p>
<ASP:DropDownList id="ddlDebug"
runat="server"
AppendDataBoundItems="True"
AutoPostBack="True">
<ASP:ListItem value="Debug">Stream
</ASP:ListItem>
<ASP:ListItem value="NoDebug">No Stream
</ASP:ListItem>
</ASP:DropDownList>
</p>
<p>
<ASP:Button id="button2" runat="server" text="Button">
</ASP:Button>
</p>
<p>
<ASP:ListBox id="listBox1" runat="server" width="1156px"
height="442px">
</ASP:ListBox>
</p></font>
</form>
</body>
</html>

// Some of the code behind

if (! IsPostBack)
{
if(impersonateValidUser("Administrator", "domain",
"password"))
{
//Insert your code that runs under the security context of a
specific user here.

}
else
{
//Your impersonation failed. Therefore, include a fail-safe
mechanism here.
}
}
else
{
}
}
void myDoc_PrintPage(object sender, PrintPageEventArgs e)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = e.MarginBounds.Left;
float topMargin = e.MarginBounds.Top;
topMargin = topMargin + 50;

// When I try a direct print without Streaming I remove this
block of code
using (StreamReader streamToPrint = new
StreamReader(myDoc.DocumentName))
{
string Lline;
// Read and display lines from the file until the end of the
file is reached.
while ((Lline = streamToPrint.ReadLine()) != null)
{
listBox1.Items.Add(Lline); // For debug purposes - DIsplay
to browser listbox - Remove Later
topMargin = topMargin + 20;
yPos = topMargin + (count *
printFont.GetHeight(e.Graphics));
e.Graphics.DrawString(Lline, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
}
}

// e.HasMorePages = true;
}

private void button2_Click(object sender, System.EventArgs e)
{

listBox1.Items.Clear();
// Try and print the document
myDoc.DocumentName = @"\\MyPc\Temp\MyTestDoc.txt";

listBox1.Items.Add("Document Name - " + myDoc.DocumentName);

myDoc.PrinterSettings.PrinterName = LPrinterName;
listBox1.Items.Add("Printer Name - " +
myDoc.PrinterSettings.PrinterName);

foreach (System.Drawing.Printing.PaperSize paperSize in
myDoc.PrinterSettings.PaperSizes)
{
if (paperSize.PaperName == "A3")
{

myDoc.DefaultPageSettings.PaperSize
= paperSize;

myDoc.DefaultPageSettings.PrinterSettings.DefaultP ageSettings.Landscape
= true;
}
}

myDoc.PrinterSettings.FromPage = 1;
myDoc.PrinterSettings.MinimumPage = 1;
myDoc.PrintPage += new PrintPageEventHandler(myDoc_PrintPage);
myDoc.Print();
}
Jun 27 '08 #1
7 2531
Iain Wilson expressed precisely :
I am pulling my hair out trying to print various objects from a .net
web page
My apologies for cross posting but I need an answer and my previous
post has attracted no interest.

ASP.Net 2.0 using C#

This is a simple web page on our intranet (written as a test) and all
I am trying to do is print a document to a named printer.
If I use a StreamReader then I get an output to the printer. This
prints all the lines in the text file to the printer. However, this
only works for basic text files. I cannot achieve an output for an
Excel spreadsheet, a MS Word document or a pdf document.
You can't just throw "some" file at the printer and expect that the
printer will make a nice printout.
For an Excel spreadsheet you need some program (Excel probably, but
OperOffice.org would also work) that knows that filetype and can
generate the correct print commands. And so on for other filetypes.
So at least you needs those programs installed on the server, find the
correct one to use and have that print your file.

A guess: Explorer sometimes has a "print" option in the context menu
that does this. Maybe you can make use of that?

Hans Kesting
Jun 27 '08 #2
On Jun 13, 8:10*am, Iain Wilson <Email.IainWil...@gmail.comwrote:
I am pulling my hair out trying to print various objects from a .net
web page
My apologies for cross posting but I need an answer and my previous
post has attracted no interest.

ASP.Net 2.0 using C#

This is a simple web page on our intranet (written as a test) and all
I am trying to do is print a document to a named printer.
If I use a StreamReader then I get an output to the printer. This
prints all the lines in the text file to the printer. However, this
only works for basic text files. I cannot achieve an output for an
Excel spreadsheet, a MS Word document or a pdf document.

If I choose not to use a StreamReader then all I get is a blank sheet
of paper no matter what type of file I try to print.

Can anyone please help as I am getting desperate as I need to create a
complex web based printing application very soon.

* // A Simple HTML Page For A test web based application
* <body>
* * * * *<form runat="server">
* * * * * *<p>
* * * * * * * * *<ASP:DropDownList id="ddlDebug"
* * * * * * * * * * * * * * * * * * * * * * * * * *runat="server"
* * * * * * * * * * * * * * * * * * * * * * * * * *AppendDataBoundItems="True"
* * * * * * * * * * * * * * * * * * * * * * * * * *AutoPostBack="True">
* * * * * * * * * *<ASP:ListItem value="Debug">Stream
* * * * * * * * * *</ASP:ListItem>
* * * * * * * * * *<ASP:ListItem value="NoDebug">No Stream
* * * * * * * * * *</ASP:ListItem>
* * * * * * * * *</ASP:DropDownList>
* * * * * *</p>
* * * * * *<p>
* * * * * * * * *<ASP:Button id="button2" runat="server" text="Button">
* * * * * * * * *</ASP:Button>
* * * * * *</p>
* * * * * *<p>
* * * * * * * * *<ASP:ListBox id="listBox1" runat="server" width="1156px"
height="442px">
* * * * * * * * *</ASP:ListBox>
* * * * * *</p></font>
* * * * *</form>
* </body>
</html>

* // Some of the code behind

* * * if (! IsPostBack)
* * * * {
* * * * if(impersonateValidUser("Administrator", "domain",
"password"))
* * * * * {
* * * * * //Insert your code that runs under the security context of a
specific user here.

* * * * * }
* * * * else
* * * * * {
* * * * * //Your impersonation failed. Therefore, include a fail-safe
mechanism here.
* * * * * }
* * * * }
* * * else
* * * * {
* * * * }
* * * }

* * void myDoc_PrintPage(object sender, PrintPageEventArgs e)
* * * {
* * * float linesPerPage = 0;
* * * float yPos = 0;
* * * int count = 0;
* * * float leftMargin = e.MarginBounds.Left;
* * * float topMargin = e.MarginBounds.Top;
* * * topMargin = topMargin + 50;

* * * // When I try a direct print without Streaming I remove this
block of code
* * * using (StreamReader streamToPrint = new
StreamReader(myDoc.DocumentName))
* * * * {
* * * * string Lline;
* * * * // Read and display lines from the file until the end of the
file is reached.
* * * * while ((Lline = streamToPrint.ReadLine()) != null)
* * * * * {
* * * * * listBox1.Items.Add(Lline); // For debug purposes - DIsplay
to browser listbox - Remove Later
* * * * * topMargin = topMargin + 20;
* * * * * yPos = topMargin + (count *
printFont.GetHeight(e.Graphics));
* * * * * e.Graphics.DrawString(Lline, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
* * * * * }
* * * * }

// * * *e.HasMorePages = true;
* * * }

* * private void button2_Click(object sender, System.EventArgs e)
* * * {

* * * listBox1.Items.Clear();
* * * // Try and print the document
* * * myDoc.DocumentName = @"\\MyPc\Temp\MyTestDoc.txt";

* * * listBox1.Items.Add("Document Name - " + myDoc.DocumentName);

* * * myDoc.PrinterSettings.PrinterName *= LPrinterName;
* * * listBox1.Items.Add("Printer Name - " +
myDoc.PrinterSettings.PrinterName);

* * * foreach (System.Drawing.Printing.PaperSize paperSize in
myDoc.PrinterSettings.PaperSizes)
* * * * {
* * * * if (paperSize.PaperName == "A3")
* * * * * {

myDoc.DefaultPageSettings.PaperSize
= paperSize;

myDoc.DefaultPageSettings.PrinterSettings.DefaultP ageSettings.Landscape
= true;
* * * * * }
* * * * }

* * * myDoc.PrinterSettings.FromPage = 1;
* * * myDoc.PrinterSettings.MinimumPage = 1;
* * * myDoc.PrintPage += new PrintPageEventHandler(myDoc_PrintPage);
* * * myDoc.Print();
* * * }
Honestly, it depends on what you're attempting to accomplish. If a
modal print screen does not affect your workflow, then I would move to
put a snippet of javascript in that calls the print method. I can't
remember how to do it off the top of my head, but I could look it up
if you'd like.

I spent a _LOT_ of time trying to get IE (or any web browser) to print
via some sort of automated process in landscape. With CSS 3 (IIRC)
you can specify orientation as a style tag, but it's not implemented
as far as I know.

The easiest way I found was to spool the page to PDF and printing that
using abcPDF. Again, I can't remember how to do it off the top of the
ol' noggin, but if you're interested, I'll dig up an example.

You could also try to use Windows handles to IE if you're uneasy about
the PDF route. But I will warn you: code you write for IE6 will not
work for IE7 and vice versa. You'll have to do some sort of logic to
decide which set of handles to use based on the IE version (which you
can get from either FileInfo or the registry). This is hairy, and I
decided after thinking about it that the PDF route would work no
matter what.

Hope this helps,
Ross
Jun 27 '08 #3
Did you try the previous response I gave regarding System.Diagnostic.Process
using the file and having StartInfo.Verb="Print"?

"Iain Wilson" wrote:
I am pulling my hair out trying to print various objects from a .net
web page
My apologies for cross posting but I need an answer and my previous
post has attracted no interest.

ASP.Net 2.0 using C#

This is a simple web page on our intranet (written as a test) and all
I am trying to do is print a document to a named printer.
If I use a StreamReader then I get an output to the printer. This
prints all the lines in the text file to the printer. However, this
only works for basic text files. I cannot achieve an output for an
Excel spreadsheet, a MS Word document or a pdf document.

If I choose not to use a StreamReader then all I get is a blank sheet
of paper no matter what type of file I try to print.

Can anyone please help as I am getting desperate as I need to create a
complex web based printing application very soon.
// A Simple HTML Page For A test web based application
<body>
<form runat="server">
<p>
<ASP:DropDownList id="ddlDebug"
runat="server"
AppendDataBoundItems="True"
AutoPostBack="True">
<ASP:ListItem value="Debug">Stream
</ASP:ListItem>
<ASP:ListItem value="NoDebug">No Stream
</ASP:ListItem>
</ASP:DropDownList>
</p>
<p>
<ASP:Button id="button2" runat="server" text="Button">
</ASP:Button>
</p>
<p>
<ASP:ListBox id="listBox1" runat="server" width="1156px"
height="442px">
</ASP:ListBox>
</p></font>
</form>
</body>
</html>

// Some of the code behind

if (! IsPostBack)
{
if(impersonateValidUser("Administrator", "domain",
"password"))
{
//Insert your code that runs under the security context of a
specific user here.

}
else
{
//Your impersonation failed. Therefore, include a fail-safe
mechanism here.
}
}
else
{
}
}
void myDoc_PrintPage(object sender, PrintPageEventArgs e)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = e.MarginBounds.Left;
float topMargin = e.MarginBounds.Top;
topMargin = topMargin + 50;

// When I try a direct print without Streaming I remove this
block of code
using (StreamReader streamToPrint = new
StreamReader(myDoc.DocumentName))
{
string Lline;
// Read and display lines from the file until the end of the
file is reached.
while ((Lline = streamToPrint.ReadLine()) != null)
{
listBox1.Items.Add(Lline); // For debug purposes - DIsplay
to browser listbox - Remove Later
topMargin = topMargin + 20;
yPos = topMargin + (count *
printFont.GetHeight(e.Graphics));
e.Graphics.DrawString(Lline, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
}
}

// e.HasMorePages = true;
}

private void button2_Click(object sender, System.EventArgs e)
{

listBox1.Items.Clear();
// Try and print the document
myDoc.DocumentName = @"\\MyPc\Temp\MyTestDoc.txt";

listBox1.Items.Add("Document Name - " + myDoc.DocumentName);

myDoc.PrinterSettings.PrinterName = LPrinterName;
listBox1.Items.Add("Printer Name - " +
myDoc.PrinterSettings.PrinterName);

foreach (System.Drawing.Printing.PaperSize paperSize in
myDoc.PrinterSettings.PaperSizes)
{
if (paperSize.PaperName == "A3")
{

myDoc.DefaultPageSettings.PaperSize
= paperSize;

myDoc.DefaultPageSettings.PrinterSettings.DefaultP ageSettings.Landscape
= true;
}
}

myDoc.PrinterSettings.FromPage = 1;
myDoc.PrinterSettings.MinimumPage = 1;
myDoc.PrintPage += new PrintPageEventHandler(myDoc_PrintPage);
myDoc.Print();
}
Jun 27 '08 #4
Hi Mike

No I have not. I lost track of where I had posted the question and
only discovered your answer this afternoon after I had left the
office. I will try it on Monday. Thanks for the advice.

Iain
Jun 27 '08 #5
Hi Mike

I was looking at the online documentation/examples. See the link

http://msdn.microsoft.com/en-us/libr...startinfo.aspx

Is this not for win32 applications ? I do not see any mention of web
based compatability.

What I am looking for is to print from a web based application.

Am I mis-understanding something here ?

Many thanks for your reply and assistance

Best regards

Iain
Jun 27 '08 #6
Iain Wilson wrote on 16-6-2008 :
Hi Mike

I was looking at the online documentation/examples. See the link

http://msdn.microsoft.com/en-us/libr...startinfo.aspx

Is this not for win32 applications ? I do not see any mention of web
based compatability.

What I am looking for is to print from a web based application.

Am I mis-understanding something here ?

Many thanks for your reply and assistance

Best regards

Iain
Where are you trying to print?
On the server - you can use the same code as for a "winform"
application, just no dialog boxes and similar UI-specific things.
On the client (browser) - you can't do much and you need at least a
viewer-application for the types of documents you want to print.

Hans Kesting
Jun 27 '08 #7
Hello Hans

Thanks for that.

It clears up a bit of confusion for me.

I will print from the server.

I will play around with a few examples and see how I get on

Thanks to all who have contributed.
I will post back here when I work out the solution

Best regards

Iain
Jun 27 '08 #8

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

Similar topics

5
by: Patrick De Ridder | last post by:
How can I turn what I want to print 90 degrees using the logic below? Please tell me the code with which to make the modification. Many thanks, Patrick. using System.ComponentModel; using...
3
by: Chrisitiaan | last post by:
Hi, I want to develop a 'truly' object oriented application, that is, my business logic objects handle the business logic (of course) and the persistence to a MS SQL server database. The user...
4
by: zz | last post by:
Sorry for posting this here but unfortunatly I couldn't find any appropriate newsgroup for this and since I've been active here with .net question I figured you guys might be able to help. ...
7
by: Jon B | last post by:
Hi There! I'm trying to print ASP.NET pages to the printer. I know I can grab the output contents of the ASP.NET page by using HttpWebRequest and HttpWebResponse objects. However, once I got the...
2
by: Sukh | last post by:
Hi I am stuck with a problem Can anyone help me out from this... I am printing a report on pre-printed continue paper using dot-matrix printer using vb.net. Data is printing on all the...
6
by: Chris Dunaway | last post by:
The method for printing documents in .Net can be confusing, especially for newer users. I would like to create a way to simplify this process. My idea would be implemented using a PrintDocument...
0
by: Iain Wilson | last post by:
I am pulling my hair out trying to print various objects from a .net web page My apologies for cross posting but I need an answer and my previous post has attracted no interest. ASP.Net 2.0...
0
by: Iain Wilson | last post by:
I am pulling my hair out trying to print various objects from a .net web page My apologies for cross posting but I need an answer and my previous post has attracted no interest. ASP.Net 2.0...
43
by: John | last post by:
Hi This .net is driving me crazy!! In VB6 I had a type which contained a couple of multi-dimentional arrays which i used to create and read records: Type AAA : Array1(10,10,2) as Integer
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
0
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you

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.