PrintDocument PrintDocument PrintDocument PrintDocument Class


Windows フォーム アプリケーションからの印刷時にプリンターに出力を送信する再利用可能なオブジェクトを定義します。Defines a reusable object that sends output to a printer, when printing from a Windows Forms application.

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 という名前のファイルを既定のプリンターに出力します。The following code example prints the file named C:\My Documents\MyFile.txt on the default printer. この例を実行するには、新しい Windows フォームプロジェクトを作成し、そのコード例をフォームに貼り付けて、ファイルの内容を置き換えます。To run the example, create a new Windows Forms project and paste the example code into the form, replacing the file contents. C#では、Form1.Designer.cs ファイルを削除する必要があります。For C#, you will need to delete the Form1.Designer.cs file. また、印刷するファイルのパスを変更します。Also, change the path to the file you want to print.


この例では、各行がページ幅内に収まる必要があります。The example requires that each line fits within the page width.

#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
   System::ComponentModel::Container^ components;
   System::Windows::Forms::Button^ printButton;
   System::Drawing::Font^ printFont;
   StreamReader^ streamToPrint;

      : Form()
      // The Windows Forms Designer requires the following call.


   // The Click event is raised when the user clicks the Print button.
   void printButton_Click( Object^ /*sender*/, EventArgs^ /*e*/ )
         streamToPrint = gcnew StreamReader( "C:\\My Documents\\MyFile.txt" );
            printFont = gcnew System::Drawing::Font( "Arial",10 );
            PrintDocument^ pd = gcnew PrintDocument;
            pd->PrintPage += gcnew PrintPageEventHandler( this, &PrintingExample::pd_PrintPage );

      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 );

      // If more lines exist, print another page.
      if ( line != nullptr )
            ev->HasMorePages = true;
            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.

    // The Click event is raised when the user clicks the Print button.
    private void printButton_Click(object sender, EventArgs e)
            streamToPrint = new StreamReader
               ("C:\\My Documents\\MyFile.txt");
                printFont = new Font("Arial", 10);
                PrintDocument pd = new PrintDocument();
                pd.PrintPage += new PrintPageEventHandler
        catch (Exception ex)

    // 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 /

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

        // If more lines exist, print another page.
        if (line != null)
            ev.HasMorePages = true;
            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 =
        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);



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.
    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
            streamToPrint = New StreamReader("C:\My Documents\MyFile.txt")
                printFont = New Font("Arial", 10)
                Dim pd As New PrintDocument()
                AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
            End Try
        Catch ex As Exception
        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
            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

    End Sub

    ' This is the main entry point for the application.    
    Public Shared Sub Main()
        Application.Run(New Form1())
    End Sub

End Class


通常は、 PrintDocumentクラスのインスタンスを作成し、 PrintPrinterSettingsなどのDocumentNameプロパティを設定して、メソッドを呼び出して印刷プロセスを開始します。Typically, you create an instance of the PrintDocument class, set properties such as the DocumentName and PrinterSettings, and call the Print method to start the printing process. PrintPageのプロパティGraphicsを使用Graphicsして、印刷する出力を指定するイベントを処理します。PrintPageEventArgsHandle the PrintPage event where you specify the output to print, by using the GraphicsGraphics property of the PrintPageEventArgs.

Windows フォームアプリケーションからの印刷の詳細については、 Windows フォーム印刷サポートに関するページを参照してください。For more information about printing from a Windows Form application, see the Windows Forms Print Support. Windows Presentation Foundation アプリケーションから印刷する場合は、 System.Printing名前空間を参照してください。If you wish to print from a Windows Presentation Foundation application, see the System.Printing namespace.


PrintDocument() PrintDocument() PrintDocument() PrintDocument()

PrintDocument クラスの新しいインスタンスを初期化します。Initializes a new instance of the PrintDocument class.


CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。Gets a value indicating whether the component can raise an event.

(Inherited from Component)
Container Container Container Container

IContainer を格納している Component を取得します。Gets the IContainer that contains the Component.

(Inherited from Component)
DefaultPageSettings DefaultPageSettings DefaultPageSettings DefaultPageSettings

印刷するすべてのページの既定値として使用されるページ設定を取得または設定します。Gets or sets page settings that are used as defaults for all pages to be printed.

DesignMode DesignMode DesignMode DesignMode

