@progress/kendo-vue-pdf
Version:
370 lines (360 loc) • 12.3 kB
TypeScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PageMargin } from '@progress/kendo-drawing/pdf';
import { PaperSize } from '@progress/kendo-drawing/pdf';
import { PropType } from 'vue';
import { PublicProps } from 'vue';
/**
* @hidden
*/
export declare const GridPdfExport: DefineComponent<ExtractPropTypes< {
author: PropType<string>;
avoidLinks: PropType<string | boolean>;
forcePageBreak: PropType<string>;
keepTogether: PropType<string>;
creator: PropType<string>;
date: PropType<Date>;
imageResolution: PropType<number>;
fileName: PropType<string>;
forceProxy: PropType<boolean>;
keywords: PropType<string>;
landscape: PropType<boolean>;
margin: PropType<string | number | PageMargin>;
pageTemplate: PropType<any>;
paperSize: PropType<PaperSize>;
repeatHeaders: PropType<boolean>;
scale: PropType<number>;
proxyData: PropType<{
[key: string]: string;
}>;
proxyURL: PropType<string>;
proxyTarget: PropType<string>;
producer: PropType<string>;
subject: PropType<string>;
title: PropType<string>;
}>, {}, {}, {}, {
save(data?: any[], callback?: () => void): void;
getSavePDF(): typeof savePDF;
}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< {
author: PropType<string>;
avoidLinks: PropType<string | boolean>;
forcePageBreak: PropType<string>;
keepTogether: PropType<string>;
creator: PropType<string>;
date: PropType<Date>;
imageResolution: PropType<number>;
fileName: PropType<string>;
forceProxy: PropType<boolean>;
keywords: PropType<string>;
landscape: PropType<boolean>;
margin: PropType<string | number | PageMargin>;
pageTemplate: PropType<any>;
paperSize: PropType<PaperSize>;
repeatHeaders: PropType<boolean>;
scale: PropType<number>;
proxyData: PropType<{
[key: string]: string;
}>;
proxyURL: PropType<string>;
proxyTarget: PropType<string>;
producer: PropType<string>;
subject: PropType<string>;
title: PropType<string>;
}>> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export declare interface GridPDFExportProps extends PDFExportProps {
}
/**
* Represents the props of a page template component that
* can be added to the PDFExport component.
*/
export declare interface PageTemplateProps {
/**
* The number of the current page.
*/
pageNum: number;
/**
* The total number of pages.
*/
totalPages: number;
}
/**
* @hidden
*/
export declare const PDFExport: DefineComponent<ExtractPropTypes< {
author: PropType<string>;
avoidLinks: PropType<string | boolean>;
forcePageBreak: PropType<string>;
keepTogether: PropType<string>;
creator: PropType<string>;
date: PropType<Date>;
imageResolution: PropType<number>;
fileName: PropType<string>;
forceProxy: PropType<boolean>;
keywords: PropType<string>;
landscape: PropType<boolean>;
margin: PropType<string | number | PageMargin>;
pageTemplate: PropType<any>;
paperSize: PropType<PaperSize>;
repeatHeaders: PropType<boolean>;
scale: PropType<number>;
proxyData: PropType<{
[key: string]: string;
}>;
proxyURL: PropType<string>;
proxyTarget: PropType<string>;
producer: PropType<string>;
subject: PropType<string>;
title: PropType<string>;
}>, {}, {}, {}, {
save(callback?: () => void): void;
}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< {
author: PropType<string>;
avoidLinks: PropType<string | boolean>;
forcePageBreak: PropType<string>;
keepTogether: PropType<string>;
creator: PropType<string>;
date: PropType<Date>;
imageResolution: PropType<number>;
fileName: PropType<string>;
forceProxy: PropType<boolean>;
keywords: PropType<string>;
landscape: PropType<boolean>;
margin: PropType<string | number | PageMargin>;
pageTemplate: PropType<any>;
paperSize: PropType<PaperSize>;
repeatHeaders: PropType<boolean>;
scale: PropType<number>;
proxyData: PropType<{
[key: string]: string;
}>;
proxyURL: PropType<string>;
proxyTarget: PropType<string>;
producer: PropType<string>;
subject: PropType<string>;
title: PropType<string>;
}>> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
/**
* Represents the props of the KendoVue PDFExport component.
*/
export declare interface PDFExportProps {
/**
* The author (metadata) of the PDF document.
*/
author?: string;
/**
* A flag that indicates whether to produce actual hyperlinks in the exported PDF file.
* It is also possible to set a CSS selector. All matching links will be ignored.
*/
avoidLinks?: boolean | string;
/**
* An optional CSS selector that specifies the elements which cause the page breaks.
*/
forcePageBreak?: string;
/**
* An optional CSS selector that specifies the elements which should not be split across the pages.
*/
keepTogether?: string;
/**
* The creator of the PDF document.
*
* @default "Kendo UI PDF Generator"
*/
creator?: string;
/**
* The date when the PDF document is created. Defaults to `new Date()`.
*/
date?: Date;
/**
* The forced resolution of the images in the exported PDF document.
* By default, the images are exported at their full resolution.
*/
imageResolution?: number;
/**
* Specifies the name of the exported PDF file.
*
* @default "export.pdf"
*/
fileName?: string;
/**
* If set to `true`, the content is forwarded to `proxyURL` even if the
* browser supports local saving of files.
*/
forceProxy?: boolean;
/**
* The keywords (metadata) of the PDF document.
*/
keywords?: string;
/**
* A flag that indicates if the page will be in a landscape orientation.
* By default, the page is in a portrait orientation.
*
* @default false
*/
landscape?: boolean;
/**
* Specifies the margins of the page.
*
* The supported units are:
* * `"mm"`
* * `"cm"`
* * `"in"`
* * `"pt"` (default).
*
* > Numbers are considered to be points (`"pt"`).
*/
margin?: string | number | PageMargin;
/**
* A Vue functional or class component which is used as a template that is inserted
* into each page of the PDF document. The number of the current page (`pageNum`)
* and the total number of pages (`totalPages`) are passed to the component as properties.
*/
pageTemplate?: any;
/**
* Specifies the paper size of the PDF document. Defaults to `"auto"` which means that the paper size
* is determined by the content.
* The size of the content in pixels matches the size of the output in points (1 pixel = 1/72 inch).
*
* If set, the content will be split across multiple pages.
* This enables the `repeatHeaders` and `scale` options, and allows you to specify a template.
*
* The supported values are:
* * A predefined size. The supported paper sizes are: `A0-A10`, `B0-B10`, `C0-C10`,
* `Executive`, `Folio`, `Legal`, `Letter`, `Tabloid`.
* * An array of two numbers which specify the width and height in points (1pt = 1/72in).
* * An array of two strings which specify the width and height in units.
* The supported units are `"mm"`, `"cm"`, `"in"`, and `"pt"`.
*/
paperSize?: PaperSize;
/**
* Specifies if the `<thead>` elements of the tables will be repeated on each page.
*/
repeatHeaders?: boolean;
/**
* A scale factor.
* The text size on the screen might be too big for printing.
* To scale down the output in PDF, use this option.
*
* @default 1
*/
scale?: number;
/**
* A key/value dictionary of form values which will be sent to the proxy.
* Can be used to submit Anti-Forgery tokens and other metadata.
*/
proxyData?: {
[key: string]: string;
};
/**
* The URL of the server-side proxy which streams the file to the end user.
* You need to use a proxy if the browser is not capable of saving files locally—
* for example, Internet Explorer 9 and Safari.
* It is your responsibility to implement the server-side proxy.
*
* In the request body, the proxy receives a POST request with the following parameters:
*
* - `"contentType"`—The MIME type of the file.
* - `"base64"`—The base-64 encoded file content.
* - `"fileName"`—The file name, as requested by the caller.
*
* The proxy returns the decoded file with the `"Content-Disposition"` header set to `attachment;
* filename="<fileName.pdf>"`.
*/
proxyURL?: string;
/**
* A name or keyword which indicates where to display the document that is returned from the proxy.
* To display the document in a new window or iframe,
* the proxy has to have the `"Content-Disposition"` header set to `inline; filename="<fileName.pdf>"`.
*
* @default "_self"
*/
proxyTarget?: string;
/**
* The producer (metadata) of the PDF document.
*/
producer?: string;
/**
* The subject (metadata) of the PDF document.
*/
subject?: string;
/**
* The title (metadata) of the PDF document.
*/
title?: string;
}
/**
* Saves the content of a DOM element to a PDF file.
*
* @param domElement - The root DOM element to save to a PDF file.
* @param options - The export options.
* @param callback - The callback to be executed after the PDF is saved.
*/
export declare function savePDF(domElement: HTMLElement, options?: PDFExportProps, callback?: () => void): void;
/**
* @hidden
*/
export declare const TreeListPDFExport: DefineComponent<ExtractPropTypes< {
author: PropType<string>;
avoidLinks: PropType<string | boolean>;
forcePageBreak: PropType<string>;
keepTogether: PropType<string>;
creator: PropType<string>;
date: PropType<Date>;
imageResolution: PropType<number>;
fileName: PropType<string>;
forceProxy: PropType<boolean>;
keywords: PropType<string>;
landscape: PropType<boolean>;
margin: PropType<string | number | PageMargin>;
pageTemplate: PropType<any>;
paperSize: PropType<PaperSize>;
repeatHeaders: PropType<boolean>;
scale: PropType<number>;
proxyData: PropType<{
[key: string]: string;
}>;
proxyURL: PropType<string>;
proxyTarget: PropType<string>;
producer: PropType<string>;
subject: PropType<string>;
title: PropType<string>;
}>, {}, {}, {}, {
save(data?: any[], callback?: () => void): void;
getSavePDF(): typeof savePDF;
}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< {
author: PropType<string>;
avoidLinks: PropType<string | boolean>;
forcePageBreak: PropType<string>;
keepTogether: PropType<string>;
creator: PropType<string>;
date: PropType<Date>;
imageResolution: PropType<number>;
fileName: PropType<string>;
forceProxy: PropType<boolean>;
keywords: PropType<string>;
landscape: PropType<boolean>;
margin: PropType<string | number | PageMargin>;
pageTemplate: PropType<any>;
paperSize: PropType<PaperSize>;
repeatHeaders: PropType<boolean>;
scale: PropType<number>;
proxyData: PropType<{
[key: string]: string;
}>;
proxyURL: PropType<string>;
proxyTarget: PropType<string>;
producer: PropType<string>;
subject: PropType<string>;
title: PropType<string>;
}>> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export declare interface TreeListPDFExportProps extends PDFExportProps {
}
export { }