
# 文件预览常见问题合集
适用范围:本文档主要解决默认预览方式遇到的问题,二开预览服务的不符合本文档范围
## 排查步骤
### 通过 F12 查看请求
碰到预览的各种问题时,最基本的定位问题操作就是通过查看请求响应的报文,通过打开浏览器的开发者工具(快捷键 F12),之后点击预览,查看请求响应结果。
preview.do 便是预览时浏览器发起的请求,我们可以通过按照图中的步骤,查看结果。

### 了解文件服务和预览
了解文件服务的一些基本知识,能够帮助我们更好的描述问题以及定位问题。
#### 1)什么是临时文件?
我们通过附件面板上传文件时,发起的请求是 uploadFile.do ,此时文件只是上传到系统的临时文件缓存。只有单据进行保存后,才会上传到文件服务器。

#### 2)使用默认预览方式时,不同类型文件的预览有什么区别?
我们知道,像图片、PDF 这类文件是可以直接用浏览器打开的,所以在预览这类文件时,文件本身不需要(转换服务)进行处理。也就是说我们在验证云盘转换插件是否正常工作的时候不能使用这类文件来验证。
而 Word、Excel、PPT 等这类文件需要云盘转换服务进行转换。
#### 3)临时文件与保存单据持久化后的文件,在预览时有什么区别?
预览图片、PDF 没有区别。
预览 Word、Excel、PPT 等文件,在开启了参数 filepreview.cache.enable=true 时会有一些不同。
* 临时文件 : 每次预览时都会调用云盘转换服务进行转换。
* 持久化后文件:第一次预览时,会调用云盘转换服务进行转换,然后将转换后的文件保存到文件服务器上,下次再预览该文件时,使用缓存的文件。
所以在验证云盘转换插件是否正常工作的时候,不能使用历史单据上的 Word、Excel 等这类文件,很可能以前预览过,已经有缓存的文件,这样得出的结论是不准确的。
持久化后的文件,预览会先从文件服务器上查询缓存,这个ERROR 表示没有找到缓存,不是程序错误(后面的版本会优化日志)

## 常见问题
### 1)如何配置预览方式?

### 2)附件面板不显示预览按钮?
预览功能通过 MC 参数进行控制,MC 配置中心设置 fileserver.attachment.preview = true 即可显示预览按钮。(MC参数配置后需要进行发布)
### 3)PDF 无法预览?

点击新页签打开,提示未能加载PDF文档

一般与水印有关,苍穹平台使用开源的水印方案,目前开源的方案在对文件加水印之后,有的文件无法在浏览器打开。这个暂时没有解决方案。可以考虑下载查看。
查看当前单据是否有使用了水印,并关闭水印,再尝试预览。

### 4)504 Gateway Time-out

预览响应为 504 Gateway Time-out,对于公有云来说,是因为预览超时1分钟,是华为云 WAF 限制。
### 5)云盘服务响应失败: Connection refused
F12查看response

一般是网络问题,检查网络连通性
### 6)云盘服务响应失败: Read time out
F12查看 response

response:

登录安装了预览插件的Windows机器,打开任务管理器,查看是否有大量Word、Excel、PowerPoint进程堆积:

如果有大量进程堆积,在cmd中使用以下命令清理进程:(无论是否有进程堆积,都可以执行下面的命令,该命令无副作用)
```
taskkill /f /im EXCEL.EXE
taskkill /f /im winword.EXE
```
/f 表示强制终止
/im 指定进程名称
### 7)云盘服务下载文档失败
F12查看response

response:

一般是网络问题,检查网络连通性(查看对应章节)
### 8)从临时文件缓存中获取文件失败
F12查看response

response:

### 9)word、excel、ppt不能预览;图片、pdf可以预览
word、excel、ppt 需要先通过云盘转换才能预览,所以该场景大概率是云盘预览服务与苍穹平台服务之间网络问题导致。
检查预览方式,一般为默认方式。空白等于默认方式。点开可以看到是默认方式。

一般是网络问题,检查网络连通性(查看对应章节)
### 10)word不能预览,excel能预览
检查云盘的安装位置,如果放在路径有空格的位置,会导致word不能预览,excel能预览的问题。(建议放在C盘根目录即可)

### 11)附件有的能预览,有的不能预览
由多种原因可能导致这种情况,需要逐个排查。
原因1:水印
部分文档预览不了,一般与水印有关,苍穹平台使用开源的水印方案,目前开源的方案在对文件加水印之后,有的水印后文件通过浏览器无法打开。这个暂时没有解决方案。可以考虑下载查看。
查看当前单据是否有使用了水印,并关闭水印,再尝试预览。

原因2:文件本身问题
Office会检测文件本身是否存在问题。下图这种情况会导致无法预览。需要客户自行在本地处理该文件后,重新上传。

### 12)503 文件可能已被损坏,无法进行pdf转换,预览失败
F12查看response

response:

是因为云盘服务转换失败,问题原因需要查看云盘日志进行分析。
1)连接云盘(部署云盘预览插件的那台Windows机器)。(私有云的请先联系客户的运维,询问如何连接)
2)打开云盘日志。
3)根据以下场景进行处理
**场景1:DCOM配置不正确**

1)重新配置Office的DCOM组件。可能管理员的账号或密码被修改过,需要重新配置账号密码。
## 检查网络连通性
1)monitor 查看 yunpan.previewUrl 配置是否为实际部署云盘地址。(默认 http://127.0.0.1:9400)

2)云盘服务器上(Windows 机器),输入 http://localhost:9400/api/status 确认云盘服务是否正常。

3)检查苍穹 -> 云盘的网络是否连通
a. 进入苍穹服务容器,ping 云盘所在机器。(如果不通,请确保苍穹容器与云盘之间网络互通)

b. 进入苍穹服务容器,telnet 预览服务。(如果不通,可能是防火墙限制了9400端口,放开防火墙的限制即可)

4)检查云盘-> 苍穹的网络是否连通
a. ping 苍穹域名能否畅通。如果不通则打通网络:
(1)如果和苍穹服务是局域网,则添加域名映射ip。找到hosts文件在最后面新增一行 ,格式:苍穹局域网ip苍穹域名 如:172.16.0.167 cc.haers.com
(2)如果云盘转换服务器和苍穹服务不在局域网,则让运维开通云盘转换服务器所在机器的对外网络;注意开放响应端口
b. 进入云盘所在机器(Windows),通过日志找到附件下载 downUrl ,在**云盘所在机器**的浏览器中打开downUrl ,检查云盘机器是否能下载文件。
根据上述配置,找到日志文件:

获取downUrl

在**云盘所在机器**的浏览器中打开downUrl ,检查云盘机器是否能下载文件。

## 部署预览插件
**第〇步:转换插件部署依赖**
| 服务器 | 4核CPU,4G内存,50G以上的独立的磁盘容量(SSD) |
| --- | --- |
| 服务器操作系统版本 | Windows Server 2012 以上。必须激活,否则可能有问题。 |
| Office办公软件版本 | Office 2010(最高2016)。必须激活,否则可能有问题。 |
| 如果要支持visio转换pdf | Visio2013 |
| 预览转换插件convert | |
**第一步:部署预览插件**
建议将插件部署在C盘根目录。
![31.webp](/