Bagikan melalui


Mencetak file teks multi-halaman

Umum bagi aplikasi berbasis Windows untuk mencetak teks. Kelas Graphics menyediakan metode untuk menggambar objek (grafik atau teks) ke perangkat, seperti layar atau printer. Bagian berikut ini menjelaskan secara rinci proses untuk mencetak file teks. Metode ini tidak mendukung pencetakan file teks non-biasa, seperti dokumen Office Word atau file PDF .

Nota

Metode DrawText dari TextRenderer tidak didukung untuk pencetakan. Anda harus selalu menggunakan metode DrawStringGraphics, seperti yang ditunjukkan dalam contoh kode berikut, untuk menggambar teks untuk tujuan pencetakan.

Untuk mencetak teks

  1. Di Visual Studio, klik ganda formulir yang ingin Anda cetak, di panel Penjelajah Solusi . Tindakan ini membuka Visual Designer.

  2. Dari Kotak Alat, klik PrintDocument dua kali komponen untuk menambahkannya ke formulir. Tindakan ini membuat komponen PrintDocument dengan nama printDocument1.

  3. Tambahkan Button ke formulir, atau gunakan tombol yang sudah ada di formulir.

  4. Di perancang visual formulir, pilih tombol. Di panel Properti, pilih tombol filter Peristiwa dan kemudian klik dua kali peristiwa Click untuk membuat pengendali peristiwa.

  5. Kode peristiwa Click harus terlihat. Di luar cakupan penanganan aktivitas, tambahkan variabel string privat ke kelas bernama stringToPrint.

    private string stringToPrint="";
    
    'Private PrintDocument1 As New PrintDocument()
    Private stringToPrint As String
    
  6. Kembali ke Click kode penanganan aktivitas, atur DocumentName properti ke nama dokumen. Informasi ini dikirim ke pencetak. Selanjutnya, baca konten teks dokumen dan simpan dalam stringToPrint string. Terakhir, panggil Print metode untuk menaikkan PrintPage acara. Metode Print ini disorot dalam kode berikut:

    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. Kembali ke Visual Designer formulir dan pilih komponen PrintDocument. Pada panel Properti , pilih filter Peristiwa lalu klik PrintPage dua kali peristiwa untuk menghasilkan penanganan aktivitas.

  8. Di penanganan aktivitas PrintPage, gunakan properti Graphics kelas PrintPageEventArgs dan konten dokumen untuk menghitung panjang garis dan baris per halaman. Setelah setiap halaman digambar, periksa apakah itu halaman terakhir, dan atur HasMorePages properti yang PrintPageEventArgs sesuai. Peristiwa PrintPage dijalankan hingga HasMorePages menjadi false.

    Dalam contoh kode berikut, penanganan aktivitas digunakan untuk mencetak konten file "testPage.txt" dalam font yang sama seperti yang digunakan pada formulir.

    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
    

Lihat juga