PrintDocument クラス
プリンタに出力を送信する再利用可能なオブジェクトを定義します。
この型のすべてのメンバの一覧については、PrintDocument メンバ を参照してください。
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Drawing.Printing.PrintDocument
Public Class PrintDocument
Inherits Component
[C#]
public class PrintDocument : Component
[C++]
public __gc class PrintDocument : public Component
[JScript]
public class PrintDocument extends Component
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
通常は、 PrintDocument クラスのインスタンスを作成し、印刷方法を記述したプロパティを設定して、 Print メソッドを呼び出すことで印刷プロセスを開始します。 PrintPage イベントを処理します。このときに、 PrintPageEventArgs に含まれている Graphics を使用して、印刷する出力を指定します。
印刷の詳細については、 System.Drawing.Printing 名前空間のトピックを参照してください。
使用例
[Visual Basic, C#, C++] C:\My Documents\MyFile.txt という名前のファイルを既定のプリンタで印刷する例を次に示します。この例を実行するには、印刷するファイルにパスを変更します。Windows フォーム デザイナを使用して InitializeComponent
プロシージャを変更することもできます。
[Visual Basic, C#, C++] メモ この例は、各行がページ幅内に収まることを前提にしています。
[Visual Basic, C#, C++] この例では、 System.ComponentModel 、 System.Windows.Forms 、 System.Drawing 、 System.Drawing.Printing 、 System.IO の各名前空間を使用します。
Public Class PrintingExample
Inherits System.Windows.Forms.Form
Private components As System.ComponentModel.Container
Private 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()
End Sub
' The Click event is raised when the user clicks the Print button.
Private Sub printButton_Click(sender As Object, e As EventArgs)
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(sender As Object, 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 Not (line Is Nothing) Then
ev.HasMorePages = True
Else
ev.HasMorePages = False
End If
End Sub
' The Windows Forms Designer requires the following procedure.
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.printButton = New System.Windows.Forms.Button()
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
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 PrintingExample())
End Sub
End Class
[C#]
public class PrintingExample : System.Windows.Forms.Form
{
private System.ComponentModel.Container components;
private System.Windows.Forms.Button printButton;
private Font printFont;
private StreamReader streamToPrint;
public PrintingExample() : base()
{
// 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.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
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);
}
// This is the main entry point for the application.
public static void Main(string[] args)
{
Application.Run(new PrintingExample());
}
}
[C++]
public __gc 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();
}
// The Click event is raised when the user clicks the Print button.
private:
void printButton_Click(Object* /*sender*/, EventArgs* /*e*/)
{
try
{
streamToPrint = new StreamReader
(S"C:\\My Documents\\MyFile.txt");
try
{
printFont = new System::Drawing::Font(S"Arial", 10);
PrintDocument* pd = new PrintDocument();
pd->PrintPage += new 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 = 0;
// 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()) != 0))
{
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 != 0)
ev->HasMorePages = true;
else
ev->HasMorePages = false;
}
// The Windows Forms Designer requires the following procedure.
void InitializeComponent()
{
this->components = new System::ComponentModel::Container();
this->printButton = new System::Windows::Forms::Button();
this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
this->ClientSize = System::Drawing::Size(504, 381);
this->Text = S"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 = S"Print the file.";
printButton->Size = System::Drawing::Size(136, 40);
printButton->Click += new System::EventHandler(this, &PrintingExample::printButton_Click);
this->Controls->Add(printButton);
}
};
// This is the main entry point for the application.
int main()
{
Application::Run(new PrintingExample());
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Drawing.Printing
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Drawing (System.Drawing.dll 内)
参照
PrintDocument メンバ | System.Drawing.Printing 名前空間 | Graphics | PageSettings | PrintController | PrinterSettings