export type PdfPaperSize = PaperSize | CustomPaperSize;

/**
 * Defines the target virtual paper size the PDF.  Relates to real-world paper-sizes.
 */
export enum PaperSize {
	/**
	 * 8.5in x 11in
	 */
	Letter,
	/**
	 * 8.5in x 11in
	 */
	Legal,
	/**
	 * 210mm x 297mm
	 */
	A4,
	/**
	 * 17in x 22in
	 */
	CSheet,
	/**
	 * 22in x 34in
	 */
	DSheet,
	/**
	 * 34in x 44in
	 */
	ESheet,
	/**
	 * 8.5in x 11in
	 */
	LetterSmall,

	/**
	 * 11in x 17in
	 */
	Tabloid,

	/**
	 * 17in x 11in
	 */
	Ledger,

	/**
	 * 5.5in x 8.5in
	 */
	Statement,

	/**
	 * 7.25in x 10.5in
	 */
	Executive,

	/**
	 * 297mm x 420mm
	 */
	A3,

	/**
	 * 210mm x 297mm
	 */
	A4Small,

	/**
	 * 148mm x 210mm
	 */
	A5,

	/**
	 * 250mm x 353mm
	 */
	B4,

	/**
	 * 176mm x 250mm
	 */
	B5,

	/**
	 * 8.5in x 13in
	 */
	Folio,

	/**
	 * 215mm x 275mm
	 */
	Quarto,

	/**
	 * 10in x 14in
	 */
	Standard10x14,

	/**
	 * 11in x 17in
	 */
	Standard11x17,

	/**
	 * 8.5in x 11in
	 */
	Note,

	/**
	 * 3.875in x 8.875in
	 */
	Number9Envelope,

	/**
	 * 4.125in x 9.5in
	 */
	Number10Envelope,

	/**
	 * 4.5in x 10.375in
	 */
	Number11Envelope,

	/**
	 * 4.75in x 11in
	 */
	Number12Envelope,

	/**
	 * 5in x 11.5in
	 */
	Number14Envelope,

	/**
	 * 110mm x 220mm
	 */
	DLEnvelope,

	/**
	 * 162mm x 229mm
	 */
	C5Envelope,

	/**
	 * 324mm x 458mm
	 */
	C3Envelope,

	/**
	 * 229mm x 324mm
	 */
	C4Envelope,

	/**
	 * 114mm x 162mm
	 */
	C6Envelope,

	/**
	 * 114mm x 229mm
	 */
	C65Envelope,

	/**
	 * 250mm x 353mm
	 */
	B4Envelope,

	/**
	 * 176mm x 250mm
	 */
	B5Envelope,

	/**
	 * 176mm x 125mm
	 */
	B6Envelope,

	/**
	 * 110mm x 230mm
	 */
	ItalyEnvelope,

	/**
	 * 3.875in x 7.5in
	 */
	MonarchEnvelope,

	/**
	 * 3.625in x 6.5in
	 */
	PersonalEnvelope,

	/**
	 * 14.875in x 11in
	 */
	USStandardFanfold,

	/**
	 * 8.5in x 12in
	 */
	GermanStandardFanfold,

	/**
	 * 8.5in x 13in
	 */
	GermanLegalFanfold,

	/**
	 * 250mm x 353mm
	 */
	IsoB4,

	/**
	 * 100mm x 148mm
	 */
	JapanesePostcard,

	/**
	 * 9in x 11in
	 */
	Standard9x11,

	/**
	 * 10in x 11in
	 */
	Standard10x11,

	/**
	 * 15in x 11in
	 */
	Standard15x11,

	/**
	 * 220mm x 220mm
	 */
	InviteEnvelope,

	/**
	 * 9.275in x 12in
	 */
	LetterExtra,

	/**
	 * 9.275in x 15in
	 */
	LegalExtra,

	/**
	 * 11.69in x 18in
	 */
	TabloidExtra,

	/**
	 * 236mm x 322mm
	 */
	A4Extra,

	/**
	 * 8.275in x 11in
	 */
	LetterTransverse,

	/**
	 * 210mm x 297mm
	 */
	A4Transverse,

	/**
	 * 9.275in x 12in
	 */
	LetterExtraTransverse,

	/**
	 * 227mm x 356mm
	 */
	APlus,

	/**
	 * 305mm x 487mm
	 */
	BPlus,

	/**
	 * 8.5in x 12.69in
	 */
	LetterPlus,

	/**
	 * 210mm x 330mm
	 */
	A4Plus,

	/**
	 * 148mm x 210mm
	 */
	A5Transverse,

	/**
	 * 182mm x 257mm
	 */
	B5Transverse,

