html-to-pdf-converter
Version:
HTML to PDF converter with support for HEADERS, FOOTERS and page numbers
113 lines (112 loc) • 2.74 kB
TypeScript
/// <reference types="node" />
export declare class PdfPoints {
_n: number;
constructor(n: number);
static of(n: number): PdfPoints;
add(x: PdfPoints): PdfPoints;
subtract(x: PdfPoints): PdfPoints;
}
export declare class Millimeters {
_n: number;
constructor(n: number);
static of(n: number): Millimeters;
static max: (a: Millimeters, b: Millimeters) => Millimeters;
add(x: Millimeters): Millimeters;
subtract(x: Millimeters): Millimeters;
toPixels(): Pixels;
toPdfPoints(): PdfPoints;
toString(): string;
}
export declare type RoundType = 'none' | 'floor' | 'ceil';
export declare class Pixels {
_n: number;
constructor(n: number);
static of(n: number): Pixels;
toMillimeters(type: RoundType): Millimeters;
toString(): string;
}
export interface PdfText {
fontPath: string;
text: string;
size: Millimeters;
underline?: boolean;
color: number;
}
export interface Margin<T> {
top: T;
right: T;
bottom: T;
left: T;
}
export interface PrintMargin extends Margin<Millimeters> {
}
export declare type SlotType = 'header' | 'footer';
export declare const PrintMargin: {
ofMillimeters: ({top, right, bottom, left}: Margin<number>) => PrintMargin;
ofZero: () => {
top: Millimeters;
right: Millimeters;
bottom: Millimeters;
left: Millimeters;
};
};
export interface SizeInPixels {
width: Pixels;
height: Pixels;
}
export interface PageSize {
width: Millimeters;
height: Millimeters;
}
export declare const PageSize: {
of: (width: number, height: number) => {
width: Millimeters;
height: Millimeters;
};
ofZero: () => {
width: Millimeters;
height: Millimeters;
};
};
export interface HtmlSlot {
type: 'HtmlSlot';
html: string;
}
export interface TextSlot {
type: 'TextSlot';
left?: PdfText;
center?: PdfText;
right?: PdfText;
}
export declare type Slot = HtmlSlot | TextSlot;
export interface PdfContent {
pdfContent: string;
margin: PrintMargin;
pageSize: PageSize;
}
export interface PdfContentWithSlots extends PdfContent {
header?: Slot;
footer?: Slot;
}
export interface SlotWithPageSize {
readonly size: PageSize;
readonly data: Slot;
}
export interface PdfWithSpaceForSlots {
readonly mainPdf: Buffer;
readonly margin: PrintMargin;
readonly header?: SlotWithPageSize;
readonly footer?: SlotWithPageSize;
}
export declare const pageSizeInMM: {
A4: {
portrait: {
width: Millimeters;
height: Millimeters;
};
landscape: {
width: Millimeters;
height: Millimeters;
};
};
};