/**
 * An HTML Header or Footer which will be printed onto every page of the PDF. This can be used to override
 *
 * When using HtmlHeaderFooter it is important to set {@link htmlFragment}
 *
 * Merge meta-data into your HTML using any of these placeholder strings: {page} {total-pages} {url} {date} {time} {html-title} {pdf-title}
 */
export interface HtmlAffix {
	/**
	 * The HTML which will be used to render the Header or Footer should be an HTML snippet rather than a complete
	 * document. It may contain styles & images.
	 *
	 * Merge meta-data into the HtmlFragment by putting any of these placeholder strings into the text:
	 * {page} {total-pages} {url} {date} {time} {html-title} {pdf-title}.
	 * An alternative mail-merge style using the pattern <span class='total-pages'></span> is also supported.
	 *
	 * HtmlFragment is a stand-alone HTML document which does not inherit styles or settings from your
	 * main HTML content unless LoadStylesAndCSSFromMainHtmlDocument is set to true.
	 */
	htmlFragment: string;
	// /**
	//  * The Base URL all URLs in the {@link htmlFragment} will be relative to. This includes
	//  * 'src' attributes on images, scripts, style-sheets, and also hrefs on hyperlinks.
	//  *
	//  * Note: A base URL that points to a directory should end with a slash.
	//  * Base URL accepts file paths as well as URLs. If no BaseUrl is given,
	//  * the HtmlHeaderFooter BaseUrl will be inherited from the main HTML document where possible.
	//  */
	// baseUrl ?: string | undefined;  //not supported
	/**
	 * Maximum Height of the HTML Header / Footer in millimeters. This value must be set sufficiently high to display the
	 * full HTML header / footer content.
	 */
	maxHeight ?: number | undefined;
	/**
	 * Adds a horizontal line divider between the header / footer and the page content on every page of the PDF document.
	 *
	 *  @default false
	 */
	dividerLine ?: boolean | undefined;
	/**
	 * A html color code for divider line color see {@link dividerLine}
	 *
	 * @default #b1b1b1
	 */
	dividerLineColor ?: string | undefined;
	/**
	 * Loads style code blocks and links to CSS style sheets from the main HTML document (which provides the PDF content) into the {@link HtmlAffix}.
	 *
	 * By default, Html Headers and Footers are stand-alone HTML documents with their own default styles. Setting {@link loadStylesAndCSSFromMainHtmlDocument} to true will attempt to load all STYLE and LINK tags from the main HTML document (which renders the PDF) into the {@link HtmlHeaderFooter}.
	 *
	 * If your main HTML document contains complex CSS frameworks, styles the HEAD or BODY element heavily, or loads CSS from JavaScript, then this method may not work as intended.
	 *
	 * This feature is not available for RenderUrlAsPdf methods. It works for HTMLToPdf and HtmlFileToPdf conversions only.
	 *
	 * It is often preferable to load style sheets explicitly into your HTML Headers and Footers as STYLE and LINK tags within the {@link htmlFragment} for granular control.
	 *
	 * @default false
	 */
	loadStylesAndCSSFromMainHtmlDocument ?: boolean | undefined;
}

/**
 * Defines PDF Header and Footer display options.
 *
 * {@link TextAffix} uses a logical approach to rendering Headers and Footers for the most common use cases.
 *
 * @see {@link HtmlAffix}
 */
export interface TextAffix {
	/**
	 * Sets the left-hand side header text for the PDF document.
	 *
	 * Merge meta-data into your header using any of these placeholder strings:
	 * {page} {total-pages} {url} {date} {time} {html-title} {pdf-title}
	 */
	leftText ?: string | undefined;
	/**
	 * Sets the centered header text for the PDF document.
	 *
	 * Merge meta-data into your header using any of these placeholder strings:
	 * {page} {total-pages} {url} {date} {time} {html-title} {pdf-title}
	 */
	centerText ?: string | undefined;
	/**
	 * Sets the right-hand side header text for the PDF document.
	 *
	 * Merge meta-data into your header using any of these placeholder strings:
	 * {page} {total-pages} {url} {date} {time} {html-title} {pdf-title}
	 */
	rightText ?: string | undefined;
	/**
	 * Adds a horizontal line divider between the header / footer and the page content on every page of the PDF document.
	 *
	 *  @default false
	 */
	dividerLine ?: boolean | undefined;
	/**
	 * A html color code for divider line color see {@link dividerLine}
	 *
	 * @default #b1b1b1
	 */
	dividerLineColor ?: string | undefined;
	/**
	 * Font family. Default is {@link AffixFonts.Arial}.
	 */
	font?: AffixFonts | undefined;
	/**
	 * Font size in px.
	 * @default 10
	 */
	fontSize ?: number | undefined;
}

/**
 * Supported Affix Fonts
 */
export enum AffixFonts {
	Arial,
	Arial_Bold,
	Arial_BoldItalic,
	Arial_Italic,
	Courier,
	Courier_BoldOblique,
	Courier_Oblique,
	Courier_Bold,
	CourierNew,
	CourierNew_Bold,
	CourierNew_BoldItalic,
	CourierNew_Italic,
	Helvetica,
	Helvetica_Bold,
	Helvetica_BoldOblique,
	Helvetica_Oblique,
	Symbol,
	TimesNewRoman,
	TimesNewRoman_Bold,
	TimesNewRoman_BoldItalic,
	TimesNewRoman_Italic,
	ZapfDingbats,
}
