| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- declare module 'pdfmake/build/pdfmake' {
- interface PdfMakeStatic {
- fonts: Record<string, FontDefinition>;
- virtualfs: VirtualFileSystem;
- createPdf(docDefinition: TDocumentDefinitions, options?: Record<string, unknown>): OutputDocumentBrowser;
- setFonts(fonts: Record<string, FontDefinition>): void;
- addFonts(fonts: Record<string, FontDefinition>): void;
- addVirtualFileSystem(vfs: Record<string, string | { data: string; encoding?: string }>): void;
- setUrlAccessPolicy(callback: ((url: string) => boolean) | undefined): void;
- }
- interface FontDefinition {
- normal: string;
- bold: string;
- italics: string;
- bolditalics: string;
- }
- interface VirtualFileSystem {
- storage: Record<string, unknown>;
- existsSync(filename: string): boolean;
- readFileSync(filename: string, options?: string | { encoding?: string }): unknown;
- writeFileSync(filename: string, content: unknown, options?: string | { encoding?: string }): void;
- }
- interface OutputDocumentBrowser {
- getBlob(): Promise<Blob>;
- getBuffer(): Promise<ArrayBuffer>;
- download(filename?: string): Promise<void>;
- open(win?: Window | null): Promise<void>;
- print(win?: Window | null): Promise<void>;
- }
- type Margins = number | [number, number] | [number, number, number, number];
- type Alignment = 'left' | 'center' | 'right' | 'justify';
- interface Style {
- font?: string;
- fontSize?: number;
- bold?: boolean;
- italics?: boolean;
- alignment?: Alignment;
- color?: string;
- fillColor?: string;
- fillOpacity?: number;
- margin?: Margins;
- lineHeight?: number;
- decoration?: 'underline' | 'lineThrough' | 'overline';
- columnGap?: number;
- outline?: boolean;
- }
- type Content = string | ContentText | ContentColumns | ContentStack | ContentTable | ContentImage | ContentSvg | ContentCanvas | Content[];
- interface ContentText extends Style {
- text: string | Content[];
- style?: string | string[];
- pageBreak?: 'before' | 'after';
- }
- interface ContentColumns extends Style {
- columns: Content[];
- }
- interface ContentStack extends Style {
- stack: Content[];
- }
- interface ContentImage extends Style {
- image: string;
- width?: number;
- height?: number;
- fit?: [number, number];
- }
- interface ContentSvg extends Style {
- svg: string;
- width?: number;
- height?: number;
- fit?: [number, number];
- }
- interface ContentCanvas extends Style {
- canvas: {
- type: string;
- x: number;
- y: number;
- w: number;
- h: number;
- r: number;
- color: string;
- }[];
- }
- interface TableCell extends Style {
- text?: string | Content[];
- rowSpan?: number;
- colSpan?: number;
- /** 单元格垂直对齐(pdfmake 0.3+,合并 rowSpan 时常用 middle;非 CSS 的 valign) */
- verticalAlignment?: 'top' | 'middle' | 'bottom';
- border?: [boolean, boolean, boolean, boolean];
- noWrap?: boolean;
- }
- interface ContentTable extends Style {
- table: {
- headerRows?: number;
- widths?: ('auto' | '*' | number | string)[];
- body: (string | TableCell | Content)[][];
- };
- layout?: string | TableLayout;
- }
- interface TableLayout {
- hLineWidth?: (i: number, node: unknown) => number;
- vLineWidth?: (i: number, node: unknown) => number;
- hLineColor?: (i: number, node: unknown) => string;
- vLineColor?: (i: number, node: unknown) => string;
- paddingLeft?: (i: number, node: unknown) => number;
- paddingRight?: (i: number, node: unknown) => number;
- paddingTop?: (i: number, node: unknown) => number;
- paddingBottom?: (i: number, node: unknown) => number;
- fillColor?: (rowIndex: number, node: unknown, columnIndex: number) => string | null;
- }
- interface TDocumentDefinitions {
- content: Content;
- defaultStyle?: Style;
- styles?: Record<string, Style>;
- pageSize?: string | { width: number; height: number };
- pageOrientation?: 'portrait' | 'landscape';
- pageMargins?: Margins;
- header?: Content | ((currentPage: number, pageCount: number) => Content);
- footer?: Content | ((currentPage: number, pageCount: number) => Content);
- info?: Record<string, string>;
- images?: Record<string, string | { url: string; headers?: Record<string, any> }>;
- }
- const pdfMake: PdfMakeStatic;
- export default pdfMake;
- export type {
- TDocumentDefinitions,
- Content,
- ContentText,
- ContentColumns,
- ContentStack,
- ContentTable,
- ContentImage,
- TableCell,
- TableLayout,
- Style,
- Margins,
- Alignment,
- OutputDocumentBrowser,
- };
- }
|