Skip to content

[1304] 导出PDF开启嵌入附件时后缀自动联动为 .tmu.pdf + 草稿文档使用对应文件名 - #4583

Merged
da-liii merged 6 commits into
mainfrom
da/1304/export_pdf
Sep 16, 2026
Merged

da-liii merged 6 commits into
mainfrom
da/1304/export_pdf

Conversation

@da-liii

@da-liii da-liii commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

What

  1. 开启「将源文档作为附件嵌入PDF」(Embed source document)选项时,导出的目的地文件名后缀自动改为 .tmu.pdf;关闭该选项时,后缀自动恢复为 .pdf。同时在浏览(Browse)选择新路径以及后端导出兜底逻辑中保证该后缀联动规则。
  2. 草稿文档(scratch buffer)在导出 PDF 时,使用草稿对应的文件名(如 draft_20260905_120000.pdf),而非回退为 untitled.pdf

Why

  1. 在导出 PDF 时,若勾选了源文档嵌入为附件,生成的文件是包含 tmu 附件的可编辑 PDF。遵循 Mogan 的命名约定,嵌入附件的 PDF 应当以 .tmu.pdf 为后缀,普通 PDF 应当以 .pdf 为后缀。此前弹窗内联路径后,目的地路径未随开关勾选联动,导致勾选嵌入后默认导出的文件名仍为 .pdf
  2. 草稿文档在磁盘上有其真实的草稿路径及唯一文件名(形如 draft_YYYYMMDD_HHMMSS.tmu)。原先 propose-name-buffer 针对草稿返回 pwd"" 供「另存为」对话框输入文件名,导致导出 PDF 时未能取到草稿实际文件名而退化为 untitled.pdf。草稿导出 PDF 时直接以其草稿文件名作为建议文件名更符合用户直觉。

How

  1. QML 前端 (src/Plugins/Qt/qml/ExportPdf.qml)
    • 增加 adjustPathSuffix(path, embedOn) 工具函数:开启嵌入时将 .pdf 后缀替换为 .tmu.pdf(若已有 .tmu.pdf 则保持,无后缀则追加 .tmu.pdf);关闭嵌入时将 .tmu.pdf 替换回 .pdf
    • 提取 onToggleChanged(key, on) 处理函数:在切换 toggle 开关时,若为 embed 选项,则自动同步更新 pathKey 对应路径的后缀并赋新对象刷新 pathValue 绑定。
    • values 初始化阶段:若初始 embed"true",自动对路径后缀进行调整。
    • 「浏览」按钮 (browseBtn):选择新路径后,若当前已开启 embed,新路径同样自动调整后缀为 .tmu.pdf
  2. Scheme 后端 (TeXmacs/progs/texmacs/texmacs/tm-print.scm)
    • 更新 propose-export-pdf-name 函数:支持可选传入 master。若为草稿文档(url-scratch?),直接从其 URL 提取真实文件名(去 .tmu/.stem 后缀),生成形如 draft_YYYYMMDD_HHMMSS.pdf;普通文档及协作云文档保持原有标题与建议名逻辑。
    • 更新 export-pdf-ensure-suffix 函数:支持传入可选的 embed 参数。若开启嵌入,确保后缀为 .tmu.pdf;若未开启,兜底 .pdf 后缀。
    • export-as-pdf 调用 (export-pdf-ensure-suffix fname embed) 保证后端落盘一致性。
  3. 测试
    • tests/Plugins/Qt/qml_load_test.cpp:验证 onToggleChanged 切换开启与关闭时 pathValuevalues 的联动;验证 adjustPathSuffix 在各类输入下的后缀调整逻辑。
    • TeXmacs/progs/texmacs/texmacs/tests/export-pdf-default-dir-test.scm:验证 export-pdf-ensure-suffix 传入嵌入参数时的各边界情况;验证草稿文档(.tmu.stem)导出 PDF 时的建议文件名。

测试方法

  • C++ 单元测试:xmake b qml_load_test && xmake r qml_load_test
  • Scheme 单元测试:xmake r export-pdf-default-dir-test
  • 手动测试:
    1. 新建草稿文档,点击「文件」->「导出为PDF...」,观察默认文件名是否为草稿名(如 draft_...pdf)而非 untitled.pdf
    2. 勾选「将源文档作为附件嵌入PDF」,观察导出目的地文件名后缀是否变为 .tmu.pdf;取消勾选观察是否恢复为 .pdf

@MoonL79 MoonL79 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@da-liii
da-liii merged commit 3d93ab5 into main Sep 16, 2026
6 checks passed
@da-liii
da-liii deleted the da/1304/export_pdf branch September 16, 2026 09:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants