export interface PrintOptions { /** Center the printed sheet horizontally on the page. */ horizontalCentered?: boolean; /** Center the printed sheet vertically on the page. */ verticalCentered?: boolean; /** Print row + column headings (the A B C / 1 2 3 strips). */ headings?: boolean; /** Print sheet gridlines. */ gridLines?: boolean; /** Mirrors a quirky Excel companion flag for `gridLines`. */ gridLinesSet?: boolean; } /** Page margins in inches. ECMA-376 §18.3.1.62. All six fields are required when the element is present. */ export interface PageMargins { left: number; right: number; top: number; bottom: number; header: number; footer: number; } export type PageOrientation = 'default' | 'portrait' | 'landscape'; export type PageOrder = 'downThenOver' | 'overThenDown'; export type CellCommentMode = 'none' | 'asDisplayed' | 'atEnd'; export type PrintErrorMode = 'displayed' | 'blank' | 'dash' | 'NA'; export interface PageSetup { paperSize?: number; scale?: number; firstPageNumber?: number; fitToWidth?: number; fitToHeight?: number; pageOrder?: PageOrder; orientation?: PageOrientation; usePrinterDefaults?: boolean; blackAndWhite?: boolean; draft?: boolean; cellComments?: CellCommentMode; useFirstPageNumber?: boolean; errors?: PrintErrorMode; horizontalDpi?: number; verticalDpi?: number; copies?: number; /** Optional `r:id` referencing an external printerSettings part — round-tripped verbatim. */ rId?: string; /** Paper height (UniversalMeasure, e.g. "297mm"). */ paperHeight?: string; /** Paper width (UniversalMeasure). */ paperWidth?: string; } export interface HeaderFooter { differentFirst?: boolean; differentOddEven?: boolean; /** Mirror Excel's "scale header/footer with document" toggle. Default true. */ scaleWithDoc?: boolean; /** Mirror Excel's "align header/footer with margins" toggle. Default true. */ alignWithMargins?: boolean; /** * Mini-format string. Excel uses `&L` / `&C` / `&R` to split the three * sections, plus codes like `&P` (page number), `&N` (page count), `&F` (file * name), `&A` (sheet name), `&D` / `&T` (date / time). We round-trip the * literal text — no parsing into sections. */ oddHeader?: string; oddFooter?: string; evenHeader?: string; evenFooter?: string; firstHeader?: string; firstFooter?: string; } export declare const makePageMargins: (opts?: Partial) => PageMargins; export declare const makePrintOptions: (opts?: PrintOptions) => PrintOptions; export declare const makePageSetup: (opts?: PageSetup) => PageSetup; export declare const makeHeaderFooter: (opts?: HeaderFooter) => HeaderFooter; /** * One manual page break. `id` is the row (for rowBreaks) or column (for * colBreaks) index where the break sits; `min`/`max` constrain the orthogonal * range Excel honours; `man=true` means a user-placed break (default true). * `pt` indicates a "pivot table" break — rare. */ export interface PageBreak { id?: number; min?: number; max?: number; man?: boolean; pt?: boolean; } export declare const makePageBreak: (opts?: PageBreak) => PageBreak; import type { Worksheet } from './worksheet'; /** Set page orientation on `ws.pageSetup` (allocates if missing). */ export declare const setPageOrientation: (ws: Worksheet, orientation: PageOrientation) => void; /** Set paper size code (Excel uses ECMA-376 §3.3 paper-size enums; 1=Letter, 9=A4 etc.). */ export declare const setPaperSize: (ws: Worksheet, paperSize: number) => void; /** Set the print scale percentage (10..400). */ export declare const setPrintScale: (ws: Worksheet, scale: number) => void; /** Set fitToWidth + fitToHeight (Excel "Fit to N pages wide × M tall" UI). */ export declare const setFitToPage: (ws: Worksheet, opts: { width?: number; height?: number; }) => void; /** Replace ws.pageMargins with the provided values (uses Excel defaults for missing axes). */ export declare const setPageMargins: (ws: Worksheet, opts?: Partial) => void; export type HeaderFooterSection = 'odd' | 'even' | 'first'; /** Set the header text for a given section. Excel uses `&L` / `&C` / `&R` codes inside the string. */ export declare const setHeader: (ws: Worksheet, section: HeaderFooterSection, text: string) => void; /** Set the footer text for a given section. */ export declare const setFooter: (ws: Worksheet, section: HeaderFooterSection, text: string) => void; /** * Excel's reserved header / footer code tokens. Drop these into the left / * center / right text inputs of {@link buildHeaderFooterText} (or directly into * a setHeader / setFooter string) to render dynamic values at print time. */ export declare const HEADER_FOOTER_CODES: Readonly<{ /** Current page number. */ pageNumber: "&P"; /** Total number of pages. */ pageCount: "&N"; /** Print date. */ date: "&D"; /** Print time. */ time: "&T"; /** File path + name. */ filePath: "&Z&F"; /** File name only. */ fileName: "&F"; /** Sheet name. */ sheetName: "&A"; /** Embedded image (Excel inserts via "Insert Picture" — `&G` is the placeholder). */ picture: "&G"; }>; /** * Build a header / footer string from optional left / center / right fragments * using Excel's `&L` / `&C` / `&R` markers. An empty fragment is omitted (no * marker emitted) so a center-only header doesn't leave a stray `&L` prefix. * Returns `''` when all three fragments are undefined. */ export declare const buildHeaderFooterText: (parts: { left?: string; center?: string; right?: string; }) => string; /** * Set a header by left / center / right parts. `section` defaults to `'odd'` * (the standard pages); pass `'first'` or `'even'` to target the alternate * sections (Excel auto-flips the corresponding differentOddEven / * differentFirst flag). */ export declare const setHeaderText: (ws: Worksheet, parts: { left?: string; center?: string; right?: string; }, section?: HeaderFooterSection) => void; /** Same shape as {@link setHeaderText} but writes the corresponding footer slot. */ export declare const setFooterText: (ws: Worksheet, parts: { left?: string; center?: string; right?: string; }, section?: HeaderFooterSection) => void; /** Push a manual horizontal page break above the given row (1-based). Defaults to `man=true`. */ export declare const addRowBreak: (ws: Worksheet, row: number) => PageBreak; /** Push a manual vertical page break to the left of the given column (1-based). Defaults to `man=true`. */ export declare const addColBreak: (ws: Worksheet, col: number) => PageBreak; /** Toggle "Print gridlines". Mirrors Excel's "Page Layout → Sheet Options → Gridlines: Print". */ export declare const setPrintGridLines: (ws: Worksheet, on: boolean) => void; /** Toggle "Print row and column headings" (the A B C / 1 2 3 strips on the printed page). */ export declare const setPrintHeadings: (ws: Worksheet, on: boolean) => void; /** * Toggle horizontal / vertical centering on the printed page. Pass either field * to leave the other untouched. */ export declare const setPrintCentered: (ws: Worksheet, opts: { horizontal?: boolean; vertical?: boolean; }) => void;