C# net8 PrintDocument 列印兩頁不一樣的 範例 [支援熱敏印表機切紙]

C# net8 PrintDocument 列印兩頁不一樣的 範例 [支援熱敏印表機切紙]

C# net8 PrintDocument 列印兩頁不一樣的 範例 [支援熱敏印表機切紙]


資料來源: copilot/gemini + 自己


code

using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.IO;
using System.Security;
using System.Text;
using static System.Runtime.InteropServices.JavaScript.JSType;
using System.ComponentModel;
using System.Security.Cryptography;

class Program
{    
    static int pageNumber = 1;
    static string printerName = "80mm Series Printer"; // 替換成實際的印表機名稱
 
    static void Main()
    {
        // 註冊編碼提供者,這樣可以使用 big5 編碼
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        for (int i = 0; i < 2; i++)
        {
            pageNumber = i;
            PrintDocument printDoc = new PrintDocument();
            printDoc.PrinterSettings.PrinterName = printerName;

            // 設定印表機解析度(例如:300 DPI)
            printDoc.PrinterSettings.DefaultPageSettings.PrinterResolution = new PrinterResolution() { X = 300, Y = 300 };
            printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
            printDoc.Print();
        }
        

    }

    static void PrintPage(object sender, PrintPageEventArgs e)
    {
        pageNumber++;
        e.Graphics.DrawString($"這是第{pageNumber}頁", new Font("Arial", 16), Brushes.Black, 100, 100);
        if (pageNumber % 2 == 0)
        {
            e.Graphics.DrawRectangle(Pens.Black, new Rectangle(50, 150, 200, 100));
        }
        else
        {
            e.Graphics.DrawLine(Pens.Black, new Point(50, 150), new Point(200, 100));
        }
        e.HasMorePages = false; // 最後一頁
    }
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *