@work-zhanguo/light-file-preview 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -91
- package/dist/SheetRenderer-Dr5f9ZTy.js +918 -0
- package/dist/{UnsupportedRenderer-vjWyKDpT.js → UnsupportedRenderer-Z8yR4DCm.js} +1 -1
- package/dist/index-CB4lf4Rv.js +346 -0
- package/dist/light-file-preview.js +1 -1
- package/dist/light-file-preview.umd.cjs +66 -66
- package/dist/standalone/light-file-preview.iife.js +50 -50
- package/dist/standalone/style.css +1 -1
- package/dist/style.css +1 -1
- package/dist/vue2/{DocxRenderer-Z4HX5Nb8.js → DocxRenderer-DGXNIVsp.js} +1 -1
- package/dist/vue2/{PdfRenderer-qVQzlsuJ.js → PdfRenderer-CANDrYvV.js} +1 -1
- package/dist/vue2/SheetRenderer-CM49qq4y.js +918 -0
- package/dist/vue2/{TextRenderer-CCh9A3GD.js → TextRenderer-CFNsDxIx.js} +1 -1
- package/dist/vue2/{UnsupportedRenderer-Bv7s0246.js → UnsupportedRenderer-NMI6uTEn.js} +1 -1
- package/dist/vue2/light-file-preview-vue2.js +1 -1
- package/dist/vue2/light-file-preview-vue2.umd.cjs +108 -108
- package/dist/vue2/{vue2-DiVuCQ1b.js → vue2-n72zoIZI.js} +1491 -1450
- package/package.json +4 -1
- package/public/screenshots/effect-docx.png +0 -0
- package/public/screenshots/effect-pdf.png +0 -0
- package/public/screenshots/effect-pptx.png +0 -0
- package/public/screenshots/effect-xlsx.png +0 -0
- package/public/screenshots/preview-dialog.png +0 -0
- package/public/screenshots/preview-docs.png +0 -0
- package/public/screenshots/preview-home.png +0 -0
- package/dist/SheetRenderer-Dfa4Vi-f.js +0 -576
- package/dist/index-CNi6OyzI.js +0 -305
- package/dist/vue2/SheetRenderer-9kIteUQN.js +0 -576
package/README.md
CHANGED
|
@@ -1,42 +1,71 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">轻量预览 Light Preview</h1>
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
用于业务系统里的附件预览,支持远程 URL、本地 File、Blob,接入方式尽量保持简单。
|
|
5
|
+
</p>
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://gitee.com/hou_zhan_guo/light-file-preview" target="_blank" rel="noreferrer">Gitee</a>
|
|
9
|
+
·
|
|
10
|
+
<a href="https://www.npmjs.com/package/@work-zhanguo/light-file-preview" target="_blank" rel="noreferrer">npm</a>
|
|
11
|
+
</p>
|
|
6
12
|
|
|
7
13
|
## 项目简介
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
- 当前版本:`0.0.13`
|
|
16
|
+
- 适用场景:业务系统附件预览、在线查看、弹窗预览、新页面预览
|
|
17
|
+
- 支持 Vue 3、Vue 2 适配入口,以及非 Vue 项目的 standalone 产物
|
|
12
18
|
|
|
13
19
|
最近更新:
|
|
14
20
|
|
|
21
|
+
- `0.0.13`:修复弹窗失败后同文件无法重试、运行时配置更新不生效的问题,补充 README 示例图与发包说明
|
|
22
|
+
- `0.0.12`:修复 `xlsx` 部分单元格背景色、文字颜色和边框颜色未正确展示的问题,补充 `theme / tint / indexed` 颜色解析
|
|
15
23
|
- `0.0.11`:修复 `xlsx` 图片拉伸和底色覆盖问题,优化单元格内容的对齐、换行和数值展示
|
|
16
|
-
- `0.0.10`:优化 `xlsx` 预览密度,降低默认列宽和行高,减少横向滚动距离,整体样式更接近 Office
|
|
17
|
-
- `0.0.9`:优化 `xlsx` 图片锚点尺寸和裁切边界,补充更接近 Excel 的公式栏名字框与编辑条样式
|
|
18
|
-
- `0.0.8`:优化 `xlsx` 预览,补充工作表页签、首行首列编号区、冻结观感、单元格 hover / 选中高亮,并补充组件属性说明
|
|
19
|
-
- `0.0.7`:修复 Vue2 `vue-cli / webpack4` 项目引入 PDF 预览时报 `import.meta.url`、`process.getBuiltinModule` 解析错误
|
|
20
|
-
- `0.0.6`:修复 Vue2 `vue-cli / webpack4` 项目解析产物时报 `Unexpected token`,降低构建目标到 `es2018`
|
|
21
|
-
- `0.0.5`:修复 Vue2 `vue-cli / webpack4` 项目子路径入口解析失败,补充 `vue2.js` 和 `style.css` 兼容入口
|
|
22
|
-
- `0.0.4`:修复 Vue2 项目安装时的 `ERESOLVE` 依赖冲突,兼容 `Vue 2.6+` 和 `Vue 3.5+`
|
|
23
|
-
- `0.0.3`:发布 `@work-zhanguo/light-file-preview`,补充文档与站点构建说明
|
|
24
24
|
|
|
25
|
-
详细版本记录见 [CHANGELOG.md](./CHANGELOG.md)
|
|
25
|
+
详细版本记录见 [CHANGELOG.md](./CHANGELOG.md)。
|
|
26
|
+
|
|
27
|
+
## 效果预览
|
|
28
|
+
|
|
29
|
+
仓库里的原始截图在 `public/screenshots/` 目录。
|
|
30
|
+
|
|
31
|
+
下面的示例图使用 npm CDN 地址。当前仓库修改不会立即影响已发布版本;发布包含截图的新版本后,npm 页面会直接显示这些图片。
|
|
32
|
+
|
|
33
|
+
### DOCX
|
|
34
|
+
|
|
35
|
+

