smileNewfreedom

블로그 이미지
freedom 모든 자유와 시간을 위해.....
by 다크포스
12-08 03:30
  • 680,220Total hit
  • 0Today hit
  • 4Yesterday hit

CALENDAR

«   2021/12   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

'C#'에 해당되는 글 2건

  1. 2010.03.03
    PrintDocument.Print 메서드 - 문서 인쇄
  2. 2007.08.20
    XmlDocument (DOM) 객체를 이용한 예제 (2)
예제 소스 ==>
using
System;
using System.IO;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;

public class PrintingExample
{
     private Font printFont;
     private StreamReader streamToPrint;
     static string filePath;


     public PrintingExample()
     {
         Printing();
     }

     // The PrintPage event is raised for each page to be printed.
     private void pd_PrintPage(object sender, PrintPageEventArgs ev)
     {
         float linesPerPage = 0;
         float yPos =  0;
         int count = 0;
         float leftMargin = ev.MarginBounds.Left;
         float topMargin = ev.MarginBounds.Top;
         String line=null;

         // Calculate the number of lines per page.
         linesPerPage = ev.MarginBounds.Height  /
            printFont.GetHeight(ev.Graphics) ;

         // Iterate over the file, printing each line.
         while (count < linesPerPage &&
            ((line=streamToPrint.ReadLine()) != null))
         {
            yPos = topMargin + (count * printFont.GetHeight(ev.Graphics));
            ev.Graphics.DrawString (line, printFont, Brushes.Black,
               leftMargin, yPos, new StringFormat());
            count++;
         }

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

     // Print the file.
     public void Printing()
     {
         try
         {
            streamToPrint = new StreamReader (filePath);
            try
            {
               printFont = new Font("Arial", 10);
               PrintDocument pd = new PrintDocument();
               pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
               // Print the document.
               pd.Print();
            }
            finally
            {
               streamToPrint.Close() ;
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
     }

     // This is the main entry point for the application.
     public static void Main(string[] args)
     {
        string sampleName = Environment.GetCommandLineArgs()[0];
        if(args.Length != 1)
        {
           Console.WriteLine("Usage: " + sampleName +" <file path>");
           return;
        }
        filePath = args[0];
        new PrintingExample();
     }
}

출처 : http://msdn.microsoft.com/ko-kr/library/system.drawing.printing.printdocument.print.aspx

'.NET' 카테고리의 다른 글

SQL 데이터 타입 크기 범위  (0) 2010.04.28
MySQL에서 지원하는 데이터 타입  (0) 2010.04.21
PrintDocument.Print 메서드 - 문서 인쇄  (0) 2010.03.03
마우스 우클릭 방지 풀어주는 프로그램  (0) 2009.03.27
Windows XP "VB6KO.dll"  (4) 2009.02.03
div 줄 바꿈  (2) 2009.01.30
TRACKBACK 0 AND COMMENT 0



class DomGeneration
{
        // 해당 객체 전역에 사용하기 위해
        XmlDocument doc;
        XmlElement  root;
        DomGeneration()
        {
              try
               {
                       // Dom 객체를 생성해서
                       doc = new XmlDocument();
                       // XML 파일을 로딩
                       doc.Load("book.xml");
                       // Root Element를 지정
                       root = doc.DocumentElement;
               }
               catch(Exception ex)
               {
                       Console.WriteLine(ex.Message);
               }
        }

        /// <summary>
        /// Root Element 명 출력
        /// </summary>

        public void GetRoot()
        {
               Console.WriteLine("루트 엘리먼트 : {0}", root.Name);
        }

        /// <summary>
        /// 입력, 수정, 삭제된 내용을 Xml파일로 저장
        /// </summary>

        public void Save()
        {
               XmlTextWriter writer = new XmlTextWriter("book.xml", Encoding.UTF8);
               //들여쓰기 지정
               writer.Formatting = Formatting.Indented;
               doc.WriteTo(writer);
               writer.Flush();
               Console.WriteLine("Xml 을 저장하셨습니다");
        }

        /// <summary>
        /// 3번째 도서명의 저자 출력
        /// </summary>
        public void GetChild()
        {
               string authorValue;
               // XPath 를 이용(혹, 없다면 예외처리해야 함)
//                     XmlNodeList writer = root.SelectNodes("//도서[3]/저자");
//                     authorValue = writer.Item(0).FirstChild.Value;

               XmlNodeList nodelist = root.ChildNodes;
               XmlNode book3 = nodelist.Item(2);
               XmlElement author = (XmlElement)book3.ChildNodes.Item(1);
               authorValue = author.FirstChild.Value;
               Console.WriteLine("세번째 : " + authorValue);
        }

        /// <summary>
        /// 1번째 도서의 ISBN Attribute를 출력
        /// </summary>
        public void GetAttribute()
        {
               XmlElement book = (XmlElement) root.FirstChild;
               string attr = book.GetAttribute("ISBN");
               Console.WriteLine("ISBN=" + attr);
               XmlAttribute isbn = (XmlAttribute)book.Attributes.GetNamedItem("ISBN");
               string isbnvalue = isbn.Value;
               Console.WriteLine("ISBN = " + isbnvalue);
        }

        /// <summary>
        /// book 노드의 자식 Element명과 Text 값 출력
        /// </summary>
        public void GetElements(XmlNode book)
        {
               XmlNodeList elements = book.ChildNodes;
               int elementcnt = elements.Count;
               // 아래 GetAttributes()처럼 foreach문 사용가능
               for(int i = 0;i < elementcnt;i++)
               {
                       XmlElement child= (XmlElement)elements.Item(i);
                       Console.WriteLine("\t{0}:{1}",child.Name, child.FirstChild.Value);
               }
        }

        /// <summary>
        /// book 노드의 자식 Attribute명과 값 출력
        /// </summary>
        public void GetAttributes(XmlNode book)
        {
               XmlNamedNodeMap attrs = book.Attributes;
//                     XmlAttributeCollection attrs = book.Attributes;
               foreach(XmlAttribute attr in attrs)
                       Console.WriteLine("\t{0}:{1}", attr.Name, attr.Value);
        }

        /// <summary>
        /// 도서 속성 값에 따라 도서 Element 삭제
        /// </summary>
        /// <param name="item_number">삭제할 Element의 번호속성 값</param>
        public void RemoveChild(int item_number)
        {
               try
               {
                       // 삭제할 Element를 구함
                       XmlNode node = root.SelectSingleNode("//도서[@번호='" + item_number + "']");
                       // Element삭제
                       root.RemoveChild(node);
                       // 문서저장하기 위해 메서드 호출
                       Save();
               }
               // 삭제할 노드가 존재하지 않을 경우 예외부분
               catch(NullReferenceException)
               {
                       Console.WriteLine("삭제할 놈이 없다.");
               }
               catch(Exception ex)
               {
                       Console.WriteLine(ex.Message);
               }
        }

        /// <summary>
        /// 도서 속성 값에 따라 도서 Element 삭제
        /// </summary>
        /// <param name="num">삭제할 Element의 번호속성 값</param>
        public void DeleteElem2(string num)
        {
               XmlNodeList booklist=root.ChildNodes;
               bool flag = true; // 삭제하고자 하는 속성 값 존재 여부
               for(int i=0 ; i<booklist.Count ; i++)
               {
                       //GetAttribute를 사용하기위한 형변환
                       string bunho=((XmlElement)booklist.Item(i)).GetAttribute("번호");
                       if(bunho==num)
                       {
                              root.RemoveChild(booklist.Item(i));
                              flag=false;
                              Save();
                              break;
                       }
               }
               if(flag)
                       Console.WriteLine("삭제할 도서가 없다");
        }

        public void CreateXml()
        {
               XmlDocument xmlDoc=new XmlDocument();
        }

        /// <summary>
        /// Element 추가
        /// </summary>
        public void AppendChildElem(string bookname,string author,string isbn)
        {
               if(root.HasChildNodes)
               {// root에 자식 Element가 존재한다면 마지막 자식 Element를 복사해서
                       // Element 값과 Attribute 값 변경
                       XmlNode copynode=root.LastChild.CloneNode(true);
                       copynode.FirstChild.FirstChild.Value=bookname;

                       copynode.ChildNodes.Item(1).FirstChild.Value=author;
                       string num =copynode.Attributes.GetNamedItem("번호").Value;
                       int bunho=int.Parse(num)+1;

                       ((XmlElement)copynode).SetAttribute("ISBN",isbn);
                       ((XmlElement)copynode).SetAttribute("번호",bunho.ToString());
                       root.AppendChild(copynode);
                       XmlSave();
               }
               else
               {// 존재하지 않는다면 Element과 Attribute를 생성
                       XmlElement newbook=doc.CreateElement("도서");
                       XmlElement newbookname=doc.CreateElement("도서명");
                       newbookname.Value=bookname;
                       XmlElement newauthor=doc.CreateElement("저자");
                       //XmlText booknametxt=doc.CreateTextNode(bookname);
                       XmlText authortxt=doc.CreateTextNode(author);
                       newbook.SetAttribute("ISBN",isbn);
 
                       //newbookname.AppendChild(booknametxt);
                       newauthor.AppendChild(authortxt);
                       newbook.AppendChild(newbookname);
                       newbook.AppendChild(newauthor);
                       root.AppendChild(newbook);
                       Save();
               }
        }
        static void Main(string[] args)
        {
               DomGeneration doc = new DomGeneration();
               doc.Insert();
//                     XmlNodeList booklist = doc.root.ChildNodes;
//                     int bookcnt = booklist.Count;
//                     for(int i=0; i<bookcnt; i++)
//                     {
//                            Console.WriteLine("{0}번째 도서 목록",i+1);
//                            XmlNode book = booklist.Item(i);
//                            doc.GetAttributes(book);
//                            doc.GetElements(book);
                       }
        }

}

}

TRACKBACK 0 AND COMMENT 2
  1. Favicon of http://hotgirlz-2008.com/sexy-french-maid-outfit BlogIcon sexy french maid outfit 2008.03.13 06:05 address edit/delete reply

    많은 감사 우수한 위치! 나는 너의 웹사이트를 사랑한다!

  2. Favicon of http://oceanpleasurepix.net/hot/karen-parsons-nude BlogIcon karen parsons nude 2008.05.23 04:17 address edit/delete reply

    걸출한 디자인! 좋은 디자인.





ARTICLE CATEGORY

분류 전체보기 (534)
멋진 사진들 (8)
배경화면들 (3)
.NET (112)
연애이슈 (65)
게임관련 (15)
경제 이슈 (60)
모델 (0)
사진(취미) (14)
노래 (8)
호주워킹홀리데이 (11)
Javascript (2)
Ajax (4)
스포츠 (74)
우주/과학/생활 (95)
Windows 2008 (19)
Silverlight (2)
여행 (6)
MS 자격증 (2)
해외이슈 (4)
IT정보 (16)
Server (5)
애니매이션 (9)