多格式支持
支持图片、视频、音频、PDF、Word、Excel、PowerPoint、Markdown 和代码文件等多种格式
同时支持 React 与 Vue 3 · 图片、视频、音频、PDF、Office 文档、Markdown 和代码文件
pnpm add @eternalheart/react-file-previewpnpm add @eternalheart/vue-file-previewnpm install @eternalheart/react-file-previewnpm install @eternalheart/vue-file-preview使用 弹窗模式 (FilePreviewModal):
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)
const files = [
{ url: 'https://example.com/document.pdf', name: 'document.pdf' }
]
return (
<>
<button onClick={() => setIsOpen(true)}>预览文件</button>
<FilePreviewModal
isOpen={isOpen}
onClose={() => setIsOpen(false)}
files={files}
currentIndex={0}
/>
</>
)
}<script setup>
import { ref } from 'vue'
import { FilePreviewModal } from '@eternalheart/vue-file-preview'
import '@eternalheart/vue-file-preview/style.css'
const isOpen = ref(false)
const files = [
{ url: 'https://example.com/document.pdf', name: 'document.pdf' }
]
</script>
<template>
<button @click="isOpen = true">预览文件</button>
<FilePreviewModal
:is-open="isOpen"
:files="files"
:current-index="0"
@close="isOpen = false"
/>
</template>使用 嵌入模式 (FilePreviewEmbed) — 将预览直接内联到页面任意容器:
import { FilePreviewEmbed } from '@eternalheart/react-file-preview'
import '@eternalheart/react-file-preview/style.css'
function Detail() {
const files = [
{ url: 'https://example.com/document.pdf', name: 'document.pdf' }
]
return (
<div style={{ width: '100%', height: 520 }}>
<FilePreviewEmbed files={files} />
</div>
)
}<script setup>
import { FilePreviewEmbed } from '@eternalheart/vue-file-preview'
import '@eternalheart/vue-file-preview/style.css'
const files = [
{ url: 'https://example.com/document.pdf', name: 'document.pdf' }
]
</script>
<template>
<div style="width: 100%; height: 520px">
<FilePreviewEmbed :files="files" />
</div>
</template>@eternalheart/file-preview-core # 框架无关的核心工具(types/工具函数/PDF 配置)
│
├── @eternalheart/react-file-preview # React 18+ 版本
└── @eternalheart/vue-file-preview # Vue 3 版本两个 UI 包共享同一份纯 TS 工具与类型定义,行为完全对齐,可按需选择适合你项目的版本。