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; // 最後一頁
}
}