	/**
	 * 322mm x 445mm
	 */
	A3Extra,

	/**
	 * 174mm x 235mm
	 */
	A5Extra,

	/**
	 * 201mm x 276mm
	 */
	B5Extra,

	/**
	 * 420mm x 594mm
	 */
	A2,

	/**
	 * 297mm x 420mm
	 */
	A3Transverse,

	/**
	 * 322mm x 445mm
	 */
	A3ExtraTransverse,

	/**
	 * 200mm x 148mm
	 */
	JapaneseDoublePostcard,

	/**
	 * 105mm x 148mm
	 */
	A6,

	/**
	 * 11in x 8.5in
	 */
	LetterRotated,

	/**
	 * 420mm x 297mm
	 */
	A3Rotated,

	/**
	 * 297mm x 210mm
	 */
	A4Rotated,

	/**
	 * 210mm x 148mm
	 */
	A5Rotated,

	/**
	 * 364mm x 257mm
	 */
	B4JisRotated,

	/**
	 * 257mm x 182mm
	 */
	B5JisRotated,

	/**
	 * 148mm x 100mm
	 */
	JapanesePostcardRotated,

	/**
	 * 148mm x 200mm
	 */
	JapaneseDoublePostcardRotated,

	/**
	 * 148mm x 105mm
	 */
	A6Rotated,

	/**
	 * 128mm x 182mm
	 */
	B6Jis,

	/**
	 * 182mm x 128mm
	 */
	B6JisRotated,

	/**
	 * 12in x 11in
	 */
	Standard12x11,

	/**
	 * 146mm x 215mm
	 */
	Prc16K,

	/**
	 * 97mm x 151mm
	 */
	Prc32K,

	/**
	 * 97mm x 151mm
	 */
	Prc32KBig,

	/**
	 * 102mm x 165mm
	 */
	PrcEnvelopeNumber1,

	/**
	 * 102mm x 176mm
	 */
	PrcEnvelopeNumber2,

	/**
	 * 125mm x 176mm
	 */
	PrcEnvelopeNumber3,

	/**
	 * 110mm x 208mm
	 */
	PrcEnvelopeNumber4,

	/**
	 * 110mm x 220mm
	 */
	PrcEnvelopeNumber5,

	/**
	 * 120mm x 230mm
	 */
	PrcEnvelopeNumber6,

	/**
	 * 160mm x 230mm
	 */
	PrcEnvelopeNumber7,

	/**
	 * 120mm x 309mm
	 */
	PrcEnvelopeNumber8,

	/**
	 * 229mm x 324mm
	 */
	PrcEnvelopeNumber9,

	/**
	 * 324mm x 458mm
	 */
	PrcEnvelopeNumber10,

	/**
	 * 146mm x 215mm
	 */
	Prc16KRotated,

	/**
	 * 97mm x 151mm
	 */
	Prc32KRotated,

	/**
	 * 97mm x 151mm
	 */
	Prc32KBigRotated,

	/**
	 * 165mm x 102mm
	 */
	PrcEnvelopeNumber1Rotated,

	/**
	 * 176mm x 102mm
	 */
	PrcEnvelopeNumber2Rotated,

	/**
	 * 176mm x 125mm
	 */
	PrcEnvelopeNumber3Rotated,

	/**
	 * 208mm x 110mm
	 */
	PrcEnvelopeNumber4Rotated,

	/**
	 * 220mm x 110mm
	 */
	PrcEnvelopeNumber5Rotated,

	/**
	 * 230mm x 120mm
	 */
	PrcEnvelopeNumber6Rotated,

	/**
	 * 230mm x 160mm
	 */
	PrcEnvelopeNumber7Rotated,

	/**
	 * 309mm x 120mm
	 */
	PrcEnvelopeNumber8Rotated,

	/**
	 * 324mm x 229mm
	 */
	PrcEnvelopeNumber9Rotated,

	/**
	 * 458mm x 324mm
	 */
	PrcEnvelopeNumber10Rotated,
}

/**
 * Paper size for PDF pages
 */
export interface CustomPaperSize {
	/**
	 * Width custom paper width in mm
	 */
	width: number;
	/**
	 * Height custom paper height in mm
	 */
	height: number;
	/**
	 * Dimensions or unit of mature
	 */
	unit: PaperSizeUnit;
}

/**
 * Paper Orientation
 */
export enum PdfPaperOrientation {
	/**
	 * Paper is oriented vertically
	 */
	Portrait = 0,
	/**
	 * Paper is oriented horizontally
	 */
	Landscape = 1,
}

/**
 * Dimensions or unit of mature
 */
export enum PaperSizeUnit {
	Millimeter,
	Inch,
	Centimeter,
	Points,
}
