diff --git a/packages/pdf/src/browser.tsx b/packages/pdf/src/browser.tsx index 16d3fea9e..38458c1f9 100644 --- a/packages/pdf/src/browser.tsx +++ b/packages/pdf/src/browser.tsx @@ -1,6 +1,7 @@ import type { ResumeData } from "@reactive-resume/schema/resume/data"; import type { Template } from "@reactive-resume/schema/templates"; import type { ResumeRenderOptions } from "./context"; +import type { PageMap } from "./page-map"; import type { SectionTitleResolver } from "./section-title"; import { createElement } from "react"; import { parseResumeData } from "@reactive-resume/schema/resume/data"; @@ -12,6 +13,8 @@ export type CreateResumePdfBlobOptions = { template?: Template | undefined; renderOptions?: ResumeRenderOptions | undefined; resolveSectionTitle?: SectionTitleResolver | undefined; + /** Receives the header, section and item boxes of this render (see `page-map.ts`). */ + onPageMap?: ((pageMap: PageMap) => void) | undefined; }; export const createResumePdfBlob = async ({ @@ -19,6 +22,7 @@ export const createResumePdfBlob = async ({ template, renderOptions, resolveSectionTitle, + onPageMap, }: CreateResumePdfBlobOptions): Promise => { const data = parseResumeData(input); const document = createElement(ResumeDocument, { @@ -26,6 +30,7 @@ export const createResumePdfBlob = async ({ template: template ?? data.metadata.template, ...(renderOptions ? { renderOptions } : {}), resolveSectionTitle, + onPageMap, }) as Parameters[0]; return await pdf(document).toBlob();