﻿======== V4.9 修整·修1 页码范围解析全角归一化（PrintCore.ParseRange） ========
— 修1 全角归一化："１"→0基[0]；"３－５"→[2,3,4]；"1，３-５"→[0,2,3,4]；"99"/12 页→0 个（空集）；"1,3-5"/8 页→[0,2,3,4]（既有行为）
    UsesFullWidthInput："３－５"=True "3-5"=False "１"=True；区间护栏："1-999999999" 解析出 100000 个页码、按 12 页过滤后打 12 页
    清单压缩：[1,2,3,5]→"1-3、5"；1..20→"1-20"；1..39 奇数（20 段）取 8 段→"1、3、5、7、9、11、13、15、…"
======== V4.9 修整·修6 前提核对：打印计划（PrintPlan）行为零改动 ========
— 修6 打印计划零变化："99"/12 页→12 页[0,1,2…]；"1-8,13"→8 页；"3-5"→3 页；未填→12 页；全角"３－５"→3 页[2,3,4]
======== V4.9 修整·修2/3/4/5/6 呈现层（真实列表行 + 可视树实取；浅/深/英文三遍） ========
======== 浅色中文 ========
— 主题键：黄=#8E6525/a255 绿=#3E7423/a255 红=#AC4C4C/a255
    黄字对比度 GridRowBgBrush 5.20 GridRowHoverBrush 4.77 GridRowSelectedBrush 4.77（最差 4.77；同批绿 5.17）
    全部有效：范围="1" 页数列="1/12 页"（前景 #3E7423，期望 #3E7423）种类=Ok 样式=TextBlock←BasedOn:TextBlock 文案需宽=48.8 实得=59.2/72
    部分超出：范围="1-8,13" 页数列="8/12 页"（前景 #8E6525，期望 #8E6525）种类=Partial 样式=TextBlock←BasedOn:TextBlock 文案需宽=48.8 实得=59.2/72
    零有效：范围="99" 页数列="未生效"（前景 #AC4C4C，期望 #AC4C4C）种类=Invalid 样式=TextBlock←BasedOn:TextBlock 文案需宽=42 实得=59.2/72
    未填范围：范围="" 页数列="12 页"（前景 #201F1E，期望 #201F1E）种类=Empty 样式=TextBlock←BasedOn:TextBlock 文案需宽=34.6 实得=59.2/72
    全角输入：范围="３－５" 页数列="3/12 页"（前景 #3E7423，期望 #3E7423）种类=Ok 样式=TextBlock←BasedOn:TextBlock 文案需宽=48.8 实得=59.2/72
    Office 未转换（页数未知）：范围="3" 页数列="—"（前景 #3E7423，期望 #3E7423）种类=UnknownOk 样式=TextBlock←BasedOn:TextBlock 文案需宽=15.1 实得=59.2/72
    列宽实测：单元格实得 59.2 DIP（列宽 72），几种写法需宽 "8/12 页"=48.8 "8/12页"=44.6 "8/12"=30.6 "100/120 页"=73.4 "100/120"=55.2 "未生效"=42 "invalid"=43.9 "12 页"=34.6；本版页数列文案="{0}/{1} 页" 短文="未生效"
    逐键：PropertyChanged(PagesText) 次数=3 依次="12 页" ｜1/12 页 ｜3/12 页 ｜12 页
    修5 范围="1"：页数列提示="✓ 将打印第 1 页，共 1/12 页" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="1-8,13"：页数列提示="⚠ 8 页生效（第 1-8 页），1 个页码超出已忽略" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="99"：页数列提示="✗ 未识别到有效页码，将按全部 12 页打印" 范围格提示与 VM 同=True 延迟=1000
    修5 范围=""：页数列提示="未填页码范围，将打印全部 12 页" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="３－５"：页数列提示="✓ 将打印第 3-5 页，共 3/12 页⏎已自动兼容全角输入" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="3"：页数列提示="✓ 写法有效（第 3 页），总页数要等打印时转换后才知" 范围格提示与 VM 同=True 延迟=1000
    修3 气泡节点：Popup 取得=True 锚定输入框=True 不接收焦点=True 初始收起=True
    修3 聚焦（事件方法体）：落点朝下＋offset 2＝True，气泡文本="✓ 将打印第 1 页，共 1/12 页" 与页数列同源=True；失焦→IsOpen=False（收＝True）
    修3 环境对照：无头窗口里 IsOpen 置真后实取＝False（聚焦后＝False；Popup 需要 PlacementTarget 有 PresentationSource 才能落浮层，本机自检窗口从未上屏 → 浮层可见性交渲染特写与真机复验）
    修3 朝上分支：Placement=Top VerticalOffset=-2 映射＝True
    修3 三类结论：✓"✓ 将打印第 1 页，共 1/12 页" ⚠"⚠ 8 页生效（第 1-8 页），1 个页码超出已忽略" ✗"✗ 未识别到有效页码，将按全部 12 页打印"；全角加注行="已自动兼容全角输入"
    修3 翻转判据（锚点下沿/工作区底/所需高）：600,1040,60→朝上=False；1000,1040,60→True；1033,1040,60→True
    铁律：RowHeight=36；实生成行 6 行，行高去重=[36.8]
    修2 Office 回填：总页数 0→12，页数列="1/12 页"（#3E7423）种类=Ok
    修4 红字：无效行 #AC4C4C（期望 #AC4C4C）、有效行 #000000；尝试真实键盘焦点=失败（无头窗口不合焦，红框改断样式结构）
    修4 复原：改成 "3" 后 #000000（不再红＝True），改回 "99" 又红＝True
    修4 样式结构（Data[IsRangeInvalid=True:String] / Multi[IsRangeInvalid=True+IsKeyboardFocused=True]）：红字触发器认 IsRangeInvalid=True；"无效+聚焦"多条件触发器加 BorderThickness/BorderBrush=True
    修6 无效行：状态="⚠ 范围无效，已按全部 12 页打印" 种类=RangeInvalid 前景=#8E6525 样式=TextBlock←BasedOn:TextBlock 文字宽/列宽=63.2/76（超宽靠截断，不折行）
    修6 部分超出行：状态="已完成" 种类=Done（只 1 个页码越界，不算无效，不告警）；文件日志含"忽略 1 个超范围页码"＝True（回读尝试 0 次；日志目录=C:\Users\86137\Desktop\Workspace\project-009-Printpool汉化\work\批量打印助手.v4.9-free\logs；回读内容头="（仅显示最近 40 行，完整日志见文件）
 [2026-10-03 09:41:17] 提示：把 PDF/Word/Ex" 尾="026-10-03 09:41:40] 忽略 1 个超范围页码
 [2026-10-03 09:41:40] 忽略 1 个超范围页码
 
 "）
    铁律（警告上屏后）：行高去重=[36.8]（RowHeight 36）
    修2 退档：总页数 120 → 页数列="100/120"（需宽 55.2 ≤ 实得 59.2；带单位要 73.4，故退短文），提示="✓ 将打印第 1-100 页，共 100/120 页"
