34 lines
3.8 KiB
Markdown
34 lines
3.8 KiB
Markdown
# Specialized native objects
|
|
|
|
The maintained SVG compiler creates native tables and charts from explicit group markers. Start with [table.svg](../assets/native-objects/table.svg) or [chart.svg](../assets/native-objects/chart.svg). These are isolated compiler examples, not selected-template pages. Their Arial font, colors and geometry are explicit sample values; rebind them to the selected style/theme and fit the chosen content region. SVG coordinates and `font_size` are pixels: 24px means 18pt at 96dpi.
|
|
|
|
Each example contains a visible fallback plus a `<g data-pptx-replace-with="table|chart">` with `<metadata type="application/json">`. Both must come from the same data. The compiler replaces the group with an editable native object, rather than keeping the visible fallback as the result. Preserve explicit bounds, rows/columns, series/categories, font and colors. Escape JSON when inserting it in XML. Do not edit only the fallback or only the metadata. Marker transforms support translate/scale, not rotation/skew.
|
|
|
|
## Validate the marker and result
|
|
|
|
Bundled Python modules are under `runtime/ppt-master/scripts/`. Add that directory to `sys.path` in a project-local helper, then import:
|
|
|
|
```python
|
|
from svg_to_pptx.native_objects import (
|
|
stamp_native_fallback_baseline,
|
|
validate_native_object_marker_with_warnings,
|
|
)
|
|
```
|
|
|
|
After updating and reviewing both metadata and fallback, call `stamp_native_fallback_baseline(marker, document_root=root)` and serialize the SVG. Use `validate_native_object_marker_with_warnings(marker, document_root=root)` and inspect every warning before compiling the page with `native_export.py`. Do not stamp merely to suppress a stale-fallback error. For a marker inside transformed groups, also supply the actual ancestor context to validation; see the function signature. Sources without a baseline remain compatible but lose the freshness check.
|
|
|
|
Check the resulting PPTX for `a:tbl` or chart graphicFrames, chart XML/relationships and embedded workbook data as applicable. Confirm data cache and workbook agree with author data; charts drawn from shapes alone are not data-backed chart objects. Application opening, rendering and actual data editing require their own checks.
|
|
|
|
Implementation entry points:
|
|
|
|
- [marker loading and supported kinds](../runtime/ppt-master/scripts/svg_to_pptx/native_objects/marker_common.py).
|
|
- [table grid, cells and native XML](../runtime/ppt-master/scripts/svg_to_pptx/native_objects/table.py).
|
|
- [chart data normalization](../runtime/ppt-master/scripts/svg_to_pptx/native_objects/chart_data.py) and [chart style](../runtime/ppt-master/scripts/svg_to_pptx/native_objects/chart_style.py).
|
|
- [fallback freshness](../runtime/ppt-master/scripts/svg_to_pptx/native_objects/fallback_hash.py) and [validation/conversion](../runtime/ppt-master/scripts/svg_to_pptx/native_objects/__init__.py).
|
|
|
|
## Native mathematics and formula boundary
|
|
|
|
The preserved upstream snapshot's replacement kinds remain table and chart. The maintained wrapper adds a separate structured [Office Math authoring interface](mathematics.md) in `math_component.py`, with explicit font/style inputs. It supports common expression trees without changing upstream files or requiring another installed Skill. The source SVG contains a linear compatibility view; native equation rendering is checked in the target application.
|
|
|
|
Simple mathematical Unicode may remain editable ordinary text, but that is not an editable equation object. Raster formulas and vector outlines remain picture/path exceptions. Unsupported expressions require a separately declared compatible route; do not silently flatten them. The bundled optional LaTeX utility produces PNG and can use external services; it is not the maintained native equation route and must not be invoked as an implicit fallback. Input OMML extraction alone does not establish equation output or application editing support.
|