mirror of
https://github.com/jzillmann/pdf-to-markdown.git
synced 2024-11-26 09:43:59 +01:00
36 lines
963 B
TypeScript
36 lines
963 B
TypeScript
/**
|
|
* Holds the information which (zero based) page index maps to a page number.
|
|
*/
|
|
export default class PageMapping {
|
|
constructor(public pageFactor: number = 1, public detectedOnPage: boolean = false) {}
|
|
|
|
/**
|
|
* Translates a given page index to a page number label as printed on the page. E.g [0,1,2,3,4] could become [I, II, 1, 2].
|
|
* @param pageIndex
|
|
*/
|
|
pageLabel(pageIndex: number) {
|
|
const pageNumber = pageIndex + this.pageFactor;
|
|
if (pageNumber < 1) {
|
|
return romanize(Math.abs(pageNumber - this.pageFactor) + 1);
|
|
}
|
|
return `${pageNumber}`;
|
|
}
|
|
|
|
shifted(): boolean {
|
|
return this.pageFactor != 1;
|
|
}
|
|
}
|
|
|
|
function romanize(num: number): string {
|
|
var lookup = { M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 },
|
|
roman = '',
|
|
i: string;
|
|
for (i in lookup) {
|
|
while (num >= lookup[i]) {
|
|
roman += i;
|
|
num -= lookup[i];
|
|
}
|
|
}
|
|
return roman;
|
|
}
|