Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

182 lines
4.6 KiB
JSON

{
"$schema": "../_schema.json",
"format": "docx",
"element": "footer",
"parent": "/",
"addParent": "/",
"operations": {
"add": true,
"set": true,
"get": true,
"query": true,
"remove": true
},
"paths": {
"positional": [
"/footer[N]"
]
},
"note": "Mirror of header.json — same surface, stored in FooterParts. Duplicate type per section rejected at Add. A single Add supports at most one text + one field pair. For composite footers like 'Page X of Y' (two fields + literal text), create the footer first, then Add additional runs/fields to its paragraph (/footer[N]/p[1]) one by one — see examples.",
"examples": [
"Simple page-number footer: officecli add file.docx / --type footer --prop field=page --prop align=center",
"'Page X of Y' — must be built in steps after creating the footer:",
" 1) officecli add file.docx / --type footer --prop text=\"Page \" --prop align=center",
" 2) officecli add file.docx \"/footer[1]/p[1]\" --type field --prop fieldType=page",
" 3) officecli add file.docx \"/footer[1]/p[1]\" --type run --prop text=\" of \"",
" 4) officecli add file.docx \"/footer[1]/p[1]\" --type field --prop fieldType=numpages"
],
"properties": {
"type": {
"type": "enum",
"values": [
"default",
"first",
"even"
],
"aliases": [
"kind",
"ref"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop type=default"
],
"readback": "innerText of HeaderFooterValues",
"enforcement": "strict"
},
"text": {
"type": "string",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop text=\"My Footer\""
],
"readback": "concatenated Text.Descendants",
"enforcement": "strict"
},
"align": {
"type": "enum",
"values": [
"left",
"center",
"right",
"justify",
"both",
"distribute"
],
"aliases": [
"alignment"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop align=center"
],
"readback": "first-paragraph Justification.Val.InnerText",
"enforcement": "strict"
},
"direction": {
"type": "enum",
"values": [
"rtl",
"ltr"
],
"aliases": [
"dir",
"bidi"
],
"description": "Reading direction. 'rtl' writes <w:bidi/> on the footer paragraph, <w:rtl/> on the paragraph mark, and <w:rtl/> on every run (text + field runs alike) so Arabic / Hebrew character order reverses end-to-end. 'ltr' clears all three.",
"add": true,
"set": true,
"get": false,
"examples": [
"--prop direction=rtl"
],
"enforcement": "strict"
},
"font": {
"type": "string",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop font=\"Arial\""
],
"readback": "Ascii or HighAnsi font name",
"enforcement": "strict"
},
"size": {
"type": "font-size",
"description": "font size. Accepts bare number or pt-suffixed.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop size=12"
],
"readback": "unit-qualified pt",
"enforcement": "strict"
},
"bold": {
"type": "bool",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop bold=true"
],
"readback": "true when bold, key absent otherwise",
"enforcement": "strict"
},
"italic": {
"type": "bool",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop italic=true"
],
"readback": "true when italic, key absent otherwise",
"enforcement": "strict"
},
"color": {
"type": "color",
"description": "font color. Accepts #RRGGBB, RRGGBB, named colors (red, blue…), rgb(r,g,b), or 3-char shorthand (F00).",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop color=#FF0000"
],
"readback": "#-prefixed uppercase hex",
"enforcement": "strict"
},
"field": {
"type": "enum",
"values": [
"page",
"pagenum",
"pagenumber",
"numpages",
"date",
"author",
"title",
"time",
"filename"
],
"add": true,
"set": false,
"get": false,
"examples": [
"--prop field=page"
],
"readback": "not surfaced as a distinct key",
"enforcement": "strict"
}
}
}