Package Exports
- @eternalheart/ngx-file-preview
- @eternalheart/ngx-file-preview/package.json
Readme
NGX File Preview
一个功能强大的 Angular 文件预览组件库,支持多种文件格式的预览,提供灵活的自定义选项。
预览效果
默认列表视图
自定义模板
各类型文件预览效果
文件类型 | 预览效果 |
---|---|
图片预览 | ![]() |
视频预览 | ![]() |
音频预览 | ![]() |
PPT预览 | ![]() |
Word预览 | ![]() |
Excel预览 | ![]() |
文本预览 | ![]() |
压缩包预览 | ![]() |
未知类型 | ![]() |
特性
- 🎯 支持多种文件格式预览 (图片、PDF、PPT、Word、文本、视频等)
- 🎨 提供默认样式,也支持完全自定义
- 💪 支持指令和组件两种使用方式
- 🚀 轻量级,易于集成
- 📱 响应式设计,支持移动端
- ⌨️ 支持键盘快捷操作
安装
npm install @eternalheart/ngx-file-preview --save docx-preview hls.js ng2-pdf-viewer pptx-preview xlsx
配置
1. 字体图标配置
在 angular.json
文件中添加必要的样式和脚本:
{
"projects": {
"your-app": {
"architect": {
"build": {
"options": {
"styles": [
"node_modules/@eternalheart/ngx-file-preview/assets/icon/font/iconfont.css"
],
"scripts": [
"node_modules/@eternalheart/ngx-file-preview/assets/icon/color/iconfont.js"
]
}
}
}
}
}
}
2. 模块导入
在需要使用的模块中导入相关组件:
import {
PreviewDirective,
PreviewComponent,
PreviewModalComponent
} from 'ngx-file-preview';
@Component({
// ... 其他配置
imports: [
PreviewDirective,
PreviewComponent,
]
})
使用方法
1. 指令方式
最简单的使用方式,直接在元素上添加指令:
import { PreviewDirective } from '@eternalheart/ngx-file-preview';
@Component({
imports: [PreviewDirective],
template: `
<div [ngxFilePreview]="file">点击预览单个文件</div>
<div [ngxFilePreview]="files">点击预览多个文件</div>
`
})
export class YourComponent {
file: PreviewFile = {
name: 'example.jpg',
type: 'image',
url: 'path/to/file.jpg'
};
files: PreviewFile[] = [
// ... 文件数组
];
}
2. 组件方式
使用默认列表模板:
import { PreviewComponent } from '@eternalheart/ngx-file-preview';
@Component({
imports: [PreviewComponent],
template: `
<ngx-file-preview
[files]="files"
(fileSelect)="onFileSelect($event)">
</ngx-file-preview>
`
})
使用自定义模板:
@Component({
template: `
<ngx-file-preview [files]="files">
<ng-template #itemTemplate
let-file
let-index="index"
let-isActive="isActive"
let-preview="preview">
<div class="custom-item"
[class.active]="isActive"
(click)="preview()">
<span>{{ file.name }}</span>
<span>{{ formatFileSize(file.size) }}</span>
</div>
</ng-template>
</ngx-file-preview>
`
})
文件配置
PreviewFile 接口
interface PreviewFile {
url: string; // 文件URL
type: PreviewType; // 文件类型
name: string; // 文件名
size?: number; // 文件大小(可选)
lastModified?: number;// 最后修改时间(可选)
coverUrl?: string; // 封面图URL(视频/音频可用,可选)
}
支持的文件类型 (PreviewType)
type PreviewType =
| 'image' // 图片
| 'pdf' // PDF文档
| 'ppt' // PPT演示文稿
| 'word' // Word文档
| 'txt' // 文本文件
| 'video' // 视频
| 'excel' // Excel表格
| 'audio' // 音频
| 'zip' // 压缩包
| 'unknown' // 未知类型
键盘快捷键
预览模式下支持以下快捷键:
←
上一个文件→
下一个文件Esc
关闭预览
开发指南
- 克隆项目
git clone https://github.com/wh131462/ngx-file-preview.git
- 安装依赖
npm install
- 启动开发服务器
npm run start
- 构建库
npm run build
贡献指南
欢迎提交 Issue 和 Pull Request 来帮助改进这个项目!
License
MIT
鸣谢
本项目使用了以下优秀的开源项目:
文档预览
- docx-preview - Word文档预览
- pptx-preview - PPT演示文稿预览
- xlsx - Excel表格预览
- ng2-pdf-viewer - PDF文档预览
媒体播放
- hls.js - HLS视频流播放支持
感谢这些项目的贡献者们为开源社区作出的贡献!
依赖说明
{
"dependencies": {
"docx-preview": "^0.3.3",
"hls.js": "^1.4.12",
"ng2-pdf-viewer": "^10.0.0",
"pptx-preview": "^1.0.1",
"xlsx": "^0.18.5"
}
}
这些依赖项会在安装 ngx-file-preview 时自动安装。如果您的项目中已经包含了某些依赖,可以根据需要手动管理版本。
可选依赖
某些预览功能需要额外的依赖支持:
- PDF预览:需要
ng2-pdf-viewer
- Office文档预览:需要
docx-preview
、pptx-preview
和xlsx
- HLS视频流:需要
hls.js
如果您不需要某些预览功能,可以选择不安装相应的依赖包,这样可以减小最终打包体积。