@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.
Files changed (28) hide show
  1. package/README.md +119 -91
  2. package/dist/SheetRenderer-Dr5f9ZTy.js +918 -0
  3. package/dist/{UnsupportedRenderer-vjWyKDpT.js → UnsupportedRenderer-Z8yR4DCm.js} +1 -1
  4. package/dist/index-CB4lf4Rv.js +346 -0
  5. package/dist/light-file-preview.js +1 -1
  6. package/dist/light-file-preview.umd.cjs +66 -66
  7. package/dist/standalone/light-file-preview.iife.js +50 -50
  8. package/dist/standalone/style.css +1 -1
  9. package/dist/style.css +1 -1
  10. package/dist/vue2/{DocxRenderer-Z4HX5Nb8.js → DocxRenderer-DGXNIVsp.js} +1 -1
  11. package/dist/vue2/{PdfRenderer-qVQzlsuJ.js → PdfRenderer-CANDrYvV.js} +1 -1
  12. package/dist/vue2/SheetRenderer-CM49qq4y.js +918 -0
  13. package/dist/vue2/{TextRenderer-CCh9A3GD.js → TextRenderer-CFNsDxIx.js} +1 -1
  14. package/dist/vue2/{UnsupportedRenderer-Bv7s0246.js → UnsupportedRenderer-NMI6uTEn.js} +1 -1
  15. package/dist/vue2/light-file-preview-vue2.js +1 -1
  16. package/dist/vue2/light-file-preview-vue2.umd.cjs +108 -108
  17. package/dist/vue2/{vue2-DiVuCQ1b.js → vue2-n72zoIZI.js} +1491 -1450
  18. package/package.json +4 -1
  19. package/public/screenshots/effect-docx.png +0 -0
  20. package/public/screenshots/effect-pdf.png +0 -0
  21. package/public/screenshots/effect-pptx.png +0 -0
  22. package/public/screenshots/effect-xlsx.png +0 -0
  23. package/public/screenshots/preview-dialog.png +0 -0
  24. package/public/screenshots/preview-docs.png +0 -0
  25. package/public/screenshots/preview-home.png +0 -0
  26. package/dist/SheetRenderer-Dfa4Vi-f.js +0 -576
  27. package/dist/index-CNi6OyzI.js +0 -305
  28. package/dist/vue2/SheetRenderer-9kIteUQN.js +0 -576
package/README.md CHANGED
@@ -1,42 +1,71 @@
1
- # @work-zhanguo/light-file-preview
1
+ <h1 align="center">轻量预览 Light Preview</h1>
2
2
 
3
- # Gitee: [https://gitee.com/hou_zhan_guo/light-file-preview](https://gitee.com/hou_zhan_guo/light-file-preview)
3
+ <p align="center">
4
+ 用于业务系统里的附件预览,支持远程 URL、本地 File、Blob,接入方式尽量保持简单。
5
+ </p>
4
6
 
5
- # npm:[https://www.npmjs.com/package/@work-zhanguo/light-file-preview](https://www.npmjs.com/package/@work-zhanguo/light-file-preview)
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
- 当前版本:`0.0.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
+ ![DOCX 预览效果](https://unpkg.com/@work-zhanguo/light-file-preview/public/screenshots/effect-docx.png)
36
+
37
+ ### XLSX
38
+
39
+ ![XLSX 预览效果](https://unpkg.com/@work-zhanguo/light-file-preview/public/screenshots/effect-xlsx.png)
40
+
41
+ ### PDF
42
+
43
+ ![PDF 预览效果](https://unpkg.com/@work-zhanguo/light-file-preview/public/screenshots/effect-pdf.png)
44
+
45
+ ### PPTX 降级展示
46
+
47
+ 当前 `PPT` / `PPTX` 不做在线解析,组件会保留下载入口,不会伪装成已支持的在线预览。
48
+
49
+ ![PPTX 降级效果](https://unpkg.com/@work-zhanguo/light-file-preview/public/screenshots/effect-pptx.png)
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
- 通过 `window.open` 传入网络地址,直接打开新页面预览。建议同时传 `name`,这样扩展名识别更稳定。
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
- ```bash
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/`