[{"data":1,"prerenderedAt":242},["ShallowReactive",2],{"lit-docx-doc:\u002Fguide\u002Fround-trip":3},{"id":4,"title":5,"body":6,"description":227,"extension":228,"keywords":229,"locale":233,"meta":234,"navigation":235,"order":236,"path":237,"section":238,"seo":239,"stem":240,"__hash__":241},"docs\u002Fguide\u002Fround-trip.zh-CN.md","往返与保留",{"type":7,"value":8,"toc":214},"minimark",[9,30,34,38,41,44,62,73,76,83,99,102,105,130,133,136,143,193,196,200],[10,11,12,13,17,18,21,22,24,25,29],"p",{},"“往返”指 ",[14,15,16],"code",{},"parseDocx"," 读入一个文件，修改或不修改 LitAST，再用 ",[14,19,20],{},"generateDocx"," 写回。",[14,23,20],{}," 总是根据 LitAST ",[26,27,28],"strong",{},"重建整个包","，而不是在原 ZIP 上打补丁，所以能写回什么，取决于 LitAST 里保存了什么。",[31,32,33],"h2",{"id":33},"三种保留方式",[35,36,37],"h3",{"id":37},"按语义重建",[10,39,40],{},"被识别的内容（段落、文字格式、表格、图片、页眉页脚、域、内容控件、批注、修订等）会转成对应的节点，写回时从节点重新生成 OOXML。修改这些节点，改动就会体现在输出文件里。",[35,42,43],{"id":43},"原样保留的元素",[10,45,46,47,50,51,54,55,58,59,61],{},"无法识别的元素会变成 ",[14,48,49],{},"unknownBlock","（块级）或 ",[14,52,53],{},"unknownInline","（行内）节点，原始结构存放在 ",[14,56,57],{},"rawXml"," 中，写回时原样输出。",[14,60,57],{}," 是内部序列化格式，不是 XML 字符串，不要手动修改它。",[10,63,64,65,68,69,72],{},"解析时传入 ",[14,66,67],{},"preserveRawXml: false"," 会直接丢弃这些元素。公式（OMML）始终以原始结构保留在 ",[14,70,71],{},"math"," 节点中，不受这个选项影响。",[35,74,75],{"id":75},"原样保留的部件",[10,77,78,79,82],{},"以下部件保存在 ",[14,80,81],{},"ast.meta.rawXmlFiles"," 中，写回时原样输出：",[84,85,86,90,93,96],"ul",{},[87,88,89],"li",{},"样式、编号定义、文档设置、字体表、主题",[87,91,92],{},"核心属性与自定义属性",[87,94,95],{},"批注及其扩展部件、批注人员列表",[87,97,98],{},"脚注、尾注",[10,100,101],{},"图表的源数据（图表部件与内嵌工作簿）也会原样保留并写回，但不能通过 LitAST 新建或修改图表。",[31,103,104],{"id":104},"拼音指南",[10,106,107,110,111,114,115,118,119,122,123,126,127,129],{},[14,108,109],{},"ruby"," 会写回原生 ",[14,112,113],{},"w:ruby","，基文和注音分别保存在 ",[14,116,117],{},"children"," 与 ",[14,120,121],{},"attrs.rubyText","。\n修改任一层文字或已建模属性后，生成器使用当前值；未改的普通 run 格式、未知 rubyPr\n属性及显式零值\u002Ffalse 保留在 ",[14,124,125],{},"_rubyPreservation"," 中。不要手工修改该内部来源记录。\n",[14,128,67],{}," 不会关闭这份专用保全记录。",[10,131,132],{},"包含关系或范围标识的内容不会直接重放旧 XML。整个 ruby 的超链接经公共关系分配器重建；\n文字层内部的超链接不符合 OOXML ruby 内容模型，会拒绝导出。复杂嵌套域、批注、修订的\n完整生命周期尚未验收，不承诺跨生产者无损。已验证 Word 16.109.2 的重开\u002F编辑保存，\n以及 WPS 12.1.28496 的普通横排样本显示；其余生产者和复杂组合仍未验收。",[31,134,135],{"id":135},"会丢失的内容",[10,137,138,139,142],{},"以下内容目前在往返后",[26,140,141],{},"不会","保留：",[144,145,146,159],"table",{},[147,148,149],"thead",{},[150,151,152,156],"tr",{},[153,154,155],"th",{},"内容",[153,157,158],{},"说明",[160,161,162,175,185],"tbody",{},[150,163,164,168],{},[165,166,167],"td",{},"文档部件库（glossary）",[165,169,170,171,174],{},"读取时记录在 ",[14,172,173],{},"rawXmlFiles.glossaryXml","，但不会写回",[150,176,177,180],{},[165,178,179],{},"自定义 XML 部件",[165,181,170,182,174],{},[14,183,184],{},"ast.meta.customXmlParts",[150,186,187,190],{},[165,188,189],{},"上面清单之外的其他部件",[165,191,192],{},"不会被复制到输出文件中",[10,194,195],{},"如果你的场景依赖这些内容，请在写回后自行检查输出文件。",[31,197,199],{"id":198},"保存-litast","保存 LitAST",[10,201,202,203,206,207,210,211,213],{},"LitAST 可以直接用 ",[14,204,205],{},"JSON.stringify"," 保存，",[14,208,209],{},"JSON.parse"," 读回后仍可交给 ",[14,212,20],{},"，原样保留的内容也会一并写回。",{"title":215,"searchDepth":216,"depth":216,"links":217},"",2,[218,224,225,226],{"id":33,"depth":216,"text":33,"children":219},[220,222,223],{"id":37,"depth":221,"text":37},3,{"id":43,"depth":221,"text":43},{"id":75,"depth":221,"text":75},{"id":104,"depth":216,"text":104},{"id":135,"depth":216,"text":135},{"id":198,"depth":216,"text":199},"读入一个 DOCX 再写回时，哪些内容按语义重建、哪些原样保留、哪些会丢失。","md",[230,231,57,49,232],"往返","保留","丢失","zh-CN",{},true,4,"\u002Fguide\u002Fround-trip","指南",{"title":5,"description":227},"guide\u002Fround-trip.zh-CN","4DnNfnVB1eBTAaGVssJHQ68nChJoUB6EiewS45GDaaQ",1793045344143]