Files
QR-Invoice/node_modules/swissqrbill/lib/cjs/pdf/table.d.ts
2026-01-12 13:12:46 +01:00

155 lines
5.5 KiB
TypeScript

export interface PDFTable {
/** Table rows. */
rows: PDFRow[];
/** Horizontal alignment of texts inside the table. */
align?: "center" | "left" | "right";
/** Background color of the table. */
backgroundColor?: string;
/** The colors of the border. */
borderColor?: PDFBorderColor;
/** Width of the borders of the row. */
borderWidth?: PDFBorderWidth;
/** Font of the text inside the table. */
fontName?: string;
/** Font size of the text inside the table. */
fontSize?: number;
/** Cell padding of the table cells. */
padding?: PDFPadding;
/** Text color of texts inside table. */
textColor?: string;
/** Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). */
textOptions?: PDFKit.Mixins.TextOptions;
/** Vertical alignment of texts inside the table. */
verticalAlign?: "bottom" | "center" | "top";
/** Width of whole table. */
width?: number;
}
export interface PDFRow {
/** Table columns. */
columns: PDFColumn[];
/** Horizontal alignment of texts inside the row. */
align?: "center" | "left" | "right";
/** Background color of the row. */
backgroundColor?: string;
/** The colors of the border. */
borderColor?: PDFBorderColor;
/** Width of the borders of the row. */
borderWidth?: PDFBorderWidth;
/** Font of the text inside the row. */
fontName?: string;
/** Font size of the text inside the row. */
fontSize?: number;
/** A header row gets inserted automatically on new pages. Only one header row is allowed. */
header?: boolean;
/** Height of the row. Overrides minHeight and maxHeight. */
height?: number;
/** Maximum height of the row. */
maxHeight?: number;
/** Minimum height of the row. */
minHeight?: number;
/** Cell padding of the table cells inside the row. */
padding?: PDFPadding;
/** Text color of texts inside the row. */
textColor?: string;
/** Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). */
textOptions?: PDFKit.Mixins.TextOptions;
/** Vertical alignment of texts inside the row. */
verticalAlign?: "bottom" | "center" | "top";
}
export interface PDFColumn {
/** Cell text. */
text: boolean | number | string;
/** Horizontal alignment of the text inside the cell. */
align?: "center" | "left" | "right";
/** Background color of the cell. */
backgroundColor?: string;
/** The colors of the border. */
borderColor?: PDFBorderColor;
/** Width of the borders of the row. */
borderWidth?: PDFBorderWidth;
/** Font of the text inside the cell. */
fontName?: string;
/** Font size of the text inside the cell. */
fontSize?: number;
/** Cell padding of the table cell. */
padding?: PDFPadding;
/** Text color of texts inside the cell. */
textColor?: string;
/** Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). */
textOptions?: PDFKit.Mixins.TextOptions;
/** Vertical alignment of the text inside the cell. */
verticalAlign?: "bottom" | "center" | "top";
/** Width of the cell. */
width?: number;
}
/** Can be used to set the color of the border of a table, row or column. */
export type PDFBorderColor = string | [top?: string, right?: string, bottom?: string, left?: string] | [vertical?: string, horizontal?: string];
/** Can be used to set the width of the border of a table, row or column. */
export type PDFBorderWidth = number | [top?: number, right?: number, bottom?: number, left?: number] | [vertical?: number, horizontal?: number];
/** Can be used to set the padding of a table cell. */
export type PDFPadding = number | [top?: number, right?: number, bottom?: number, left?: number] | [vertical?: number, horizontal?: number];
/**
* The Table class is used to create tables for PDFKit documents. A table can be attached to any PDFKit document instance
* using the {@link Table.attachTo} method.
*
* @example
* ```ts
* const tableData = {
* rows: [
* {
* backgroundColor: "#ECF0F1",
* columns: [
* {
* text: "Row 1 cell 1"
* }, {
* text: "Row 1 cell 2"
* }, {
* text: "Row 1 cell 3"
* }
* ]
* }, {
* columns: [
* {
* text: "Row 2 cell 1"
* }, {
* text: "Row 2 cell 2"
* }, {
* text: "Row 2 cell 3"
* }
* ]
* }
* ]
* };
* const pdf = new PDFDocument();
* const table = new Table(tableData);
*
* const stream = createWriteStream("table.pdf");
*
* table.attachTo(pdf);
* pdf.pipe(stream);
* pdf.end();
* ```
*/
export declare class Table {
private data;
/**
* Creates a new Table instance.
*
* @param data The rows and columns for the table.
* @returns The Table instance.
*/
constructor(data: PDFTable);
private getCurrentPage;
/**
* Attaches the table to a PDFKit document instance beginning on the current page. It will create a new page with for
* every row that no longer fits on a page.
*
* @param doc The PDFKit document instance.
* @param x The horizontal position in points where the table be placed.
* @param y The vertical position in points where the table will be placed.
* @throws { Error } Throws an error if no table rows are provided.
*/
attachTo(doc: PDFKit.PDFDocument, x?: number, y?: number): void;
private _positionsToObject;
}