Your search did not match any results.

Export and Printing API


DevExtreme Data Visualization JavaScript components fulfill their purpose even outside the browser, thanks to the client-side export and printing features. This demo illustrates the exportTo and print API methods used for exporting and printing from code. Below the Chart, you see the «Print» and «Export» buttons. A click on the «Print» button calls the Print Dialog Window with a document ready to be printed. In this window, you can change printing properties and send the document to your printer. A click on the «Export» button saves a PNG file with the component in your local storage. PDF, JPEG, SVG, and GIF formats are supported as well.
Backend API
Copy to CodeSandBox
<dx-chart id="chart" [dataSource]="mountains" title="The Highest Mountains"> <dxi-series argumentField="name" valueField="height" type="bar" color="#E55253"> </dxi-series> <dxo-argument-axis [visible]="true"></dxo-argument-axis> <dxi-value-axis [visualRange]="{startValue:8000}"> <dxo-label [customizeText]="customizeLabel"></dxo-label> </dxi-value-axis> <dxo-tooltip [enabled]="true" [customizeTooltip]="customizeTooltip"></dxo-tooltip> <dxo-legend [visible]="false"></dxo-legend> </dx-chart> <div id="buttonGroup"> <dx-button icon="print" text="Print" (onClick)="print()"> </dx-button> <dx-button icon="export" text="Export" (onClick)="export()"> </dx-button> </div>
import { NgModule, Component, ViewChild, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxChartModule, DxChartComponent, DxButtonModule } from 'devextreme-angular'; import { Service, Mountain} from './app.service'; if(!/localhost/.test( { enableProdMode(); } @Component({ selector: 'demo-app', providers: [Service], templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'], preserveWhitespaces: true }) export class AppComponent { @ViewChild(DxChartComponent, { static: false }) chart: DxChartComponent; mountains: Mountain[]; constructor(service: Service) { this.mountains = service.getMountains(); } customizeTooltip(arg: any) { return { text: "<span class='title'>" + arg.argumentText + "</span><br />&nbsp;<br />" + "System: " + + "<br />" + "Height: " + arg.valueText + " m" }; } customizeLabel(arg: any) { return arg.value + " m"; } print() { this.chart.instance.print(); } export() { this.chart.instance.exportTo("Example", "png"); } } @NgModule({ imports: [ BrowserModule, DxChartModule, DxButtonModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
::ng-deep #chart { height: 440px; margin-bottom:30px; } ::ng-deep #buttonGroup { text-align: center; margin-bottom: 20px; } ::ng-deep #buttonGroup > .dx-button { margin: 0 20px; } ::ng-deep .title { font-size: 15px; font-weight: 500; }
import { Injectable } from '@angular/core'; export class Mountain { name: string; height: number; system: string; } let mountains: Mountain[] = [{ name: "Everest", height: 8848, system: "Mahalangur Himalaya" }, { name: "Godwin Austen", height: 8611, system: "Baltoro Karakoram" }, { name: "Kangchenjunga", height: 8586, system: "Kangchenjunga Himalaya" }, { name: "Lhotse", height: 8516, system: "Mahalangur Himalaya" }, { name: "Makalu", height: 8485, system: "Mahalangur Himalaya" }, { name: "Cho Oyu", height: 8188, system: "Mahalangur Himalaya" }]; @Injectable() export class Service { getMountains(): Mountain[] { return mountains; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular and DevExtreme here: // window.config = { transpiler: 'ts', typescriptOptions: { module: "system", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" }, 'devextreme/localization.js': { "esModule": true }, }, paths: { 'npm:': '' }, map: { 'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js', 'typescript': 'npm:typescript@3.5.3/lib/typescript.js', '@angular': 'npm:@angular', 'tslib': 'npm:tslib@2.3.1/tslib.js', 'rxjs': 'npm:rxjs@6.4.0', 'rrule': 'npm:rrule@2.6.6/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.28.0/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@21.1.6/cjs', 'devextreme/bundles/dx.all': 'npm:devextreme@21.1.6/bundles/dx.all.js', 'jszip': 'npm:jszip@3.7.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.4.2/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.1.32', 'devexpress-gantt': 'npm:devexpress-gantt@3.0.14', 'devextreme-angular': 'npm:devextreme-angular@21.1.6', '@devextreme/vdom': 'npm:@devextreme/vdom@1.2.2', 'inferno': 'npm:inferno@7.4.10/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat@7.4.10/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.10/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom@1.0.7/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate@7.4.10/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode@7.4.10/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class@7.4.10/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras@7.4.10/dist/inferno-extras.min.js' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, '@devextreme/vdom': { defaultExtension: 'js' }, 'devextreme/events/utils': { main: 'index' }, 'devextreme/events': { main: 'index' }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js' } }, packageConfigPaths: [ "npm:@devextreme/*/package.json", "npm:@angular/*/package.json", "npm:@angular/common/*/package.json", "npm:rxjs/package.json", "npm:rxjs/operators/package.json", "npm:devextreme-angular/*/package.json", "npm:devextreme-angular/ui/*/package.json", "npm:devextreme-angular/package.json", "npm:devexpress-diagram/package.json", "npm:devexpress-gantt/package.json", ] }; System.config(window.config);
<!DOCTYPE html> <html xmlns=""> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="stylesheet" type="text/css" href="" /> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>