pptx-embed-fonts
Version:
Embed fonts in pptx files
164 lines (106 loc) • 3.92 kB
Markdown
**[中文文档](./README_ZH.md)**
[](https://badge.fury.io/js/pptx-embed-fonts)
[](https://opensource.org/licenses/MIT)
A JavaScript library for embedding fonts in PPTX files, with seamless integration support for pptxgenjs.
- 🎯 **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
[](https://codesandbox.io/p/sandbox/nqf84m)
```bash
npm install pptx-embed-fonts
yarn add pptx-embed-fonts
pnpm add pptx-embed-fonts
```
```typescript
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();
```
[](https://codesandbox.io/p/sandbox/pptx-embed-fonts-857gv3)
```typescript
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",
});
```
```typescript
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>`
```typescript
interface AddFontOptions {
fontFace: string;
fontFile: ArrayBuffer;
fontType: "ttf" | "eot" | "woff" | "otf";
}
```
Get font information
- [pptxgenjs](https://github.com/gitbrent/PptxGenJS) - PowerPoint file generation library
- [JSZip](https://github.com/Stuk/jszip) - File compression library
- [opentype.js](https://github.com/opentypejs/opentype.js) - Font parsing library