Skip to content

PowerPoint ​

PowerPoint Export ​

You can add PowerPoint export as a menu item:

javascript
menu: {
  pp_export: { text: "Export PowerPoint" }
}

And/or as a nodeMenu item:

javascript
nodeMenu: {
  pp_export: { text: "Export node and its children to PowerPoint" }
}

Here is the result:

Export options ​

javascript
chart.exportToPowerPoint({
  childLevels: 1,
  expandChildren: true,
  format: "Standard", // "Screen" (default) | "Widescreen" | "Standard"
  header: '<text>My Header</text>',
  footer: '<text>My Footer. Page {current-page} of {total-pages}</text>',
  fileName: "myChart.pptx",
  min: false,
  openInNewTab: true,
  nodeId: id,
  margin: [10, 10, 10, 10],
  padding: 50
});

Not all options can work together.

exportToPowerPoint method ​

The default export format is Screen, which is the client screen size. Here is how to export in Widescreen format using exportToPowerPoint.

First define the function:

javascript
function powerpoint() {
  chart.exportToPowerPoint({
    format: "Widescreen"
  });
}

Then use it in a menu option:

javascript
menu: {
  export_pp: {
    text: "Export PowerPoint - Widescreen",
    icon: OrgChart.icon.powerpoint(24, 24, "#7A7A7A"),
    onClick: powerpoint
  },
}

The header and footer are SVG definitions.

Define the function:

javascript
function powerpoint(nodeId) {
  chart.exportToPowerPoint({
    header: '<text>My Header</text>',
    footer: '<text>My Footer. Page {current-page} of {total-pages}</text>'
  });
}

Use it in a menu option:

javascript
menu: {
  export_powerpoint: {
    text: "Export to PowerPoint with my header and footer",
    icon: OrgChart.icon.powerpoint(24, 24, "#7A7A7A"),
    onClick: powerpoint
  },
}

Export by slides ​

You can export multiple charts or a chart by teams using the pages property.

You can use the following options:

javascript
chart.exportToPowerPoint({
  pages: [
    {
      content: '<svg><text>My Header</text></svg>',
      chartInstance: chart,
      nodeId: 2,
      expandChildren: true,
      childLevels: 2,
      parentLevels: 1,
      min: false,
      header: '<text>My Header</text>',
      footer: '<text>My Footer. Page {current-page} of {total-pages}</text>'
    },
  ],
});

Export a chart by teams ​

javascript
chart.exportToPowerPoint({
  expandChildren: false,
  pages: [
    {
      nodeId: 2
    },
    {
      nodeId: 3,
      childLevels: 1
    },
    {
      nodeId: 4
    },
  ]
});

Export multiple charts in one PowerPoint file ​

javascript
chart1.exportToPowerPoint({
  pages: [
    { chartInstance: chart1, header: '<text>OrgChart 1</text>' },
    { chartInstance: chart2, header: '<text>OrgChart 2</text>' },
    { chartInstance: chart3, header: '<text>OrgChart 3</text>' },
    { chartInstance: chart4, header: '<text>OrgChart 4</text>' }
  ]
});

Exporting styles ​

Using the onExportStart and onExportEnd event listeners, you can change export behavior. You can export styles using the args.styles property.

HTML:

html
<style id="myStyles">
  .node.HR rect {
    fill: #E99113;
  }
</style>

JavaScript:

javascript
// add before chart.load()
chart.onExportStart((args) => {
  args.styles += document.getElementById('myStyles').outerHTML;
});

Code example:

In PowerPoint you can ungroup the chart and make changes.

Limitations

  • Cannot export images and foreignobjects.
  • Header and footer should be SVG objects.

PowerPoint Preview ​

You can add PowerPoint Preview as a menu item:

javascript
menu: {
  pp_preview: { text: "Create a PowerPoint Presentation" }
}

And/or as a nodeMenu option:

javascript
nodeMenu: {
  pp_preview: { text: "Create a PowerPoint Presentation from here" }
}

Click on the menu option to open the preview:

The header and footer are SVG definitions.

Define the function:

javascript
function ppExportPreview() {
  chart.powerPointPreviewUI.show({
    header: '<text>My Header</text>',
    footer: '<text>My Footer. Page {current-page} of {total-pages}</text>'
  });
}

Use it in a menu option:

javascript
menu: {
  pp_preview: {
    text: "Export PowerPoint",
    icon: OrgChart.icon.powerpoint(24, 24, "#7A7A7A"),
    onClick: ppExportPreview
  }
}

Add slides programmatically ​

You can add custom pages in preview using the pages property.

Here is how to export a chart by teams:

javascript
function ppExportPreview() {
  chart.powerPointPreviewUI.show({
    pages: [
      {
        nodeId: 2
      },
      {
        nodeId: 3,
        childLevels: 1
      },
      {
        nodeId: 4
      },
    ]
  });
}

Custom content slides ​

You can add a slide with custom content:

javascript
function ppExportPreview() {
  chart.powerPointPreviewUI.show({
    pages: [
      {
        content: '<svg>[Your SVG definition here]</svg>'
        // or
        // content: '[Your HTML definition here]'
      },
      {
        nodeId: 2
      }
    ]
  });
}

Here is how to add a slide with a logo:

Preview Buttons Configuration ​

You can hide or show the following buttons:

javascript
chart.powerPointPreviewUI.buttons.addNewPage = true;
chart.powerPointPreviewUI.buttons.childLevels = true;
chart.powerPointPreviewUI.buttons.parentLevels = true;
chart.powerPointPreviewUI.buttons.removePage = true;

Here is an example:

Localization ​

Here is what you can localize in PowerPoint Preview:

javascript
chart.powerPointPreviewUI.locExport = 'Export';
chart.powerPointPreviewUI.locCancel = 'Close';
chart.powerPointPreviewUI.locParentLevels = 'parent levels';
chart.powerPointPreviewUI.locChildLevels = 'child levels';
chart.powerPointPreviewUI.locClickToAdd = 'Click on a node to display it here';
chart.powerPointPreviewUI.locPrintTree = 'Print tree';
// chart.powerPointPreviewUI.locPrintProfile = 'Print profile';
chart.powerPointPreviewUI.locAddNew = 'Add new slide';
chart.powerPointPreviewUI.locRemove = 'Remove slide';

Here is an example:

Server JS

There may be cases where you do not want to use the BALKAN server for export. For example, if you run a secure website or do not want your data to be passed to https://balkan.app.

In that case you need to set up your own Server JS.