
Security News
Open VSX Unblocks Extension IDs Used in Malware Campaign
Open VSX has removed three extension IDs from its malicious-extension list as the legitimate publishers they impersonated move to claim the names for themselves.
@file-viewer/ppt
Advanced tools
Professional browser preview for PowerPoint 97-2003 (.ppt) files, independently developed by Flyfish.
Professional browser preview for classic PowerPoint
.pptfiles.
@file-viewer/ppt is Flyfish's independently developed browser preview engine
for the PowerPoint 97–2003 binary (.ppt) format. It reads the original
document structure and renders slides directly in the browser—without Microsoft
Office, LibreOffice, or a server-side format-conversion service.
The engine is designed for file preview platforms, document systems, archives, intranets, SaaS products, and web applications that need reliable access to traditional PowerPoint documents.
.ppt — Parses the classic PowerPoint binary format
directly instead of converting it through another office suite.This package previews the binary PowerPoint 97–2003 .ppt format. It does not
parse the XML-based .pptx format.
npm install @file-viewer/ppt
<input id="ppt-file" type="file" accept=".ppt,application/vnd.ms-powerpoint">
<div id="viewer"></div>
import { loadPptViewer } from '@file-viewer/ppt';
const input = document.querySelector('#ppt-file');
const container = document.querySelector('#viewer');
input.addEventListener('change', async () => {
const file = input.files?.[0];
if (!file) return;
const viewer = await loadPptViewer();
const presentation = await viewer.parsePpt(await file.arrayBuffer(), {
base64Pictures: true
});
container.innerHTML =
`<style>${viewer.defaultPptViewerCss()}</style>${presentation.html}`;
});
The asynchronous parsePpt() path is recommended for normal browser use.
parsePptSync() is also available for small documents and controlled workflows.
| API | Purpose |
|---|---|
loadPptViewer() | Loads and verifies the browser runtime |
parsePpt() | Parses a .ppt file asynchronously and returns the presentation model |
parsePptSync() | Parses a .ppt file synchronously |
renderPresentationToHtmlAsync() | Renders a complete presentation to HTML |
renderSlideToHtmlAsync() | Renders one slide to HTML |
defaultPptViewerCss() | Returns the viewer's production-ready base styles |
getPptPackageManifest() | Returns public package and edition metadata |
All public APIs include TypeScript declarations.
application/wasm MIME type for .wasm assetsClassic PowerPoint files may contain host-dependent fonts, OLE objects, ActiveX controls, macros, or media behaviors that browsers cannot execute. The viewer uses controlled fallbacks for unsupported objects. Final appearance can also vary when a document's original fonts are unavailable on the client device.
| Edition | Permitted use | Watermark | Origin |
|---|---|---|---|
| Public npm edition | Individual personal, non-commercial, non-organizational use | Mandatory Flyfish Viewer | Any normal HTTP/HTTPS origin |
| Commercial edition | Licensed company, organization, customer project, intranet, SaaS, OEM, or production use | Available without the public watermark according to the purchased license | According to the commercial agreement |
Commercial use requires a purchased license. Any use by or for a company, organization, government body, school, nonprofit, team, employer, customer, or client—including internal evaluation—is commercial use.
The public npm edition always displays the Flyfish Viewer watermark. Removing,
hiding, covering, replacing, or bypassing it is prohibited. The package is
proprietary software and is not licensed under Apache-2.0. See
LICENSE for the binding terms.
Purchase a commercial license from the Flyfish Shop.
@file-viewer/ppt 是 Flyfish 独立研发的专业传统 PPT 预览引擎,专门处理
PowerPoint 97–2003 二进制 .ppt 格式。引擎直接读取原始文档结构并在浏览器中
完成幻灯片渲染,无需安装 Microsoft Office、LibreOffice,也不依赖服务端格式
转换服务。
产品适用于文件预览平台、文档管理系统、档案系统、企业内网、SaaS 产品以及需要 兼容传统 PowerPoint 文档的 Web 应用。
.ppt:直接解析 PowerPoint 二进制格式,不通过其他 Office
软件进行中间转换。本包专门预览 PowerPoint 97–2003 二进制 .ppt 文件,不解析 XML 格式的
.pptx 文件。
npm install @file-viewer/ppt
<input id="ppt-file" type="file" accept=".ppt,application/vnd.ms-powerpoint">
<div id="viewer"></div>
import { loadPptViewer } from '@file-viewer/ppt';
const input = document.querySelector('#ppt-file');
const container = document.querySelector('#viewer');
input.addEventListener('change', async () => {
const file = input.files?.[0];
if (!file) return;
const viewer = await loadPptViewer();
const presentation = await viewer.parsePpt(await file.arrayBuffer(), {
base64Pictures: true
});
container.innerHTML =
`<style>${viewer.defaultPptViewerCss()}</style>${presentation.html}`;
});
浏览器环境推荐使用异步 parsePpt();小文件或受控流程也可以使用
parsePptSync()。
| API | 用途 |
|---|---|
loadPptViewer() | 加载并校验浏览器运行时 |
parsePpt() | 异步解析 .ppt 并返回演示文稿模型 |
parsePptSync() | 同步解析 .ppt 文件 |
renderPresentationToHtmlAsync() | 将完整演示文稿渲染为 HTML |
renderSlideToHtmlAsync() | 将单页幻灯片渲染为 HTML |
defaultPptViewerCss() | 返回可直接使用的预览基础样式 |
getPptPackageManifest() | 返回公开的包与版本信息 |
所有公开 API 均提供 TypeScript 类型声明。
.wasm 文件配置 application/wasm MIME 类型传统 PPT 可能包含依赖宿主环境的字体、OLE 对象、ActiveX 控件、宏或媒体行为, 这些内容无法在浏览器中直接执行。预览器会对不支持的对象采用可控降级策略。 如果客户端缺少文档原始字体,最终显示效果也可能因字体替代而存在差异。
| 版本 | 允许用途 | 水印 | Origin |
|---|---|---|---|
| 公网 npm 版 | 自然人个人、非商业、非组织用途 | 强制显示 Flyfish Viewer | 任意正常 HTTP/HTTPS origin |
| 商业版 | 已授权的公司、组织、客户项目、内网、SaaS、OEM 或生产用途 | 按所购授权提供无公网水印版本 | 按商业协议执行 |
任何商业用途均需购买授权。 公司、组织、政府、学校、非营利机构、团队、 雇主、客户或委托项目的使用,包括内部评估,均属于商业用途。
公网 npm 版始终显示 Flyfish Viewer 水印,禁止删除、隐藏、遮挡、替换或绕过
水印。本包属于专有软件,不适用 Apache-2.0。具有法律约束力的完整条款见
LICENSE。
商业授权请前往 Flyfish 商店购买。
FAQs
Professional native WebAssembly canvas viewer for PowerPoint 97-2003 (.ppt) files.
We found that @file-viewer/ppt demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Open VSX has removed three extension IDs from its malicious-extension list as the legitimate publishers they impersonated move to claim the names for themselves.

Product
Socket’s PHP and Composer support is now in Beta for all customers, with PHP reachability analysis generally available.

Product
Socket is bringing experimental protection to Firefox, scanning 97,000+ extensions in Mozilla's official directory for malware and risky updates.