次の方法で共有


PrintDocument.Print メソッド

ドキュメントの印刷プロセスを開始します。

Public Sub Print()
[C#]
public void Print();
[C++]
public: void Print();
[JScript]
public function Print();

例外

例外の種類 条件
InvalidPrinterException PrinterSettings.PrinterName プロパティで指定されたプリンタが存在しません。

解説

PrintPage イベントを処理し、 PrintPageEventArgs に含まれている Graphics を使用して、印刷する出力を指定します。

PrinterSettings.PrinterName プロパティを使用して、ドキュメントを印刷するプリンタを指定します。

Print メソッドは、印刷ダイアログを使用せずにドキュメントを印刷します。ユーザーが印刷設定を選択できるようにする場合は、 PrintDialog を使用してください。

メモ    Print メソッドで処理されない例外が印刷中にスローされた場合、ドキュメントの印刷は中止されます。

使用例

[Visual Basic, C#, C++] コマンド ラインで指定したファイルを既定のプリンタに出力する例を次に示します。

[Visual Basic, C#, C++] メモ   この例は、各行がページ幅内に収まることを前提にしています。

[Visual Basic, C#, C++] この例では、 System.ComponentModelSystem.DrawingSystem.Drawing.PrintingSystem.IO 、および System.Windows.Forms の各名前空間を使用します。

 
Public Class PrintingExample
    Private printFont As Font
    Private streamToPrint As StreamReader
    Private Shared filePath As String
    
    Public Sub New()
        Printing()
    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)
        
        ' Iterate over the file, printing each line.
        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
     
    ' Print the file.
    Public Sub Printing()
        Try
            streamToPrint = New StreamReader(filePath)
            Try
                printFont = New Font("Arial", 10)
                Dim pd As New PrintDocument()
                AddHandler pd.PrintPage, AddressOf pd_PrintPage
                ' Print the document.
                pd.Print()
            Finally
                streamToPrint.Close()
            End Try
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub 'Printing    
    
    ' This is the main entry point for the application.
    Public Shared Sub Main()
        Dim args() As String = System.Environment.GetCommandLineArgs()
        Dim sampleName As String = args(0)
        If args.Length <> 1 Then
            Console.WriteLine("Usage: " & sampleName & " <file path>")
            Return
        End If
        filePath = args(0)
    End Sub
End Class


[C#] 
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();
    }
}


[C++] 
public __gc class PrintingExample 
{
private:
   Font* printFont;
   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 = (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) ;

      // Iterate over the file, printing each line.
      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;
   }

   // Print the file.
public:
   void Printing()
   {
      try 
      {
         streamToPrint = new StreamReader (filePath);
         try 
         {
            printFont = new Font(S"Arial", 10);
            PrintDocument* pd = new PrintDocument(); 
            pd->PrintPage += new PrintPageEventHandler(this, &PrintingExample::pd_PrintPage);
            // Print the document.
            pd->Print();
         } 
         __finally 
         {
            streamToPrint->Close() ;
         }
      } 
      catch(Exception* ex) 
      { 
         MessageBox::Show(ex->Message);
      }
   }

   static void Main() 
   {
      String* args[] = Environment::GetCommandLineArgs();
      String* sampleName = args[0];
      if(args->Length != 2)
      {
         Console::WriteLine(S"Usage: {0} <file path>", sampleName);
         return;
      }
      filePath = args[1];
      new PrintingExample();
   }
};

int main()
{
   PrintingExample::Main();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

PrintDocument クラス | PrintDocument メンバ | System.Drawing.Printing 名前空間