티스토리 뷰

======================================================

안녕하세요 Doridori 입니다.

1월부터 프로젝트를 진행 하다가 이번에 마무리를 하게 되었는데 항상 느끼는 부분이지만 마무리가 쉽지 않네요.

나이가 들어서 그런지 쉬지않고 일을 해서 그런지 몸이 조금 안좋아 진 듯해서 4월달은 휴식을 조금 취하려고 했는데, 

4월 달에도 일하게 생겼습니다. =0=a

건강검진도 받고 연차도 사용하려고 다음 프로젝트도 조금 미뤄놓은 상태인데 일하다 다음 프로젝트로 바로 넘어갈듯 합니다. 

우울한 와중에도 이번 강의 만들어 놓은것이 있다 보니 손가락은 또 움직이고 있습니다. ㅋㅋ 

회사는 회사고 강의는 강의이니 몇분 안되지만 기다리시는 분들을 생각해서라도 힘내 보도록 하겠습니다.

모두 화이팅 하십시오!!

======================================================

 

67. 인쇄 (PrintDocument)

Source UI)

67. 인쇄 (PrintDocument)(UI).zip
0.21MB

 

Soruce 전체)

67. 인쇄 (PrintDocument).zip
0.03MB

 

교재)

67. 인쇄 (PrintDocument).pdf
0.25MB

 

 

 원래는 "도리도리 하고 싶은거 다해" 쪽에 목업 작업에 대해서 쓸려고 준비하고 있었는데 댓글에 Print 관련 해서 질의를 주셨습니다. 

생각해보니 개발을 한지 제법 됬는데 프린트 관련 된 내용은 신경을 써본적이 없었네요.

궁금해서 한번 준비 해봤습니다.

기본적으로 "페이지 설정 > 미리보기 > 인쇄" 이정도 단계로 진행 되는데 Dialog들을 준비되어 있는 상태라 뭔가 코드 상으로 고민 할만한건 그다지 많은 않은 것 같습니다. 

그래서 Html Editor로 구성 하려고 하였는데 하다 보니 Third Party를 가지고 구성하는 듯한 내용을 다루게 되었네요. ㅎ

UI)

이번에 하면서 다시 생각해본 점은 예전에 WPF를 하기도 했고 Java나 웹쪽도 하고 있기는 하지만 Winform이 오래되긴 했구나 싶은 생각도 들었습니다. 

아직 Winform을 많이 사용하고는 있지만 기본으로 사용하는 경우보다는 Devexpress같은 Third Party를 가지고 사용하는 경우가 많으니 저도 그 다음을 생각해야 하지 않을까 싶기도 하네요. ^^a

강의)

Source)

소스 코드 자체는 별로 길지 않습니다. ^^

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using BaiqiSoft.HtmlEditorControl;
using SelectPdf;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace PagePrint
{
    public partial class mainPagePrint : Form
    {
 
        #region 전역변수
 
        PrintDocument printDoc;  // winform PrintDocument
        MstHtmlEditor htmlEditor;  // HtmlEditor (NuGet 패키지 추가 : BaiqiSoft.WinFormsHtmlEditor.NET4)
        HtmlToImage hToi;   // Html을 Image로 Convert (NuGet 패키지 추가 : Select.HtmlToPdf)
        #endregion
 
 
        /// <summary>
        /// 프로그램 진입점
        /// </summary>
        public mainPagePrint()
        {
            InitializeComponent();
        }
 
 
        #region Form Event
 
        /// <summary>
        /// Form Load Event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void mainPagePrint_Load(object sender, EventArgs e)
        {
            printDoc = new PrintDocument();
            printDoc.PrintPage += PrintDoc_PrintPage;
 
            // Html Editor을 Panel에 Panel에 Add (화면에 뿌려 줌)
            htmlEditor = new MstHtmlEditor();
            htmlEditor.Dock = DockStyle.Fill; // 화면 사이즈에 맞춰서 크기가 변경 될 수 있게 부모 컨테이너에 Docking 시킴
            pMain.Controls.Add(htmlEditor);
 
            hToi = new HtmlToImage();
        }
 
        /// <summary>
        /// 인쇄 버튼 Click 시 인쇄 할 Print 선택
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPrint_Click(object sender, EventArgs e)
        {
            PrintDialog printDlg = new PrintDialog();
 
            if (printDlg.ShowDialog() == DialogResult.OK)
            {
                printDoc.PrinterSettings = printDlg.PrinterSettings;
                printDoc.Print();
            }
        }
 
        /// <summary>
        /// 인쇄 미리보기 버튼 Click 시 미리보기 표시
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPreView_Click(object sender, EventArgs e)
        {
            PrintPreviewDialog printPreDlg = new PrintPreviewDialog();
            printPreDlg.Document = printDoc;
            printPreDlg.ShowDialog();
        }
 
        /// <summary>
        /// Page Setting
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPageSetup_Click(object sender, EventArgs e)
        {
            PageSetupDialog pSetup = new PageSetupDialog();
            pSetup.PageSettings = printDoc.DefaultPageSettings;
 
            if (pSetup.ShowDialog() == DialogResult.OK)
            {
                printDoc.DefaultPageSettings = pSetup.PageSettings;
            }
        }
 
        /// <summary>
        /// Print Page Set Event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            Image img = hToi.ConvertHtmlString(htmlEditor.BodyHTML);  // Html을 Image로 변환
 
            Graphics g = e.Graphics;
            g.DrawImage(img, 1010);   // x, y 시작점
 
            /*
            // Draw String에 대한 구문
            PointF drawPoint = new PointF(100, 100);            
            // 2중 using 문 사용.
            using (Font font = new Font("Lucida Console", 30))
            using (SolidBrush drawBrush = new SolidBrush(Color.Black))
            {
                g.DrawString("Hello,\n printer", font, drawBrush, drawPoint);
            }
            */
        }
        #endregion
 
    }
}
 
cs

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/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
글 보관함