Прочитать на английском

Поделиться через


PrintDocument Класс

Определение

Определяет повторно используемый объект, который отправляет выходные данные на принтер при печати из приложения Windows Forms.

public class PrintDocument : System.ComponentModel.Component
Наследование

Примеры

В следующем примере кода на принтере по умолчанию выводится файл C:\My Documents\MyFile.txt. Чтобы запустить пример, создайте проект Windows Forms и вставьте пример кода в форму, заменив содержимое файла. Для C# необходимо удалить Form1. Designer.cs файл. Кроме того, измените путь к файлу, который нужно распечатать.

Примечание

В примере требуется, чтобы каждая строка помещалась в ширину страницы.

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

Комментарии

Как правило, вы создаете экземпляр класса , задаете PrintDocumentDocumentName свойства, такие как и PrinterSettings, и вызываете Print метод для запуска процесса печати. PrintPage Обработайте событие, в котором указываются выходные данные для печати, с помощью GraphicsGraphics свойства PrintPageEventArgsобъекта .

Дополнительные сведения о печати из приложения Windows Forms см. в разделе Поддержка печати Windows Forms. Если вы хотите выполнить печать из приложения Windows Presentation Foundation, смSystem.Printing. пространство имен.

Примечание

В .NET 6 и более поздних версиях пакет System.Drawing.Common, включающий этот тип, поддерживается только в операционных системах Windows. Использование этого типа в кроссплатформенных приложениях вызывает предупреждения во время компиляции и исключения во время выполнения. Дополнительные сведения см . в статье System.Drawing.Common, поддерживаемая только в Windows.

Конструкторы

PrintDocument()

Инициализирует новый экземпляр класса PrintDocument.

Свойства

CanRaiseEvents

Возвращает значение, показывающее, может ли компонент вызывать событие.

(Унаследовано от Component)
Container

Возвращает объект IContainer, который содержит коллекцию Component.

(Унаследовано от Component)
DefaultPageSettings

Получает или задает параметры страницы, используемые по умолчанию для всех выводимых на печать страниц.

DesignMode

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.

(Унаследовано от Component)
DocumentName

Возвращает или задает имя документа, отображаемое (например, в диалоговом окне состояния принтера или в очереди принтера) во время печати документа.

Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

(Унаследовано от Component)
OriginAtMargins

Получает или задает значение, показывающее, находится ли связанный со страницей графический объект внутри полей, заданных пользователем, или в верхнем левом углу пригодной для печати площади страницы.

PrintController

Получает или задает контроллер печати, выполняющий печать.

PrinterSettings

Получает или задает принтер, выполняющий печать документа.

Site

Получает или задает ISite объекта Component.

(Унаследовано от 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 Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

См. также раздел