top | item 38741671

(no title)

nisalperi | 2 years ago

I built a writing/formatting product now used by 60k+ indie authors. One of the requirements was to format PDFs for print publishing with different themes and configurable layouts. Instead of building a custom PDF rendering engine, I decided to use Puppeteer to generate the PDFs.

But there were a bunch of issues we had to deal with:

- To render the gutter (margin in the middle) you had to know which side of the book each page would fall on.

- To generate the headers and footers, you had to know the exact page number for each of the pages.

- You had to know how many pages the table of contents would take up, but you couldn't know the page numbers for each chapter until the book was fully generated.

What I ended up doing was to generate multiple PDFs for each chapter, header, footer, and table of contents separately, then stitching them together very carefully to build the final export. Super hacky, but it ain't stupid if it works!

discuss

order

magnio|2 years ago

Given what I know about the PDF spec and the various papercut I had with various PDF tools, your solution seems as sane as it can be tbh.

azalemeth|2 years ago

Out of curiosity, did you consider transpiling to LaTeX? Memoir.cls is fantastic at those sorts of calculations and actually the formatting output from pandoc is usually quite good too.