Skip to content

安装

本库提供 ReactVue 3 两个版本,根据你的项目选择对应的包。

环境要求

text
React >= 18.0.0
React DOM >= 18.0.0
text
Vue >= 3.4.0

包管理器安装

bash
pnpm add @eternalheart/react-file-preview
bash
pnpm add @eternalheart/vue-file-preview
bash
npm install @eternalheart/react-file-preview
bash
npm install @eternalheart/vue-file-preview
bash
yarn add @eternalheart/react-file-preview
bash
yarn add @eternalheart/vue-file-preview

导入样式

在你的应用入口文件中导入样式:

tsx
import '@eternalheart/react-file-preview/style.css'
ts
import '@eternalheart/vue-file-preview/style.css'

PDF 支持

组件已内置 PDF.js worker 配置,无需任何额外配置

Worker 文件会自动从 CDN 加载,确保:

  • 零配置,开箱即用
  • 自动匹配 pdfjs-dist 版本
  • 稳定可靠的加载方式
  • 无需手动复制任何文件

TIP

组件会自动使用 unpkg CDN 加载 PDF.js worker 文件,无需任何手动配置。

如需自定义 worker 路径(例如生产环境用本地静态文件),可在应用入口调用配置函数:

tsx
import { configurePdfjs } from '@eternalheart/react-file-preview'

configurePdfjs({
  workerSrc: '/pdfjs/pdf.worker.min.mjs',
  cMapUrl: '/pdfjs/cmaps/',
  cMapPacked: true,
})
ts
import { configurePdfWorker } from '@eternalheart/vue-file-preview'
import * as pdfjsLib from 'pdfjs-dist/build/pdf.mjs'

configurePdfWorker(pdfjsLib, {
  workerSrc: '/pdfjs/pdf.worker.min.mjs',
  cMapUrl: '/pdfjs/cmaps/',
  cMapPacked: true,
})

验证安装

tsx
import { useState } from 'react'
import { FilePreviewModal } from '@eternalheart/react-file-preview'
import '@eternalheart/react-file-preview/style.css'

function App() {
  const [isOpen, setIsOpen] = useState(false)

  return (
    <div>
      <button onClick={() => setIsOpen(true)}>打开预览</button>
      <FilePreviewModal
        isOpen={isOpen}
        onClose={() => setIsOpen(false)}
        files={[
          { url: 'https://via.placeholder.com/800', name: 'test.png' }
        ]}
        currentIndex={0}
      />
    </div>
  )
}

export default App
vue
<script setup>
import { ref } from 'vue'
import { FilePreviewModal } from '@eternalheart/vue-file-preview'
import '@eternalheart/vue-file-preview/style.css'

const isOpen = ref(false)
</script>

<template>
  <div>
    <button @click="isOpen = true">打开预览</button>
    <FilePreviewModal
      :is-open="isOpen"
      :files="[{ url: 'https://via.placeholder.com/800', name: 'test.png' }]"
      :current-index="0"
      @close="isOpen = false"
    />
  </div>
</template>

下一步

Released under the MIT License.