ffcdf5ee10048ab40b3dbf62e58dfad564bdda41
Use PDF outline (bookmarks) for chapter titles and page ranges, then extract text from per-page content streams via pdfcpu ExtractContent. This avoids the indefinite hang caused by dslipak/pdf trying to resolve custom font ToUnicode CMaps on publisher PDFs. - parsePDF: decrypt → ExtractContent → Bookmarks → chaptersFromBookmarks - chaptersFromBookmarks: flatten bookmark tree, skip front/back matter (Cover, Insert, Title Page, Copyright, Appendix), assign page ranges - extractTextFromContentStream: handle TJ arrays (concat literal strings, skip hex glyph arrays and kerning numbers) + single Tj strings - Falls back to paragraph-splitting when no bookmarks present - Build verified; test PDF produces 9 chapters with proper titles
LibNovel
Self-hosted audiobook platform. Go backend + SvelteKit UI + MinIO/PocketBase/Meilisearch.
Requirements
- Docker + Docker Compose
- just
- Doppler CLI
Setup
doppler login
doppler setup # project=libnovel, config=prd
Usage
just up # start everything
just down # stop
just logs # tail all logs
just log backend # tail one service
just build # rebuild images
just restart # down + up
just secrets # view/edit secrets
Secrets
Managed via Doppler (project=libnovel, config=prd). No .env files.
To add or update a secret:
doppler secrets set MY_SECRET=value
Description