@triplef/pdf
v0.1.0
Published
tripleF (3F) PDF domain — single-owner pdfjs integration: per-page text-layer extraction and page rendering for the apps.
Readme
@triplef/pdf
Single-owner pdfjs integration for the tripleF (3F) apps — the one and only place that depends on pdfjs-dist.
PdfService.extractText(buffer)→ per-page text layer (string[], aligned 1:1 with pages;''for pages without a text layer, e.g. scanned pages).PdfService.renderPages(buffer, scale?)→ per-page PNG buffers ({ buffer, mimeType: 'image/png', pageNumber }), white background, rendered via pdfjs' built-inNodeCanvasFactoryon top of@napi-rs/canvas(a runtime dependency of this package).
Usage
import { PdfModule } from '@triplef/pdf';
@Module({
imports: [PdfModule.registerAsync({ global: true })],
})
export class AppModule {}Then inject PdfService wherever it is needed.
Notes
- Uses the pdfjs legacy Node build (
pdfjs-dist/legacy/build/pdf.mjs) with standard fonts and CMaps resolved from the installedpdfjs-distpackage, so CJK documents extract and render correctly. - No
isEvalSupportedoption: pdfjs ≥5.7 removed it together with the PostScriptevalpath (CVE-2024-4367 surface). - Post-processing (e.g. JPEG re-encode for token efficiency) is intentionally left to the consuming app.
