Aracılığıyla paylaş


Çok sayfalı metin dosyasını yazdırma

Windows tabanlı uygulamaların metin yazdırması yaygındır. Graphics sınıfı, bir cihaza ekran veya yazıcı gibi nesneler (grafik veya metin) çizmek için yöntemler sağlar. Aşağıdaki bölümde, metin dosyasını yazdırma işlemi ayrıntılı olarak açıklanmaktadır. Bu yöntem, Office Word belgesi veya PDF dosyası gibi düz olmayan metin dosyalarını yazdırmayı desteklemez.

Uyarı

DrawText yöntemleri TextRenderer yazdırma için desteklenmez. Aşağıdaki kod örneğinde gösterildiği gibi, yazdırma amacıyla metin çizmek için her zaman DrawStringGraphics yöntemlerini kullanmalısınız.

Metni yazdırmak için

  1. Visual Studio'da, Çözüm Gezgini bölmesinde, yazdırmak istediğiniz forma çift tıklayın. Bu eylem Görsel Tasarımcı'yi açar.

  2. Araç Kutusuiçinden PrintDocument bileşenine çift tıklayarak onu forma ekleyin. Bu eylem, adlı PrintDocumentbir printDocument1 bileşen oluşturur.

  3. Forma bir Button ekleyin veya zaten formda olan bir düğmeyi kullanın.

  4. Formun Görsel Tasarımcısı'nda düğmeyi seçin. Özellikler bölmesinde, Olay filtre düğmesini seçin ve ardından olay işleyicisi oluşturmak için Click olayına çift tıklayın.

  5. Click olay kodu görünür olmalıdır. Olay işleyicisinin kapsamı dışında, stringToPrintadlı sınıfa özel bir dize değişkeni ekleyin.

    private string stringToPrint="";
    
    'Private PrintDocument1 As New PrintDocument()
    Private stringToPrint As String
    
  6. Click olay işleyici koduna geri dönüp DocumentName özelliğini belgenin adına ayarlayın. Bu bilgiler yazıcıya gönderilir. Ardından, belge metni içeriğini okuyun ve stringToPrint dizesinde depolayın. Son olarak, Print olayını yükseltmek için PrintPage yöntemini çağırın. yöntemi Print aşağıdaki kodda vurgulanır:

    private void button1_Click(object sender, EventArgs e)
    {
        string docName = "testPage.txt";
        string docPath = @"C:\";
        string fullPath = System.IO.Path.Combine(docPath, docName);
    
        printDocument1.DocumentName = docName;
    
        stringToPrint = System.IO.File.ReadAllText(fullPath);
        
        printDocument1.Print();
    }
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
        Dim docName As String = "testPage.txt"
        Dim docPath As String = "C:\"
        Dim fullPath As String = System.IO.Path.Combine(docPath, docName)
    
        PrintDocument1.DocumentName = docName
    
        stringToPrint = System.IO.File.ReadAllText(fullPath)
        
        PrintDocument1.Print()
    
    End Sub
    
  7. Formun Görsel Tasarımcısı'na dönün ve PrintDocument bileşenini seçin. Özellikler bölmesinde Olay filtresini seçin ve olay işleyicisi oluşturmak için PrintPage olayına çift tıklayın.

  8. PrintPage olay işleyicisinde, satır uzunluğunu ve sayfa başına satır sayısını hesaplamak için Graphics sınıfının PrintPageEventArgs özelliğini ve belge içeriğini kullanın. Her sayfa çizildikten sonra, son sayfa olup olmadığını kontrol edin ve buna göre HasMorePages'in PrintPageEventArgs özelliğini ayarlayın. PrintPage olayı, HasMorePagesfalseolana kadar tetiklenir.

    Aşağıdaki kod örneğinde olay işleyicisi, "testPage.txt" dosyasının içeriğini formda kullanılan yazı tipinde yazdırmak için kullanılır.

    private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        int charactersOnPage = 0;
        int linesPerPage = 0;
    
        // Sets the value of charactersOnPage to the number of characters
        // of stringToPrint that will fit within the bounds of the page.
        e.Graphics.MeasureString(stringToPrint, this.Font,
            e.MarginBounds.Size, StringFormat.GenericTypographic,
            out charactersOnPage, out linesPerPage);
    
        // Draws the string within the bounds of the page
        e.Graphics.DrawString(stringToPrint, this.Font, Brushes.Black,
            e.MarginBounds, StringFormat.GenericTypographic);
    
        // Remove the portion of the string that has been printed.
        stringToPrint = stringToPrint.Substring(charactersOnPage);
    
        // Check to see if more pages are to be printed.
        e.HasMorePages = (stringToPrint.Length > 0);
    }
    
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object,
    ByVal e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
    
        Dim charactersOnPage As Integer = 0
        Dim linesPerPage As Integer = 0
    
        ' Sets the value of charactersOnPage to the number of characters 
        ' of stringToPrint that will fit within the bounds of the page.
        e.Graphics.MeasureString(stringToPrint, Me.Font, e.MarginBounds.Size,
        StringFormat.GenericTypographic, charactersOnPage, linesPerPage)
    
        ' Draws the string within the bounds of the page
        e.Graphics.DrawString(stringToPrint, Me.Font, Brushes.Black,
        e.MarginBounds, StringFormat.GenericTypographic)
    
        ' Remove the portion of the string that has been printed.
        stringToPrint = stringToPrint.Substring(charactersOnPage)
    
        ' Check to see if more pages are to be printed.
        e.HasMorePages = stringToPrint.Length > 0
    
    End Sub
    

Ayrıca bakınız