Drukowanie

Forum poświęcone językowi C#.

Moderator: xxSlayeRxx

Drukowanie

Sponsor

Sponsor
 

Drukowanie

Postprzez Tajfun » Wt cze 17, 2014 4:21 pm

Drukuję string, który algorytm mi odpowiednio ustawia. Wszystko jest ok ale podczas wydruku znaki specjalne takie jak "\t" lub "\x6" są pomijane i nic nie robią. Natomiast znak specjalny "\n" działa tak jak ma działać. Wydaje mi się że problem leży w tej linijce:
Kod: Zaznacz cały
myReader = new StringReader(strText)
Ale nie wiem jak to rozwiązać. Ogólnie wszytko się drukuje, nic nie ucina, tylko kolumny nie wychodzą idealnie proste. W kodzie który dałem niżej znaki /t są zastąpione przez spacje. Mógł by mi ktoś pomóc w tym? Z góry dziękuje

Kod: Zaznacz cały
protected void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs ev)
        {
            float linesPerPage = 0;
            float yPosition = 0;
            int count = 0;
            float leftMargin = ev.MarginBounds.Left;
            float topMargin = ev.MarginBounds.Top;
            string line = null;
            Font printFont = this.listBox1.Font;
            SolidBrush myBrush = new SolidBrush(Color.Black);

            // Work out the number of lines per page, using the MarginBounds.
            linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);

            // Iterate over the string using the StringReader, printing each line.
            while (count < linesPerPage && ((line = myReader.ReadLine()) != null))
            {
                // calculate the next line position based on
                // the height of the font according to the printing device
                yPosition = topMargin + (count * printFont.GetHeight(ev.Graphics));

                // draw the next line in the rich edit control

                ev.Graphics.DrawString(line, printFont,
                                myBrush, leftMargin,
                                yPosition, new StringFormat());
                count++;
            }

            // If there are more lines, print another page.
            if (line != null)
                ev.HasMorePages = true;
            else
                ev.HasMorePages = false;

            myBrush.Dispose();
        }

        private void drukujToolStripMenuItem_Click(object sender, EventArgs e)
        {
            printDialog1.Document = printDocument1;
            string strText = "";


           

            int ileKolumn = 6;
            int ileWierszy = 51 - 6;        // odejmuje linie które zabieram na dane które będą na każdej stronie;
            //int ileStron = (listBox1.Items.Count / (ileWierszy * ileKolumn)) + 1;
            int licznikStron = 0;

            List<string>[] lista = new List<string>[ileKolumn];

            bool powtarzaj = true;
            int licznikItemow = 0;
            string[] tekstDoDodania = new string[6];

            for (int i = 0; i < ileKolumn; i++)
            {
                lista[i] = new List<string>();
                //lista[i].Clear();
            }

            do
            {
                strText = strText + "Numer komisji:  " + tbx_komisja.Text + "                                                       " + "Profil:  " + tbx_profil.Text + "\n";   //1 strona stała
                strText = strText + "\n";   //2 strona stała
                strText = strText + "\n";   //3 strona stała
                for (int i = 0; i < ileKolumn; i++)
                {
                    //lista[i] = new List<string>();
                    lista[i].Clear();
                }

               
                int w = 0;

                for (int i = 0; i < ileKolumn; i++)
                {
                    w = 0;
                    while (w < ileWierszy)
                    {
                        try
                        {
                            lista[i].Add(listBox1.Items[licznikItemow++].ToString());
                        }
                        catch { powtarzaj = false; }
                        w++;
                    }
                }

                for (int i = 0; i < ileWierszy; i++)
                {
                    try
                    {
                        //strText = strText + lista[0][i].ToString() + "\t       ";
                        //tekstDoDodania[0] = lista[0][i].ToString();
                        tekstDoDodania[0] = sprawdzTekst(lista[0][i].ToString());
                    }
                    catch
                    {
                        powtarzaj = false;
                        tekstDoDodania[0] = "           ";
                    }

                    try
                    {
                        //strText = strText + lista[1][i].ToString() + "\t       ";
                        //tekstDoDodania[1] = lista[1][i].ToString();
                        tekstDoDodania[1] = sprawdzTekst(lista[1][i].ToString());
                    }
                    catch
                    {
                        powtarzaj = false;
                        tekstDoDodania[1] = "           ";
                    }

                    try
                    {
                        //strText = strText + lista[2][i].ToString() + "\t       ";
                        //tekstDoDodania[2] = lista[2][i].ToString();
                        tekstDoDodania[2] = sprawdzTekst(lista[2][i].ToString());
                    }
                    catch
                    {
                        powtarzaj = false;
                        tekstDoDodania[2] = "           ";
                    }

                    try
                    {
                        //strText = strText + lista[3][i].ToString() + "\t       ";
                        //tekstDoDodania[3] = lista[3][i].ToString();
                        tekstDoDodania[3] = sprawdzTekst(lista[3][i].ToString());
                    }
                    catch
                    {
                        powtarzaj = false;
                        tekstDoDodania[3] = "           ";
                    }

                    try
                    {
                        //strText = strText + lista[4][i].ToString() + "\t       ";
                        //tekstDoDodania[4] = lista[4][i].ToString();
                        tekstDoDodania[4] = sprawdzTekst(lista[4][i].ToString());
                    }
                    catch
                    {
                        powtarzaj = false;
                        tekstDoDodania[4] = "           ";
                    }

                    try
                    {
                        //strText = strText + lista[5][i].ToString() + "\t       ";// +"\n";
                        //tekstDoDodania[5] = lista[5][i].ToString();
                        tekstDoDodania[5] = sprawdzTekst(lista[5][i].ToString());
                    }
                    catch
                    {
                        powtarzaj = false;
                        tekstDoDodania[5] = "           ";
                    }
                   
                   

                    strText = strText + String.Format("{0}         {1}         {2}         {3}         {4}         {5}\n", tekstDoDodania[0], tekstDoDodania[1], tekstDoDodania[2], tekstDoDodania[3], tekstDoDodania[4], tekstDoDodania[5]);
                   
                }


               

               
                strText = strText + "\n";   //4 strona stała
                strText = strText + "\n";   //5 strona stała
                strText = strText + "                                                                                                                                        " + Convert.ToString(++licznikStron) + " str\n";       //6 strona stała

            }while(powtarzaj);


           



                myReader = new StringReader(strText);
            if (printDialog1.ShowDialog() == DialogResult.OK)
            {
                this.printDocument1.Print();
            }
           
        }


        public string sprawdzTekst(string txt)
        {
            if (txt.Length < 15)
            {
                int dl = 11 - txt.Length;
                for (int i = 0; i < dl; i++ )
                {
                    txt = txt + " ";
                }
                return txt;
            }
            else if (txt.Length > 15)
                return "error      ";

            return txt;
        }
Tajfun
New member
 
Posty: 1
Dołączył(a): Wt cze 17, 2014 3:55 pm

Re: Drukowanie

Postprzez Pletras » Pn paź 12, 2015 10:45 am

Słuchaj mi się wydaje właśnie że leży to po stronie /n tutaj widzę niedociągnięcie typu #n i pewnie dlatego te kolumny się rozjeżdżają na boki możliwe że tak to zrobisz bardziej stabilne to te twoje wartości typu /t i \x6 na pewno będą działać.
Hello!
Pletras
New member
 
Posty: 7
Dołączył(a): Pn wrz 07, 2015 9:39 am

Re: Drukowanie

Sponsors

Sponsor
 


Powrót do C#

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google Adsense [Bot] i 8 gości