Quote:
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
put a snippet of javascript in that calls the print method. I can't
if you'd like.
via some sort of automated process in landscape. With CSS 3 (IIRC)
as far as I know.
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.
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
can get from either FileInfo or the registry). This is hairy, and I
matter what.