======== 深色中文 ========
— 主题键：黄=#E6A23C/a255 绿=#95D475/a255 红=#F89898/a255
    黄字对比度 GridRowBgBrush 6.83 GridRowHoverBrush 6.38 GridRowSelectedBrush 5.34（最差 5.34；同批绿 6.65）
    全部有效：范围="1" 页数列="1/12 页"（前景 #95D475，期望 #95D475）种类=Ok 样式=TextBlock←BasedOn:TextBlock 文案需宽=48.8 实得=59.2/72
    部分超出：范围="1-8,13" 页数列="8/12 页"（前景 #E6A23C，期望 #E6A23C）种类=Partial 样式=TextBlock←BasedOn:TextBlock 文案需宽=48.8 实得=59.2/72
    零有效：范围="99" 页数列="未生效"（前景 #F89898，期望 #F89898）种类=Invalid 样式=TextBlock←BasedOn:TextBlock 文案需宽=42 实得=59.2/72
    未填范围：范围="" 页数列="12 页"（前景 #FFFFFF，期望 #FFFFFF）种类=Empty 样式=TextBlock←BasedOn:TextBlock 文案需宽=34.6 实得=59.2/72
    全角输入：范围="３－５" 页数列="3/12 页"（前景 #95D475，期望 #95D475）种类=Ok 样式=TextBlock←BasedOn:TextBlock 文案需宽=48.8 实得=59.2/72
    Office 未转换（页数未知）：范围="3" 页数列="—"（前景 #95D475，期望 #95D475）种类=UnknownOk 样式=TextBlock←BasedOn:TextBlock 文案需宽=15.1 实得=59.2/72
    列宽实测：单元格实得 59.2 DIP（列宽 72），几种写法需宽 "8/12 页"=48.8 "8/12页"=44.6 "8/12"=30.6 "100/120 页"=73.4 "100/120"=55.2 "未生效"=42 "invalid"=43.9 "12 页"=34.6；本版页数列文案="{0}/{1} 页" 短文="未生效"
    逐键：PropertyChanged(PagesText) 次数=3 依次="12 页" ｜1/12 页 ｜3/12 页 ｜12 页
    修5 范围="1"：页数列提示="✓ 将打印第 1 页，共 1/12 页" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="1-8,13"：页数列提示="⚠ 8 页生效（第 1-8 页），1 个页码超出已忽略" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="99"：页数列提示="✗ 未识别到有效页码，将按全部 12 页打印" 范围格提示与 VM 同=True 延迟=1000
    修5 范围=""：页数列提示="未填页码范围，将打印全部 12 页" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="３－５"：页数列提示="✓ 将打印第 3-5 页，共 3/12 页⏎已自动兼容全角输入" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="3"：页数列提示="✓ 写法有效（第 3 页），总页数要等打印时转换后才知" 范围格提示与 VM 同=True 延迟=1000
    修3 气泡节点：Popup 取得=True 锚定输入框=True 不接收焦点=True 初始收起=True
    修3 聚焦（事件方法体）：落点朝下＋offset 2＝True，气泡文本="✓ 将打印第 1 页，共 1/12 页" 与页数列同源=True；失焦→IsOpen=False（收＝True）
    修3 环境对照：无头窗口里 IsOpen 置真后实取＝False（聚焦后＝False；Popup 需要 PlacementTarget 有 PresentationSource 才能落浮层，本机自检窗口从未上屏 → 浮层可见性交渲染特写与真机复验）
    修3 朝上分支：Placement=Top VerticalOffset=-2 映射＝True
    修3 三类结论：✓"✓ 将打印第 1 页，共 1/12 页" ⚠"⚠ 8 页生效（第 1-8 页），1 个页码超出已忽略" ✗"✗ 未识别到有效页码，将按全部 12 页打印"；全角加注行="已自动兼容全角输入"
    修3 翻转判据（锚点下沿/工作区底/所需高）：600,1040,60→朝上=False；1000,1040,60→True；1033,1040,60→True
    铁律：RowHeight=36；实生成行 6 行，行高去重=[36.8]
    修2 Office 回填：总页数 0→12，页数列="1/12 页"（#95D475）种类=Ok
    修4 红字：无效行 #F89898（期望 #F89898）、有效行 #FFFFFF；尝试真实键盘焦点=失败（无头窗口不合焦，红框改断样式结构）
    修4 复原：改成 "3" 后 #FFFFFF（不再红＝True），改回 "99" 又红＝True
    修4 样式结构（Data[IsRangeInvalid=True:String] / Multi[IsRangeInvalid=True+IsKeyboardFocused=True]）：红字触发器认 IsRangeInvalid=True；"无效+聚焦"多条件触发器加 BorderThickness/BorderBrush=True
    修6 无效行：状态="⚠ 范围无效，已按全部 12 页打印" 种类=RangeInvalid 前景=#E6A23C 样式=TextBlock←BasedOn:TextBlock 文字宽/列宽=63.2/76（超宽靠截断，不折行）
    修6 部分超出行：状态="已完成" 种类=Done（只 1 个页码越界，不算无效，不告警）；文件日志含"忽略 1 个超范围页码"＝True（回读尝试 0 次；日志目录=C:\Users\86137\Desktop\Workspace\project-009-Printpool汉化\work\批量打印助手.v4.9-free\logs；回读内容头="（仅显示最近 40 行，完整日志见文件）
 [2026-10-03 09:41:20] Tip: drag PDF/Wo" 尾="026-10-03 09:41:42] 忽略 1 个超范围页码
 [2026-10-03 09:41:42] 忽略 1 个超范围页码
 
 "）
    铁律（警告上屏后）：行高去重=[36.8]（RowHeight 36）
    修2 退档：总页数 120 → 页数列="100/120"（需宽 55.2 ≤ 实得 59.2；带单位要 73.4，故退短文），提示="✓ 将打印第 1-100 页，共 100/120 页"
