一款前端PDF插件

EmbedPDF 一款Web PDF查看器,基于PDFium WebAssembly渲染,可快速集成到任何JavaScript项目(React、Vue、Svelte、原生JS等),提供开箱即用与无头组件两种模式。

一、核心优势

  • 框架无关:完美兼容React、Vue、Svelte、Preact、原生JS等,无框架锁定。

  • 性能强劲:底层用PDFium WebAssembly,渲染快、精度高,支持虚拟滚动。

  • 两种集成模式

    • 开箱即用(@embedpdf/snippet):2行代码快速集成,自带完整UI、工具栏、响应式布局。

    • 无头组件(@embedpdf/core):仅提供渲染引擎,100%自定义UI,体积更小。

  • 功能丰富:支持标注、文本搜索、缩放、旋转、内容编辑、插件化扩展。

与传统方案对比

方案 优势 劣势
EmbedPDF 易集成、高性能、可定制、框架无关、开源 较新,生态在完善
pdf.js 成熟、功能全 配置复杂、易报错、定制难
iframe/embed 零代码 无法定制、体验差、跨域限制
后端转图片 兼容性好 丢失文本、加载慢、无法交互

二、快速集成(开箱即用)

1. 安装
复制代码
npm install @embedpdf/snippet
# 或
yarn add @embedpdf/snippet
2. 原生JS示例
复制代码
<div id="pdf-viewer" style="height: 600px;"></div>
<script type="module">
  import { EmbedPDF } from '@embedpdf/snippet';
  new EmbedPDF({
    container: '#pdf-viewer',
    src: 'https://example.com/your-document.pdf'
  });
</script>
3. Vue示例
复制代码
<template>
  <div style="height: 600px;">
    <EmbedPDF :config="{ src: 'https://example.com/your-document.pdf' }" />
  </div>
</template>

<script setup>
import { EmbedPDF } from '@embedpdf/snippet/vue';
</script>
4. React示例
复制代码
import { EmbedPDF } from '@embedpdf/snippet/react';

function App() {
  return (
    <div style={{ height: '600px' }}>
      <EmbedPDF config={{ src: 'https://example.com/your-document.pdf' }} />
    </div>
  );
}

三、无头组件(自定义UI)

复制代码
npm install @embedpdf/core

import { createPDFEngine } from'@embedpdf/core';

const engine = createPDFEngine({
src: 'https://example.com/your-document.pdf'
});

// 监听页面加载
engine.on('pageLoaded', (page) => {
// 自定义渲染逻辑
});

// 翻页
engine.goToPage(2);

四、与传统方案对比

方案 优势 劣势
EmbedPDF 易集成、高性能、可定制、框架无关、开源 较新,生态在完善
pdf.js 成熟、功能全 配置复杂、易报错、定制难
iframe/embed 零代码 无法定制、体验差、跨域限制
后端转图片 兼容性好 丢失文本、加载慢、无法交互

五、地址

相关推荐
青山是哪个青山1 小时前
LangChain 学习笔记(四):Message 与提示词模板
笔记·学习·langchain
我命由我123452 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
Hopebearer_3 小时前
页面突然只剩 DOM?一次静态资源版本错配排查
前端·部署
hsjiasb3 小时前
FreeRTOS学习(二十六)——动态内存管理heap_1到heap_5
stm32·单片机·学习·学习笔记·freertos
崇子嵘3 小时前
基于zynqMP15eg的linux驱动学习
学习
东风破_3 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
圣殿骑士-Khtangc5 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
知识分享小能手5 小时前
线性代数学习教程,从入门到精通,向量组的线性相关性 — 完整知识点梳理(7)
学习·线性代数·机器学习
Shell运维手记5 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
BigTopOne5 小时前
【ijkplayer】 硬解码流程
前端