UNPKG

survey-pdf

Version:

Renders JSON-driven SurveyJS forms and their responses as PDF documents in the browser or Node.js: fillable interactive PDF forms (AcroForm) or static printouts.

134 lines (133 loc) 7.6 kB
import { IQuestion, Question, LocalizableString, PanelModel, PageModel } from 'survey-core'; import { SurveyPDF } from './survey'; import { IPoint, IRect, ISize, DocController } from './doc_controller'; import { IFlatQuestion } from './flat_layout/flat_question'; import { IPdfBrick } from './pdf_render/pdf_brick'; import { ILinkOptions } from './pdf_render/pdf_link'; import { CompositeBrick } from './pdf_render/pdf_composite'; import { ITextFieldBrickOptions } from './pdf_render/pdf_textfield'; import { ISideValues } from './utils'; import { IAlignedTextStyle, IBorderStyle, IInputStyle, ITextStyle } from './style/types'; export interface IBorderDescription extends IRect, ISize { } export declare enum BorderMode { Inside = 0, Middle = 1, Outside = 2 } export declare enum BorderRect { None = 0, Top = 1, Bottom = 2, Right = 4, Left = 8, All = 15 } export interface IBorderExtendedStyle extends IBorderStyle { dashStyle?: { dashArray: [number, number] | [number]; dashPhase: number; }; borderMode?: BorderMode; } export declare class SurveyHelper { static readonly EPSILON: number; static readonly HTML_TAIL_TEXT_SCALE: number; static parseWidth(width: string, maxWidth: number, columnsCount?: number, defaultUnit?: string): number; static pxToPt(value: number | string): number; static parseColor(color: string): { color: string; opacity: number; }; static mergeRects(...rects: IRect[]): IRect; static createPoint(rect: IRect, isLeft?: boolean, isTop?: boolean): IPoint; static createRect(point: IPoint, width: number, height: number): IRect; static createHeaderRect(controller: DocController): IRect; static createFooterRect(controller: DocController): IRect; static chooseHtmlFont(controller: DocController, fontName?: string): string; static generateCssTextRule(style: ITextStyle): string; static createHtmlContainerBlock(html: string, controller: DocController, style?: Readonly<ITextStyle>): string; static splitHtmlRect(controller: DocController, htmlBrick: IPdfBrick): IPdfBrick; static createPlainTextFlat(point: IPoint, controller: DocController, text: string, style: Required<IAlignedTextStyle>): CompositeBrick; static createTextFlat(point: IPoint, controller: DocController, text: string | LocalizableString, style?: Readonly<IAlignedTextStyle>): Promise<IPdfBrick>; static mergeObjects(dest: any, ...sources: Array<any>): any; static getPatchedTextStyle<T extends ITextStyle = ITextStyle>(controller: DocController, style?: Readonly<T>): T & Required<ITextStyle>; static getDefaultTextStyle(controller: DocController): Required<ITextStyle>; static hasHtml(text: LocalizableString): boolean; private static getHtmlMargins; static createHTMLRect(point: IPoint, controller: DocController, margins: { top: number; bottom: number; width: number; }, resultY: number, style?: Readonly<ITextStyle>): IRect; static createHTMLFlat(point: IPoint, controller: DocController, html: string, style?: Readonly<ITextStyle>): Promise<IPdfBrick>; static generateFontFace(fontName: string, fontBase64: string, fontWeight: string): string; static generateFontFaceWithItalicStyle(fontName: string, fontBase64: string, fontWeight: string): string; static htmlToXml(html: string): string; static createSvgContent(html: string, width: number, controller: DocController): { svg: string; divWidth: number; divHeight: number; }; private static setCanvas; static htmlToImage(html: string, width: number, controller: DocController): Promise<{ url: string; aspect: number; }>; static getReadonlyRenderAs(question: Question, controller: DocController): 'auto' | 'text' | 'acroform'; static createCommentFlat(point: IPoint, controller: DocController, options: { rows?: number; } & ITextFieldBrickOptions, style?: Readonly<IInputStyle>): Promise<IPdfBrick>; static get hasDocument(): boolean; static createImageFlat(point: IPoint, question: any, controller: DocController, options: { link: string; width: number; height: number; objectFit?: 'cover' | 'contain' | 'fill'; }, applyImageFit?: boolean): Promise<IPdfBrick>; static createRowlineFlat(point: IPoint, controller: DocController, width?: number, color?: string): IPdfBrick; static createLinkFlat(point: IPoint, controller: DocController, options: ILinkOptions, style?: Readonly<ITextStyle>): Promise<IPdfBrick>; static createAcroformRect(rect: IRect): number[]; static createTextFieldRect(point: IPoint, controller: DocController, lines?: number, lineHeight?: number): IRect; static createReadOnlyTextFieldTextFlat(point: IPoint, controller: DocController, value: string, style: IInputStyle): Promise<IPdfBrick>; static createRoundedShape(rect: IRect, style: { borderRadius?: number | Array<number>; }, mergeAngles?: boolean | ISideValues<boolean>): Map<keyof ISideValues, Array<Array<number>>>; static getDocLinesFromShape(lines: Map<keyof ISideValues, Array<Array<number>>>): { lines: Array<Array<number>>; point: Array<number>; }; static renderFlatBorders(controller: DocController, options: IBorderDescription, style: IBorderExtendedStyle): void; static getLocString(text: LocalizableString): string; static getContentQuestion(question: Question): Question; private static isBooleanDisplayMode; private static isEmptyRenderAs; private static getBooleanRenderAsValue; static getContentQuestionTypeRenderAs(question: Question, survey: SurveyPDF): string; static getContentQuestionType(question: Question, survey: SurveyPDF): string; static getPageAvailableWidth(controller: DocController): number; static getColumnWidth(controller: DocController, colCount: number, gapBetweenColumns: number): number; static setColumnMargins(controller: DocController, colCount: number, column: number, gapBetweenColumns: number): void; static moveRect(rect: IRect, left?: number, top?: number): IRect; static createRectInsideBorders(rect: IRect, borderWidth: number | Array<number>): IRect; static getFlatQuestion(survey: SurveyPDF, controller: DocController, question: Question): IFlatQuestion; static generateQuestionFlats(survey: SurveyPDF, controller: DocController, question: Question, point: IPoint): Promise<IPdfBrick[]>; static generatePanelFlats(survey: SurveyPDF, controller: DocController, panel: PanelModel, point: IPoint): Promise<IPdfBrick[]>; static generatePageFlats(survey: SurveyPDF, controller: DocController, page: PageModel, point: IPoint): Promise<IPdfBrick[]>; static isFontExist(controller: DocController, fontName: string): boolean; static isCustomFont(controller: DocController, fontName: string): boolean; static fixFont(controller: DocController): void; static clone(src: any): any; static shouldRenderReadOnly(question: IQuestion, controller: DocController, readOnly?: boolean): boolean; static isSizeEmpty(val: any): boolean; static isHeightEmpty(val: any): boolean; static getCorrectedImageSize(controller: DocController, imageOptions: { imageWidth?: any; imageHeight?: any; imageLink: string; defaultImageWidth?: any; defaultImageHeight?: any; }): Promise<ISize>; static alignVerticallyBricks(align: 'top' | 'center' | 'bottom', ...bricks: IPdfBrick[]): void; static clear(): void; }