PrintDocument 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Windows Forms 애플리케이션에서 인쇄할 때 프린터로 출력을 보내는 재사용 가능한 개체를 정의합니다.
public ref class PrintDocument : System::ComponentModel::Component
public class PrintDocument : System.ComponentModel.Component
type PrintDocument = class
inherit Component
Public Class PrintDocument
Inherits Component
- 상속
예제
다음 코드 예제에서는 C:\My Documents\MyFile.txt 라는 파일을 기본 프린터에 인쇄합니다. 예제를 실행하려면 새 Windows Forms 프로젝트를 만들고 예제 코드를 양식에 붙여넣고 파일 내용을 바꿉니다. C#의 경우 Form1을 삭제해야 합니다. Designer.cs 파일입니다. 또한 인쇄할 파일의 경로를 변경합니다.
참고
이 예제에서는 각 줄이 페이지 너비 내에 맞아야 합니다.
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::IO;
using namespace System::Drawing;
using namespace System::Drawing::Printing;
using namespace System::Windows::Forms;
public ref class PrintingExample: public System::Windows::Forms::Form
{
private:
System::ComponentModel::Container^ components;
System::Windows::Forms::Button^ printButton;
System::Drawing::Font^ printFont;
StreamReader^ streamToPrint;
public:
PrintingExample()
: Form()
{
// The Windows Forms Designer requires the following call.
InitializeComponent();
}
private:
// The Click event is raised when the user clicks the Print button.
void printButton_Click( Object^ /*sender*/, EventArgs^ /*e*/ )
{
try
{
streamToPrint = gcnew StreamReader( "C:\\My Documents\\MyFile.txt" );
try
{
printFont = gcnew System::Drawing::Font( "Arial",10 );
PrintDocument^ pd = gcnew PrintDocument;
pd->PrintPage += gcnew PrintPageEventHandler( this, &PrintingExample::pd_PrintPage );
pd->Print();
}
finally
{
streamToPrint->Close();
}
}
catch ( Exception^ ex )
{
MessageBox::Show( ex->Message );
}
}
// The PrintPage event is raised for each page to be printed.
void pd_PrintPage( Object^ /*sender*/, PrintPageEventArgs^ ev )
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = (float)ev->MarginBounds.Left;
float topMargin = (float)ev->MarginBounds.Top;
String^ line = nullptr;
// Calculate the number of lines per page.
linesPerPage = ev->MarginBounds.Height / printFont->GetHeight( ev->Graphics );
// Print each line of the file.
while ( count < linesPerPage && ((line = streamToPrint->ReadLine()) != nullptr) )
{
yPos = topMargin + (count * printFont->GetHeight( ev->Graphics ));
ev->Graphics->DrawString( line, printFont, Brushes::Black, leftMargin, yPos, gcnew StringFormat );
count++;
}
// If more lines exist, print another page.
if ( line != nullptr )
ev->HasMorePages = true;
else
ev->HasMorePages = false;
}
// The Windows Forms Designer requires the following procedure.
void InitializeComponent()
{
this->components = gcnew System::ComponentModel::Container;
this->printButton = gcnew System::Windows::Forms::Button;
this->ClientSize = System::Drawing::Size( 504, 381 );
this->Text = "Print Example";
printButton->ImageAlign = System::Drawing::ContentAlignment::MiddleLeft;
printButton->Location = System::Drawing::Point( 32, 110 );
printButton->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
printButton->TabIndex = 0;
printButton->Text = "Print the file.";
printButton->Size = System::Drawing::Size( 136, 40 );
printButton->Click += gcnew System::EventHandler( this, &PrintingExample::printButton_Click );
this->Controls->Add( printButton );
}
};
// This is the main entry point for the application.
int main()
{
Application::Run( gcnew PrintingExample );
}
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
public partial class Form1 : System.Windows.Forms.Form
{
private System.ComponentModel.Container components;
private System.Windows.Forms.Button printButton;
private Font printFont;
private StreamReader streamToPrint;
public Form1()
{
// The Windows Forms Designer requires the following call.
InitializeComponent();
}
// The Click event is raised when the user clicks the Print button.
private void printButton_Click(object sender, EventArgs e)
{
try
{
streamToPrint = new StreamReader
("C:\\My Documents\\MyFile.txt");
try
{
printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler
(this.pd_PrintPage);
pd.Print();
}
finally
{
streamToPrint.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// 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);
// Print each line of the file.
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;
}
// The Windows Forms Designer requires the following procedure.
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.printButton = new System.Windows.Forms.Button();
this.ClientSize = new System.Drawing.Size(504, 381);
this.Text = "Print Example";
printButton.ImageAlign =
System.Drawing.ContentAlignment.MiddleLeft;
printButton.Location = new System.Drawing.Point(32, 110);
printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
printButton.TabIndex = 0;
printButton.Text = "Print the file.";
printButton.Size = new System.Drawing.Size(136, 40);
printButton.Click += new System.EventHandler(printButton_Click);
this.Controls.Add(printButton);
}
}
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
Private WithEvents printButton As System.Windows.Forms.Button
Private printFont As Font
Private streamToPrint As StreamReader
Public Sub New()
' The Windows Forms Designer requires the following call.
InitializeComponent()
InitializeForm()
End Sub
' The Click event is raised when the user clicks the Print button.
Private Sub printButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles printButton.Click
Try
streamToPrint = New StreamReader("C:\My Documents\MyFile.txt")
Try
printFont = New Font("Arial", 10)
Dim pd As New PrintDocument()
AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
pd.Print()
Finally
streamToPrint.Close()
End Try
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
' The PrintPage event is raised for each page to be printed.
Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim count As Integer = 0
Dim leftMargin As Single = ev.MarginBounds.Left
Dim topMargin As Single = ev.MarginBounds.Top
Dim line As String = Nothing
' Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)
' Print each line of the file.
While count < linesPerPage
line = streamToPrint.ReadLine()
If line Is Nothing Then
Exit While
End If
yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
count += 1
End While
' If more lines exist, print another page.
If (line IsNot Nothing) Then
ev.HasMorePages = True
Else
ev.HasMorePages = False
End If
End Sub
Private Sub InitializeForm()
Me.components = New System.ComponentModel.Container()
Me.printButton = New System.Windows.Forms.Button()
Me.ClientSize = New System.Drawing.Size(504, 381)
Me.Text = "Print Example"
printButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
printButton.Location = New System.Drawing.Point(32, 110)
printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
printButton.TabIndex = 0
printButton.Text = "Print the file."
printButton.Size = New System.Drawing.Size(136, 40)
AddHandler printButton.Click, AddressOf printButton_Click
Me.Controls.Add(printButton)
End Sub
' This is the main entry point for the application.
Public Shared Sub Main()
Application.Run(New Form1())
End Sub
End Class
설명
일반적으로 클래스의 PrintDocument instance 만들고, 및 와 PrinterSettings같은 DocumentName 속성을 설정하고, 메서드를 Print 호출하여 인쇄 프로세스를 시작합니다. 의 PrintPage 속성을 사용하여 인쇄할 출력을 지정하는 GraphicsGraphics 이벤트를 처리합니다 PrintPageEventArgs.
Windows Form 애플리케이션에서 인쇄 하는 방법에 대 한 자세한 내용은 참조는 Windows Forms 인쇄 지원합니다. Windows Presentation Foundation 애플리케이션에서 인쇄 하려는 경우 참조는 System.Printing 네임 스페이스입니다.
참고
.NET 6 이상 버전에서는 이 형식을 포함하는 System.Drawing.Common 패키지가 Windows 운영 체제에서만 지원됩니다. 플랫폼 간 앱에서 이 형식을 사용하면 컴파일 시간 경고 및 런타임 예외가 발생합니다. 자세한 내용은 Windows에서만 지원되는 System.Drawing.Common을 참조하세요.
생성자
PrintDocument() |
PrintDocument 클래스의 새 인스턴스를 초기화합니다. |
속성
CanRaiseEvents |
구성 요소가 이벤트를 발생시킬 수 있는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 Component) |
Container |
IContainer을 포함하는 Component를 가져옵니다. (다음에서 상속됨 Component) |
DefaultPageSettings |
인쇄할 모든 페이지에 대해 기본값으로 사용되는 페이지 설정을 가져오거나 설정합니다. |
DesignMode |
Component가 현재 디자인 모드인지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 Component) |
DocumentName |
문서를 인쇄하는 동안 표시(예: [인쇄 상태] 대화상자 또는 프린터 큐에 표시)할 문서 이름을 가져오거나 설정합니다. |
Events |
이 Component에 연결된 이벤트 처리기의 목록을 가져옵니다. (다음에서 상속됨 Component) |
OriginAtMargins |
페이지와 관련된 그래픽 개체의 위치가 사용자가 지정한 여백 내에 있는지 아니면 페이지 인쇄 가능 영역의 왼쪽 위 구석에 있는지 여부를 나타내는 값을 가져오거나 설정합니다. |
PrintController |
인쇄를 하도록 도와줄 인쇄 컨트롤러를 가져오거나 설정합니다. |
PrinterSettings |
문서를 인쇄할 프린터를 가져오거나 설정합니다. |
Site |
Component의 ISite를 가져오거나 설정합니다. (다음에서 상속됨 Component) |
메서드
CreateObjRef(Type) |
원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다. (다음에서 상속됨 MarshalByRefObject) |
Dispose() |
Component에서 사용하는 모든 리소스를 해제합니다. (다음에서 상속됨 Component) |
Dispose(Boolean) |
Component에서 사용하는 관리되지 않는 리소스를 해제하고, 관리되는 리소스를 선택적으로 해제할 수 있습니다. (다음에서 상속됨 Component) |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetLifetimeService() |
사용되지 않음.
이 인스턴스의 수명 정책을 제어하는 현재의 수명 서비스 개체를 검색합니다. (다음에서 상속됨 MarshalByRefObject) |
GetService(Type) |
Component 또는 해당 Container에서 제공하는 서비스를 나타내는 개체를 반환합니다. (다음에서 상속됨 Component) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
InitializeLifetimeService() |
사용되지 않음.
이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다. (다음에서 상속됨 MarshalByRefObject) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
MemberwiseClone(Boolean) |
현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다. (다음에서 상속됨 MarshalByRefObject) |
OnBeginPrint(PrintEventArgs) |
BeginPrint 이벤트를 발생시킵니다. Print() 메서드가 호출된 후, 문서의 첫 페이지가 인쇄되기 전에 호출됩니다. |
OnEndPrint(PrintEventArgs) |
EndPrint 이벤트를 발생시킵니다. 문서의 마지막 페이지가 인쇄되면 호출됩니다. |
OnPrintPage(PrintPageEventArgs) |
PrintPage 이벤트를 발생시킵니다. 페이지가 인쇄되기 전에 호출됩니다. |
OnQueryPageSettings(QueryPageSettingsEventArgs) |
QueryPageSettings 이벤트를 발생시킵니다. 각 PrintPage 이벤트 직전에 호출됩니다. |
Print() |
문서의 인쇄를 시작합니다. |
ToString() |
인쇄 문서에 대한 정보를 문자열 형식으로 제공합니다. |
이벤트
BeginPrint |
Print() 메서드가 호출될 때 문서의 첫 페이지가 인쇄되기 전에 발생합니다. |
Disposed |
Dispose() 메서드를 호출하여 구성 요소를 삭제할 때 발생합니다. (다음에서 상속됨 Component) |
EndPrint |
문서의 마지막 페이지가 인쇄되면 발생합니다. |
PrintPage |
현재 페이지에 대해 인쇄할 출력이 필요할 때 발생합니다. |
QueryPageSettings |
각 PrintPage 이벤트 바로 전에 발생합니다. |
적용 대상
추가 정보
.NET