======== 浅色英文 ========
— 主题键：黄=#8E6525/a255 绿=#3E7423/a255 红=#AC4C4C/a255
    黄字对比度 GridRowBgBrush 5.20 GridRowHoverBrush 4.77 GridRowSelectedBrush 4.77（最差 4.77；同批绿 5.17）
    全部有效：范围="1" 页数列="1/12"（前景 #3E7423，期望 #3E7423）种类=Ok 样式=TextBlock←BasedOn:TextBlock 文案需宽=30.6 实得=59.2/72
    部分超出：范围="1-8,13" 页数列="8/12"（前景 #8E6525，期望 #8E6525）种类=Partial 样式=TextBlock←BasedOn:TextBlock 文案需宽=30.6 实得=59.2/72
    零有效：范围="99" 页数列="invalid"（前景 #AC4C4C，期望 #AC4C4C）种类=Invalid 样式=TextBlock←BasedOn:TextBlock 文案需宽=43.9 实得=59.2/72
    未填范围：范围="" 页数列="12 页"（前景 #201F1E，期望 #201F1E）种类=Empty 样式=TextBlock←BasedOn:TextBlock 文案需宽=34.6 实得=59.2/72
    全角输入：范围="３－５" 页数列="3/12"（前景 #3E7423，期望 #3E7423）种类=Ok 样式=TextBlock←BasedOn:TextBlock 文案需宽=30.6 实得=59.2/72
    Office 未转换（页数未知）：范围="3" 页数列="—"（前景 #3E7423，期望 #3E7423）种类=UnknownOk 样式=TextBlock←BasedOn:TextBlock 文案需宽=15.1 实得=59.2/72
    列宽实测：单元格实得 59.2 DIP（列宽 72），几种写法需宽 "8/12 页"=48.8 "8/12页"=44.6 "8/12"=30.6 "100/120 页"=73.4 "100/120"=55.2 "未生效"=42 "invalid"=43.9 "12 页"=34.6；本版页数列文案="{0}/{1}" 短文="invalid"
    逐键：PropertyChanged(PagesText) 次数=3 依次="12 页" ｜1/12 ｜3/12 ｜12 页
    修5 范围="1"：页数列提示="✓ Prints pages 1 - 1 of 12 pages" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="1-8,13"：页数列提示="⚠ 8 pages print (pages 1-8); 1 page numbers are out of range and were ignored" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="99"：页数列提示="✗ No valid page number - all 12 pages will print" 范围格提示与 VM 同=True 延迟=1000
    修5 范围=""：页数列提示="No page range - all 12 pages print" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="３－５"：页数列提示="✓ Prints pages 3-5 - 3 of 12 pages⏎Full-width digits were accepted automatically" 范围格提示与 VM 同=True 延迟=1000
    修5 范围="3"：页数列提示="✓ Format is fine (pages 3); the page total is only known after the conversion at print time" 范围格提示与 VM 同=True 延迟=1000
    修3 气泡节点：Popup 取得=True 锚定输入框=True 不接收焦点=True 初始收起=True
    修3 聚焦（事件方法体）：落点朝下＋offset 2＝True，气泡文本="✓ Prints pages 1 - 1 of 12 pages" 与页数列同源=True；失焦→IsOpen=False（收＝True）
    修3 环境对照：无头窗口里 IsOpen 置真后实取＝False（聚焦后＝False；Popup 需要 PlacementTarget 有 PresentationSource 才能落浮层，本机自检窗口从未上屏 → 浮层可见性交渲染特写与真机复验）
    修3 朝上分支：Placement=Top VerticalOffset=-2 映射＝True
    修3 三类结论：✓"✓ Prints pages 1 - 1 of 12 pages" ⚠"⚠ 8 pages print (pages 1-8); 1 page numbers are out of range and were ignored" ✗"✗ No valid page number - all 12 pages will print"；全角加注行="Full-width digits were accepted automatically"
    修3 翻转判据（锚点下沿/工作区底/所需高）：600,1040,60→朝上=False；1000,1040,60→True；1033,1040,60→True
    铁律：RowHeight=36；实生成行 6 行，行高去重=[36.8]
    修2 Office 回填：总页数 0→12，页数列="1/12"（#3E7423）种类=Ok
    修4 红字：无效行 #AC4C4C（期望 #AC4C4C）、有效行 #000000；尝试真实键盘焦点=失败（无头窗口不合焦，红框改断样式结构）
    修4 复原：改成 "3" 后 #000000（不再红＝True），改回 "99" 又红＝True
    修4 样式结构（Data[IsRangeInvalid=True:String] / Multi[IsRangeInvalid=True+IsKeyboardFocused=True]）：红字触发器认 IsRangeInvalid=True；"无效+聚焦"多条件触发器加 BorderThickness/BorderBrush=True
    修6 无效行：状态="⚠ Range ignored - printed all 12 pages" 种类=RangeInvalid 前景=#8E6525 样式=TextBlock←BasedOn:TextBlock 文字宽/列宽=63.2/76（超宽靠截断，不折行）
    修6 部分超出行：状态="Done" 种类=Done（只 1 个页码越界，不算无效，不告警）；文件日志含"Ignored 1 out-of-range page number(s)"＝True（回读尝试 0 次；日志目录=C:\Users\86137\Desktop\Workspace\project-009-Printpool汉化\work\批量打印助手.v4.9-free\logs；回读内容头="（仅显示最近 40 行，完整日志见文件）
 [2026-10-03 09:41:22] 提示：把 PDF/Word/Ex" 尾="er(s)
 [2026-10-03 09:41:44] Ignored 1 out-of-range page number(s)
 
 "）
    铁律（警告上屏后）：行高去重=[36.8]（RowHeight 36）
    修2 退档：总页数 120 → 页数列="100/120"（需宽 55.2 ≤ 实得 59.2；带单位要 55.2，故退短文），提示="✓ Prints pages 1-100 - 100 of 120 pages"
======== 中英资源键（新增 13 枚） ========
— 中文：新增 13 枚，缺=0；越界占位符=0；警告样例行="⚠ 范围无效，已按全部 12 页打印"；页数列短文="8/12 页"
— 英文：新增 13 枚，缺=0；越界占位符=0；警告样例行="⚠ Range ignored - printed all 12 pages"；页数列短文="8/12"
