# 印表控制碼參考 (DosPntGo 語言)

> 來源: 使用者提供之原廠文件 (2026-07-11 歸檔)
> 解譯器: PRNASK prn_to_pdf.prg / gdi 渲染 (PDF+GDI 兩路共用)
> 注意: 文件中之 ~ 一律為半形 ASCII 波浪號; 控制碼以 ~ 起點, 多數以 ; 終點

## 一、版面控制

1. 紙張大小: ~[?n]
   (1) n=0: LETTER  n=2: A4  n=3: B4  n=4: 80欄報表紙  n=5: 132欄報表紙  n=6: A3  n=7: B5
   (2) n=100 自訂紙張: ~[?100;長;寬] (單位: 1/1000 英吋)
       例: 中一刀 = ~[?100;5500;8500]
   (3) 通常在外部指令定義; 文件內定義用此指令。
   (4) 簡寫: ~PA4 (A4, 預設) / ~PA3 / ~PB4

2. 直印/橫印
   ~J6 (或 ~PP): 直放(預設)
   ~J7 (或 ~PL): 橫放
   注意「橫直」相對於紙張原始定義(A4/B4 瘦長, A3/B3 寬廣); 原方向=直印, 轉90度=橫印。

3. 指定進紙匣: ~[SOURCE;紙匣名稱]
   名稱須與印表機「內容」中進紙匣描述完全相同。

4. 邊界 (單位: 1/1000 英吋)
   ~[MT;nnnn] / ~[MD;nnnn]: 上/下邊界
   ~[ML;nnnn] / ~[MR;nnnn]: 左/右邊界
   例: ~[MT;500]; 上邊界 0.5 英吋

5. 縮放比例: ~[R;rx;ry]
   rx/ry=縮放百分比; 原比例 ~[R;100;100]; 半 ~[R;50;50]; 倍 ~[R;200;200]
   文件中隨時可用, 特別適合表格。

6. 頁眉/頁尾
   ~{UT;text}: 頁眉 (text 可含控制碼)
   ~{DT;text}: 頁尾
   ~[UF;file]: 以檔案為頁眉
   ~[DF;file]: 以檔案為頁尾
   例: ~{UT;~[JM];~T16;第~[FPAGE0];頁}  = 頁眉居中/T16字/頁碼「第n頁」
   頁眉頁尾設定通常放第一行。

7. 頁碼: ~[FPAGEn] (n=0-4)
   n=0: "123"(半形, 可直接 ~[FPAGE])   n=1: "１２３"(全形)
   n=2: "一二三"   n=4: "壹貳參"   n=5: "一百二十三"
   通常用於頁眉頁尾。

8. 頁碼還原: ~IP;
   多檔合併列印時還原頁碼; 必須加分號, 不可與其他控制碼合用。

9. 指定印表機: ~[ZN;印表機名稱]
   名稱須與系統中印表機名稱「完全相同」, 否則以預設印表機列印。
   例: ~[ZN;HP LaserJet 1100 (MS)]

## 二、字型、字體

### (一) 與倚天相容的控制碼

1. ~Fn : 字體, n=A..Z, 預設 ~FM (細明體)
2. ~Tnn: 字型大小, 預設 ~T24
   ~TXn: 字型寬度, 預設 ~TX24
   ~TYn: 字型高度, 預設 ~TY24
3. ~Wnn: 水平放大, 預設 ~W1
   ~Znn: 垂直放大, 預設 ~Z1
4. ~Lnn: 行距, 預設 ~L6
   ~Xnn: 字距, 預設 ~X12
5. ~Dn : 密度 (不建議使用)
6. ~I  : 還原 (預設即還原狀態)
7. ~G2 : 表格連接 / ~G1: 表格不連接(預設)
8. ~R2 : 反白 / ~R1: 反白還原
9. ~U2 : 底線 / ~U1: 底線還原
10. ~U4: 上線 / ~U3: 上線還原
11. ~S2: 加粗 / ~S1: 加粗還原
12. ~C : 半形字用中文字型(預設)
    ~E : 半形字用英文字型 (配合 ~[CF;字形] 及 ~[EF;字形])

### (二) 新增的控制碼

1. 絕對字體:
   ~[CF;中文字體] / ~[EF;英文字體]