Component が現在デザイン モードかどうかを示す値を取得します。Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
DocumentName DocumentName DocumentName DocumentName

ドキュメントの印刷中に、印刷ステータス ダイアログ ボックスやプリンター キューなどで表示するドキュメントの名前を取得または設定します。Gets or sets the document name to display (for example, in a print status dialog box or printer queue) while printing the document.

Events Events Events Events

Component に結び付けられているイベント ハンドラーのリストを取得します。Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
OriginAtMargins OriginAtMargins OriginAtMargins OriginAtMargins

ページに関連付けられているグラフィック オブジェクトの位置が、ユーザー指定の余白の内側にあるか、ページの印刷可能領域の左上隅にあるかを示す値を取得または設定します。Gets or sets a value indicating whether the position of a graphics object associated with a page is located just inside the user-specified margins or at the top-left corner of the printable area of the page.

PrintController PrintController PrintController PrintController

印刷プロセスを制御するプリント コントローラーを取得または設定します。Gets or sets the print controller that guides the printing process.

PrinterSettings PrinterSettings PrinterSettings PrinterSettings

ドキュメントを印刷するプリンターを取得または設定します。Gets or sets the printer that prints the document.

Site Site Site Site

ComponentISite を取得または設定します。Gets or sets the ISite of the Component.

(Inherited from Component)


CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Component によって使用されているすべてのリソースを解放します。Releases all resources used by the Component.

(Inherited from Component)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Component によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Inherited from Component)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetService(Type) GetService(Type) GetService(Type) GetService(Type)

Component またはその Container で提供されるサービスを表すオブジェクトを返します。Returns an object that represents a service provided by the Component or by its Container.

(Inherited from Component)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
OnBeginPrint(PrintEventArgs) OnBeginPrint(PrintEventArgs) OnBeginPrint(PrintEventArgs) OnBeginPrint(PrintEventArgs)

BeginPrint イベントを発生させます。Raises the BeginPrint event. Print() メソッドが呼び出された後、ドキュメントの最初のページが印刷される前に呼び出されます。It is called after the Print() method is called and before the first page of the document prints.

OnEndPrint(PrintEventArgs) OnEndPrint(PrintEventArgs) OnEndPrint(PrintEventArgs) OnEndPrint(PrintEventArgs)

EndPrint イベントを発生させます。Raises the EndPrint event. ドキュメントの最後のページが印刷されたときに呼び出されます。It is called when the last page of the document has printed.

OnPrintPage(PrintPageEventArgs) OnPrintPage(PrintPageEventArgs) OnPrintPage(PrintPageEventArgs) OnPrintPage(PrintPageEventArgs)

PrintPage イベントを発生させます。Raises the PrintPage event. ページの印刷前に呼び出されます。It is called before a page prints.

OnQueryPageSettings(QueryPageSettingsEventArgs) OnQueryPageSettings(QueryPageSettingsEventArgs) OnQueryPageSettings(QueryPageSettingsEventArgs) OnQueryPageSettings(QueryPageSettingsEventArgs)

QueryPageSettings イベントを発生させます。Raises the QueryPageSettings event. PrintPage イベントの直前に呼び出されます。It is called immediately before each PrintPage event.

Print() Print() Print() Print()

ドキュメントの印刷プロセスを開始します。Starts the document's printing process.

ToString() ToString() ToString() ToString()

印刷ドキュメントに関する情報を文字列形式で提供します。Provides information about the print document, in string form.


BeginPrint BeginPrint BeginPrint BeginPrint

Print() メソッドが呼び出されたとき (ドキュメントの最初のページが印刷される前) に発生します。Occurs when the Print() method is called and before the first page of the document prints.

Disposed Disposed Disposed Disposed

Dispose() メソッドの呼び出しによってコンポーネントが破棄されると発生します。Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)
EndPrint EndPrint EndPrint EndPrint

ドキュメントの最後のページが印刷されたときに発生します。Occurs when the last page of the document has printed.

PrintPage PrintPage PrintPage PrintPage

現在のページに印刷する出力が必要なときに発生します。Occurs when the output to print for the current page is needed.

QueryPageSettings QueryPageSettings QueryPageSettings QueryPageSettings

PrintPage イベントの直前に発生します。Occurs immediately before each PrintPage event.