|
|
36
|
+
|
|
37
|
+
### XLSX
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
### PDF
|
|
42
|
+
|
|
43
|
+

|
|
44
|
+
|
|
45
|
+
### PPTX 降级展示
|
|
46
|
+
|
|
47
|
+
当前 `PPT` / `PPTX` 不做在线解析,组件会保留下载入口,不会伪装成已支持的在线预览。
|
|
48
|
+
|
|
49
|
+

|
|
26
50
|
|
|
27
51
|
## 支持文件
|
|
28
52
|
|
|
29
|
-
|
|
53
|
+
在线预览支持:
|
|
30
54
|
|
|
31
55
|
- `PNG`
|
|
32
56
|
- `JPG`
|
|
33
57
|
- `JPEG`
|
|
34
58
|
- `GIF`
|
|
35
59
|
- `WEBP`
|
|
60
|
+
- `BMP`
|
|
61
|
+
- `SVG`
|
|
36
62
|
- `PDF`
|
|
37
63
|
- `TXT`
|
|
38
64
|
- `JSON`
|
|
39
65
|
- `JS`
|
|
66
|
+
- `TS`
|
|
67
|
+
- `JSX`
|
|
68
|
+
- `TSX`
|
|
40
69
|
- `HTML`
|
|
41
70
|
- `CSS`
|
|
42
71
|
- `MD`
|
|
@@ -49,10 +78,17 @@
|
|
|
49
78
|
- `MP3`
|
|
50
79
|
- `WAV`
|
|
51
80
|
|
|
81
|
+
降级为下载入口:
|
|
82
|
+
|
|
83
|
+
- `DOC`
|
|
84
|
+
- `PPT`
|
|
85
|
+
- `PPTX`
|
|
86
|
+
- 其他未识别格式
|
|
87
|
+
|
|
52
88
|
补充说明:
|
|
53
89
|
|
|
54
90
|
- 支持远程 `URL`、本地 `File`、`Blob`
|
|
55
|
-
-
|
|
91
|
+
- 支持直接嵌入和弹窗预览
|
|
56
92
|
- 不支持的格式不强行预览,统一保留下载入口
|
|
57
93
|
|
|
58
94
|
## 项目依赖
|
|
@@ -65,26 +101,10 @@
|
|
|
65
101
|
|
|
66
102
|
## 安装
|
|
67
103
|
|
|
68
|
-
安装组件:
|
|
69
|
-
|
|
70
104
|
```bash
|
|
71
105
|
npm install @work-zhanguo/light-file-preview
|
|
72
106
|
```
|
|
73
107
|
|
|
74
|
-
如果是 `Vue3` 项目,注册入口:
|
|
75
|
-
|
|
76
|
-
```ts
|
|
77
|
-
import LightFilePreview from '@work-zhanguo/light-file-preview';
|
|
78
|
-
import '@work-zhanguo/light-file-preview/style.css';
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
如果是 `Vue2` 项目,注册入口:
|
|
82
|
-
|
|
83
|
-
```js
|
|
84
|
-
import LightFilePreview from '@work-zhanguo/light-file-preview/vue2';
|
|
85
|
-
import '@work-zhanguo/light-file-preview/style.css';
|
|
86
|
-
```
|
|
87
|
-
|
|
88
108
|
## 组件属性
|
|
89
109
|
|
|
90
110
|
| 属性 | 类型 | 默认值 | 说明 |
|
|
@@ -107,9 +127,62 @@ import '@work-zhanguo/light-file-preview/style.css';
|
|
|
107
127
|
- `update:visible`:弹窗关闭时回传状态
|
|
108
128
|
- `error`:解析失败时返回错误对象
|
|
109
129
|
|
|
110
|
-
##
|
|
130
|
+
## Vue 3 集成
|
|
111
131
|
|
|
112
|
-
|
|
132
|
+
```ts
|
|
133
|
+
import { createApp } from 'vue';
|
|
134
|
+
import App from './App.vue';
|
|
135
|
+
import LightFilePreview from '@work-zhanguo/light-file-preview';
|
|
136
|
+
import '@work-zhanguo/light-file-preview/style.css';
|
|
137
|
+
|
|
138
|
+
createApp(App).use(LightFilePreview).mount('#app');
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
```vue
|
|
142
|
+
<template>
|
|
143
|
+
<LightFilePreview source="/files/demo.pdf" />
|
|
144
|
+
</template>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Vue 2 集成
|
|
148
|
+
|
|
149
|
+
```js
|
|
150
|
+
import Vue from 'vue';
|
|
151
|
+
import LightFilePreview from '@work-zhanguo/light-file-preview/vue2';
|
|
152
|
+
import '@work-zhanguo/light-file-preview/style.css';
|
|
153
|
+
|
|
154
|
+
Vue.use(LightFilePreview);
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```vue
|
|
158
|
+
<template>
|
|
159
|
+
<light-file-preview :source="fileUrl" />
|
|
160
|
+
</template>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## 弹窗预览
|
|
164
|
+
|
|
165
|
+
```vue
|
|
166
|
+
<template>
|
|
167
|
+
<button @click="show = true">打开弹窗预览</button>
|
|
168
|
+
|
|
169
|
+
<LightFilePreview
|
|
170
|
+
v-model:visible="show"
|
|
171
|
+
source="https://501351981.github.io/vue-office/examples/dist/static/test-files/test.docx"
|
|
172
|
+
mode="dialog"
|
|
173
|
+
/>
|
|
174
|
+
</template>
|
|
175
|
+
|
|
176
|
+
<script setup lang="ts">
|
|
177
|
+
import { ref } from 'vue';
|
|
178
|
+
|
|
179
|
+
const show = ref(false);
|
|
180
|
+
</script>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## 新页面预览
|
|
184
|
+
|
|
185
|
+
建议同时传 `name`,这样扩展名识别更稳定。
|
|
113
186
|
|
|
114
187
|
```js
|
|
115
188
|
const remoteUrl = 'https://example.com/files/test.docx';
|
|
@@ -126,6 +199,11 @@ window.open(previewUrl, '_blank');
|
|
|
126
199
|
|
|
127
200
|
非 Vue 项目可以直接使用 standalone 产物。
|
|
128
201
|
|
|
202
|
+
如果你是从 npm 包里复制静态文件,建议复制下面两个文件:
|
|
203
|
+
|
|
204
|
+
- `dist/standalone/light-file-preview.iife.js`
|
|
205
|
+
- `dist/standalone/style.css`
|
|
206
|
+
|
|
129
207
|
```html
|
|
130
208
|
<link rel="stylesheet" href="/vendor/light-file-preview/style.css" />
|
|
131
209
|
<div id="preview-root"></div>
|
|
@@ -170,55 +248,19 @@ FilePreviewBlock.template = 'your_module.FilePreviewBlock';
|
|
|
170
248
|
</templates>
|
|
171
249
|
```
|
|
172
250
|
|
|
173
|
-
## Vue2 集成
|
|
174
|
-
|
|
175
|
-
通过单独适配入口接入:
|
|
176
|
-
|
|
177
|
-
```js
|
|
178
|
-
import Vue from 'vue';
|
|
179
|
-
import LightFilePreview from '@work-zhanguo/light-file-preview/vue2';
|
|
180
|
-
import '@work-zhanguo/light-file-preview/style.css';
|
|
181
|
-
|
|
182
|
-
Vue.use(LightFilePreview);
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
```vue
|
|
186
|
-
<template>
|
|
187
|
-
<light-file-preview :source="fileUrl" />
|
|
188
|
-
</template>
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## Vue3 集成
|
|
192
|
-
|
|
193
|
-
```ts
|
|
194
|
-
import { createApp } from 'vue';
|
|
195
|
-
import App from './App.vue';
|
|
196
|
-
import LightFilePreview from '@work-zhanguo/light-file-preview';
|
|
197
|
-
import '@work-zhanguo/light-file-preview/style.css';
|
|
198
|
-
|
|
199
|
-
createApp(App).use(LightFilePreview).mount('#app');
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
```vue
|
|
203
|
-
<template>
|
|
204
|
-
<LightFilePreview source="/files/demo.pdf" />
|
|
205
|
-
</template>
|
|
206
|
-
```
|
|
207
|
-
|
|
208
251
|
## 部署说明
|
|
209
252
|
|
|
210
|
-
|
|
253
|
+
组件库打包:
|
|
211
254
|
|
|
212
255
|
```bash
|
|
213
256
|
npm install
|
|
214
257
|
npm run build
|
|
258
|
+
```
|
|
215
259
|
|
|
216
|
-
|
|
217
|
-
dist/
|
|
260
|
+
产物目录:
|
|
218
261
|
|
|
219
|
-
|
|
220
|
-
dist/standalone
|
|
221
|
-
```
|
|
262
|
+
- `dist/`
|
|
263
|
+
- `dist/standalone/`
|
|
222
264
|
|
|
223
265
|
如果要把首页演示页和文档页一起部署成静态站点,执行:
|
|
224
266
|
|
|
@@ -228,18 +270,4 @@ npm run build:site
|
|
|
228
270
|
|
|
229
271
|
站点部署目录:
|
|
230
272
|
|
|
231
|
-
|
|
232
|
-
dist-site/
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
其中会包含:
|
|
236
|
-
|
|
237
|
-
- `dist-site/index.html`
|
|
238
|
-
- `dist-site/docs.html`
|
|
239
|
-
|
|
240
|
-
## 接入说明
|
|
241
|
-
|
|
242
|
-
- 本地上传文件只在当前浏览器中预览,不会保存到服务器
|
|
243
|
-
- 如果是远程文件预览,需要目标地址允许浏览器访问和跨域读取
|
|
244
|
-
- 弹窗预览会挂到 `body`
|
|
245
|
-
- 不支持的文件格式会保留下载入口
|
|
273
|
+
- `dist-site/`
|