2. 刪除線: ~U6/~U5 單線; ~U8/~U7 雙線
3. 加框: ~U9/~U0
4. 文字齊頂/齊中/齊底: ~GT / ~GM / ~GB
5. 顏色 (n=0..15):
   ~On : 文字色   ~OTn: 表格色
   ~OLn: 線色(影響底線/上線/~H)   ~OBn: 底色
   例: ~OT4O0; 表格紅色, 文字黑色

## 三、位置控制

1. 對齊: ~[JL] 靠左 / ~[JM] 居中 / ~[JR] 靠右
2. 絕對位置:
   (1) ~[P;x;y]: 游標移到絕對位置, (x,y)為點數 (舊制, 對應 180DPI; ~[P;180;180]=1英吋處)
   (2) ~[PP;x;y]: 千分英吋絕對定位 (~[PP;1000;1000]=1英吋處)
   (3) ~[P;#x;#y]、~[PP;#x;#y]: 相對位置定位
3. 回到行首: ~[BOL]
   同一行可重複列印。例: This is a test.~[BOL];=============== (文字上加雙刪除線)

## 四、列印圖檔

1. 通用語法: ~[G;file;x;y;w;h;ev]
2. 參數: x,y=絕對位置(1/1000英吋, 忽略=插入現在位置)
        w,h=顯示寬高(1/1000英吋, 忽略=原圖大小)
        ev=放大倍數(可非整數, 忽略=原圖大小)
3. 變化:
   ~[G;filename;ev]     : 插入, 目前文字位置, 指定放大倍數
   ~[G;filename;x;y]    : 貼上, 指定位置, 原圖大小
   ~[G;filename;x;y;ev] : 貼上, 指定位置, 指定放大倍數
   ~[G;filename;x;y;w;h]: 貼上, 指定位置, 指定寬高
   ~[G;filename;;;w;h]  : 插入, 目前文字位置, 指定寬高
4. 支援 JPG、BMP、PCX、WMF、GIF。
5. ~[G1;file;...]: 貼圖 — ~[G1;file;;;w;h] 游標處指定寬高 / ~[G1;file;;;ev] 游標處指定倍數
6. ~[G2;file;...]: 插圖 (用法同 ~[G], 之後文字會往下擠)
7. 套表專用: ~[GV;file;x;y;w;h;ev]
   只有 Preview 看得到, 列印時拿掉。套表掃描成圖檔後用此指令, 預覽見完整圖樣、列印不印底圖。

## 五、輔助功能

1. 日期:
   ~[FDATESHORT]: 系統簡短日期格式 (例 1997/8/12)
   ~[FDATELONG] : 系統完整日期格式 (例 1997年8月12日)
   ~[FDATE;Format]: 格式化日期
     dd=日  ddd=星期(中文)  MM=月  MMM=月(中文)  yy=西元後兩碼  yyyy=西元年
     例: ~[FDATE;yyyy 年 MMM dd 日 ddd]; = "1997 年 七月 10 日 星期四"
2. 時間:
   ~[FTIME]: 系統時間格式
   ~[FTIME;Format]: h/hh=12時制  H/HH=24時制  m/mm=分  s/ss=秒  t=A/P  tt=AM/PM
     例: ~[FTIME;HH:mm:ss tt]; = "14:50:25 PM"
3. 檔名: ~[FNAME]
4. 更換控制碼: ~~X
   例: ~~^ 改用 ^ 當控制碼 (文件中有 ~ 時避免誤解)

## 六、範例

1. 公司名稱+電話+日期, 加底線居中:
   ~{UT;~[JM];~U2T22X6;TO:某公司 TEL:26963131 Date:~[FDATESHORT];}
   說明: ~{UT;...}=頁眉包所有設定 / ~[JM];=居中 / ~U2T22X6;=底線+字體+字距 / ~[FDATESHORT]=短日期

2. 頁碼在下方靠右:
   ~{DT;~[JR];~T16;第~[FPAGE2];頁};
   ~[MT;787];~[MD;787];~[ML;787];~[MR;787];
   說明: ~{DT;...}=頁尾 / ~[JR];=靠右 / 第~[FPAGE2];頁=「第二三頁」樣式 / 邊界各2公分
   注意: 頁碼在下方時, 若沒設下邊界值, 頁碼不會出現。

## 七、列印條碼

1. 控制台新增字型 (安裝目錄下):
   C39.TTF  : Code39, 字型名 C39P24DlTt
   C39_1.TTF: Code39, 字型名 C39HrP24DlTt (條碼下端含數字)
   EAN.TTF  : EAN, 字型名 EanP36xTt
   EAN_1.TTF: EAN, 字型名 EanP36Tt (條碼下端含數字)
2. 檔案中使用 ~[EF;..]、~E 指令。
3. 例:
   ~[EF;C39P24DlTt];~E;
   ~T48;*1234567890* ~T24;
4. 數字前後要加辨識字元 (Code39 加 * 星號)。
5. ~[EF;..]=指定英數字形, ~E=半形字用英文字型。

---
## 附註 (歸檔時補充)
- QRCODE: 使用者稱有支援, 本文件未載, 語法待從 prn_to_pdf.prg 確認補入。
- ~H (畫線?): 於顏色章節被提及「~OLn 影響底線、上線、~H」, 本文件未有專章, 語法待確認補入。
- prn_to_pdf.prg 另見: ~[GV] 背景圖 statics、C39/EAN/Code128 TTF 自動註冊、紙張 W210H297(mm) 格式。

## 附註二 (2026-07-11 自 prn_to_pdf.prg 補齊)

### ~Hn; 整幅水平線
- 畫滿版水平線於目前游標列。n=線寬(單位 1/180 英吋); n=0 或省略=預設 0.5pt。
- 顏色由 ~OLn 設定(同底線/上線)。
- 例: ~H2; 畫一條約 2/180" 粗的滿版線。

### ~[QR;...] QR Code
- ~[QR;內容]            : 游標位置, 預設尺寸
- ~[QR;內容;尺寸]        : 游標位置, 指定尺寸
- ~[QR;內容;x;y]        : 絕對定位(mil), 預設尺寸
- ~[QR;內容;x;y;尺寸]    : 絕對定位+尺寸
- 內容可為 ASCII 或 BIG5; 尺寸/座標單位 1/1000 英吋(1000 = 1 吋; 100 = 一欄10CPI; 167 約一行12pt); x,y 省略=游標位置。


## 附註三: 條碼 (2026-07-11 新增)

### 向量條碼 ~[BC;類型;內容;x;y;寬;高]
- 由 hbzebra 內建產生逐模組向量繪製: 免字型檔、免 Python、離線可用; GDI 預覽/直印與 PDF 同源。
- 類型: C39 / C128 / EAN13 / EAN8 / PDF417 / DM(DataMatrix)。
- 內容: 靜態文字, 或「表->欄位」(渲染時由引擎代入實際值; 空值輸出同寬空白, 版面對齊不塌)。內容不可含分號。
- x,y: 絕對位置(mil), 省略=流式(目前游標/目前列, 條碼與該列文字同帶)。
- 寬,高: mil(1000=1吋), 省略/0=類型預設(1D=3000x500, EAN=2000x750, PDF417 列高自動 3 倍模組, DM=1000 正方,
  DM 為矩形符號時自動保持模組正方)。
- 行內佔寬: 流式條碼佔有實體寬度, 游標右移條碼寬, 同行文字接在右側; 高度方向為覆蓋式, 版面自留列數。
- 範例: ~[BC;C39;ABC-123]  /  ~[BC;C39;ACTSUB->CREALNO;;;1111;167]  (寬160點x高24點=一行)

### 字型條碼 ~[EF;字型名]~E; (需安裝 TTF 字型)
- 字型: C39.TTF=C39P24DlTt / C39_1.TTF=C39HrP24DlTt(含數字) / EAN.TTF=EanP36xTt / EAN_1.TTF=EanP36Tt(含數字)。
- 用法: ~[EF;C39P24DlTt]~E;~T48;*1234567890*~T24;~FM;  (Code39 內容前後須加 * 辨識字元)
- ~E=半形字用英數字型, 印完以 ~T24;~FM; 恢復標準字高/明體; 條碼為文字流一部分, 照常佔行。

### 單位速查
- 1 吋 = 1000 mil = 144 點(半點, ~T 單位)
- 一行(~T24) = 24 點 = 167 mil ; 一欄(10CPI) = 100 mil
