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
324 lines
8.6 KiB
JSON
324 lines
8.6 KiB
JSON
{
|
|
"$schema": "../_schema.json",
|
|
"format": "xlsx",
|
|
"element": "picture",
|
|
"elementAliases": ["image", "img"],
|
|
"parent": "sheet",
|
|
"operations": {
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"query": true,
|
|
"remove": true
|
|
},
|
|
"paths": {
|
|
"positional": [
|
|
"/SheetName/picture[N]"
|
|
]
|
|
},
|
|
"note": "Aliases: image, img. Anchor via ParseAnchorBoundsEmu — accepts cell counts or unit-qualified lengths. SVG sources get a PNG fallback.",
|
|
"extends": [
|
|
"_shared/picture",
|
|
"_shared/picture.docx-xlsx",
|
|
"_shared/picture.pptx-xlsx"
|
|
],
|
|
"properties": {
|
|
"crop": {
|
|
"type": "string",
|
|
"description": "Crop in percent (0-100). 1 value = symmetric, 2 values = vertical,horizontal, 4 values = left,top,right,bottom. Excel reads but does not write crops — overrides shared base which marks add/set true (pptx-only writability).",
|
|
"add": false,
|
|
"set": false,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop crop=10"
|
|
],
|
|
"readback": "comma-separated percentages (left,top,right,bottom)",
|
|
"enforcement": "report"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "OOXML @title attribute on cNvPr (distinct from alt).",
|
|
"add": true,
|
|
"set": false,
|
|
"examples": [
|
|
"--prop title=\"Logo\""
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"decorative": {
|
|
"type": "bool",
|
|
"description": "Mark the picture as decorative (a16:decorative ext under cNvPr). Excludes it from screen-reader alt-text traversal.",
|
|
"add": true,
|
|
"set": false,
|
|
"examples": [
|
|
"--prop decorative=true"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"rotation": {
|
|
"type": "string",
|
|
"description": "Rotation in degrees (positive = clockwise). Stored OOXML-internal as 60000ths of a degree on Transform2D @rot.",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop rotation=45"
|
|
],
|
|
"readback": "rotation in degrees (rounded)",
|
|
"enforcement": "report"
|
|
},
|
|
"flip": {
|
|
"type": "string",
|
|
"description": "Compact flip token: 'h' / 'v' / 'both' / 'hv' / 'vh' / 'horizontal' / 'vertical'.",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop flip=h",
|
|
"--prop flip=both"
|
|
],
|
|
"readback": "h / v / both",
|
|
"enforcement": "report"
|
|
},
|
|
"flipH": {
|
|
"type": "bool",
|
|
"description": "Flip horizontally (Office-API-style alias of flip=h).",
|
|
"add": true,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop flipH=true"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"flipV": {
|
|
"type": "bool",
|
|
"description": "Flip vertically (Office-API-style alias of flip=v).",
|
|
"add": true,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop flipV=true"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"flipBoth": {
|
|
"type": "bool",
|
|
"description": "Flip both axes (alias of flip=both).",
|
|
"add": true,
|
|
"set": false,
|
|
"examples": [
|
|
"--prop flipBoth=true"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"opacity": {
|
|
"type": "string",
|
|
"description": "Picture opacity. Accepts percent (50, '50%') or fraction (0.5). 100 / 100% / 1.0 = fully opaque.",
|
|
"add": true,
|
|
"set": false,
|
|
"examples": [
|
|
"--prop opacity=50",
|
|
"--prop opacity=0.5"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"hyperlink": {
|
|
"type": "string",
|
|
"description": "Picture-level hyperlink. External URL (https://...) or in-document jump (#SheetName!A1).",
|
|
"aliases": [
|
|
"link"
|
|
],
|
|
"add": true,
|
|
"set": false,
|
|
"examples": [
|
|
"--prop hyperlink=https://example.com"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"anchor": {
|
|
"type": "string",
|
|
"description": "Cell-range anchor (e.g. 'B2:E6') or anchorMode token ('oneCell'/'twoCell'/'absolute'). Cell-range form implies twoCell mode.",
|
|
"add": true,
|
|
"set": false,
|
|
"examples": [
|
|
"--prop anchor=B2:E6",
|
|
"--prop anchor=oneCell"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"anchorMode": {
|
|
"type": "string",
|
|
"description": "Explicit anchor mode: 'oneCell' / 'twoCell' / 'absolute'. Overrides any anchor= mode token.",
|
|
"add": true,
|
|
"set": false,
|
|
"examples": [
|
|
"--prop anchorMode=oneCell"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"shadow": {
|
|
"type": "string",
|
|
"description": "Outer shadow effect. 'none' to clear, or a color/spec accepted by DrawingEffectsHelper.",
|
|
"add": false,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop shadow=#808080"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"glow": {
|
|
"type": "string",
|
|
"description": "Glow effect color/spec. 'none' to clear.",
|
|
"add": false,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop glow=#4472C4"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"reflection": {
|
|
"type": "string",
|
|
"description": "Reflection effect. 'none' to clear.",
|
|
"add": false,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop reflection=true"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"softEdge": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"softedge"
|
|
],
|
|
"description": "Soft edge effect radius. 'none' to clear.",
|
|
"add": false,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop softEdge=5"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"crop.l": {
|
|
"type": "string",
|
|
"description": "Crop from left edge as a percentage (e.g. 10 = 10%, '10%' also accepted). Internally stored in 1/1000 percent units.",
|
|
"add": true,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop crop.l=10",
|
|
"--prop crop.l=50%"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"crop.r": {
|
|
"type": "string",
|
|
"description": "Crop from right edge as a percentage.",
|
|
"add": true,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop crop.r=10"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"crop.t": {
|
|
"type": "string",
|
|
"description": "Crop from top edge as a percentage.",
|
|
"add": true,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop crop.t=10"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"crop.b": {
|
|
"type": "string",
|
|
"description": "Crop from bottom edge as a percentage.",
|
|
"add": true,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop crop.b=10"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"srcRect": {
|
|
"type": "string",
|
|
"description": "Compound crop spec, e.g. 'l=10,r=10,t=5,b=5'. Equivalent to crop.l/crop.r/crop.t/crop.b.",
|
|
"add": true,
|
|
"set": true,
|
|
"examples": [
|
|
"--prop srcRect=l=10,r=10,t=5,b=5"
|
|
],
|
|
"enforcement": "report"
|
|
},
|
|
"anchoredTo": {
|
|
"type": "string",
|
|
"add": false,
|
|
"set": false,
|
|
"get": true,
|
|
"description": "anchor descriptor — sheet/cell-range path the picture is anchored to.",
|
|
"readback": "`/SheetName/A1[:Z9]` anchor path",
|
|
"enforcement": "report"
|
|
},
|
|
"mergeAnchor": {
|
|
"type": "bool",
|
|
"add": false,
|
|
"set": false,
|
|
"get": true,
|
|
"description": "true when the picture is anchored to a merged-cell region.",
|
|
"readback": "true|false",
|
|
"enforcement": "report"
|
|
},
|
|
"x": {
|
|
"type": "length",
|
|
"description": "x as TwoCellAnchor column/row index (xlsx cell-anchor positioning, integer).",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop x=0",
|
|
"--prop x=1in"
|
|
],
|
|
"readback": "integer column/row index",
|
|
"enforcement": "report"
|
|
},
|
|
"y": {
|
|
"type": "length",
|
|
"description": "y as TwoCellAnchor column/row index (xlsx cell-anchor positioning, integer).",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop y=0",
|
|
"--prop y=1in"
|
|
],
|
|
"readback": "integer column/row index",
|
|
"enforcement": "report"
|
|
},
|
|
"width": {
|
|
"type": "integer",
|
|
"description": "width — TwoCellAnchor column/row span (xlsx cell-anchor positioning, integer)",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop width=5",
|
|
"--prop width=3in"
|
|
],
|
|
"readback": "integer column/row span",
|
|
"enforcement": "report"
|
|
},
|
|
"height": {
|
|
"type": "integer",
|
|
"description": "height — TwoCellAnchor column/row span (xlsx cell-anchor positioning, integer)",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop height=5",
|
|
"--prop height=2in"
|
|
],
|
|
"readback": "integer column/row span",
|
|
"enforcement": "report"
|
|
}
|
|
}
|
|
}
|