Skip to content

liyao1520/pptx-embed-fonts

Repository files navigation

pptx-embed-fonts

中文文档

npm version License: MIT

A JavaScript library for embedding fonts in PPTX files, with seamless integration support for pptxgenjs.

✨ Features

  • 🎯 Font Embedding: Support for TTF, EOT, OTF and WOFF format font file embedding
  • 🔌 pptxgenjs Integration: Seamless integration with pptxgenjs
  • 📱 Cross-platform: Support for Node.js and browser environments
  • 📦 TypeScript Support: Complete type definitions

Edit on CodeSandbox

Edit on CodeSandbox

📦 Installation

npm install pptx-embed-fonts
# or
yarn add pptx-embed-fonts
# or
pnpm add pptx-embed-fonts

🚀 Quick Start

Basic Usage

import PPTXEmbedFonts from "pptx-embed-fonts";

// Create instance
const embedFonts = new PPTXEmbedFonts();

// Load PPTX file
const pptxBuffer = await fetch("presentation.pptx").then((r) =>
  r.arrayBuffer()
);
await embedFonts.load(pptxBuffer);

// Add font
const fontBuffer = await fetch("font.ttf").then((r) => r.arrayBuffer());
await embedFonts.addFontFromTTF("MyFont", fontBuffer);

const result = await embedFonts.save();

Integration with pptxgenjs

Edit on CodeSandbox

import pptxgenjs from "pptxgenjs";
import { withPPTXEmbedFonts } from "pptx-embed-fonts/pptxgenjs";

// Create enhanced version of pptxgenjs
const EnhancedPPTXGenJS = withPPTXEmbedFonts(pptxgenjs);
const pptx = new EnhancedPPTXGenJS();

// Add font
const fontBuffer = await fetch("font.ttf").then((r) => r.arrayBuffer());
await pptx.addFont({
  fontFace: "MyFont",
  fontFile: fontBuffer,
  fontType: "ttf",
});

// Create slide content
const slide = pptx.addSlide();
slide.addText("Hello World", {
  fontFace: "MyFont",
  fontSize: 24,
});

// Automatically embed fonts when exporting
const pptxFile = await pptx.writeFile({
  fileName: "example.pptx",
});

📚 API Reference

PPTXEmbedFonts Class

Constructor

new PPTXEmbedFonts(zip?: JSZip)

Methods

load(fileBuffer: ArrayBuffer): Promise<void>

Load PPTX file buffer

loadZip(zip: JSZip): Promise<void>

Load JSZip instance

addFontFromTTF(fontName: string, ttfFile: ArrayBuffer): Promise<void>

Add TTF format font

addFontFromOTF(fontName: string, otfFile: ArrayBuffer): Promise<void>

Add OTF format font

addFontFromEOT(fontName: string, eotFile: ArrayBuffer): Promise<void>

Add EOT format font

addFontFromWOFF(fontName: string, woffFile: ArrayBuffer): Promise<void>

Add WOFF format font

getFontInfo(fontBuffer: ArrayBuffer): any

Get font information

updateFiles(): Promise<void>

Update font-related configurations in PPTX file

save(): Promise<ArrayBuffer | Buffer>

Save and return the updated file

withPPTXEmbedFonts Function

Parameters

  • pptxgen: typeof pptxgenjs - pptxgenjs class

Return Value

Enhanced version of pptxgenjs class with the following additional methods:

addFont(options): Promise<void>
interface AddFontOptions {
  fontFace: string;
  fontFile: ArrayBuffer;
  fontType: "ttf" | "eot" | "woff" | "otf";
}
getFontInfo(fontFile: ArrayBuffer): any

Get font information

🔗 Related Links

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published