kkfileView 使用问题年终答疑篇

2023-10-07 17:10

本文主要是介绍kkfileView 使用问题年终答疑篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

百度智能云 云生态狂欢季 热门云产品1折起>>>  hot3.png

前言

首先非常感谢社区同仁对 kkfileview 项目的关注,kkfileview 开源一年多以来,收获了两千六百多个赞以及获得码云最有价值项目GVP,这离不开大家的贡献和关注。同时,kkfileview 的设计模式,也被其他的类似项目所抄袭,这也从侧面说明了 kkfileview 存在的价值。但是开源容易,维护不易,在维护 kk 开源社区过程中也遇到了某些低素质人的恶语相向。但是我们并没有放弃,一直坚持做开源,从 kkfileview 之后也陆续开源了几个优秀的项目。由于公司事务原因,后面对 kkfileview 的问题关注的比较少,因为 kkfileview 的跨语言跨平台特性,使用人群比较广泛,以至于很多人在搭建环境过程中遇到了各种问题没有得到很好的解决,深感抱歉,这也直接导致 kkfileview 流失了一大部分的用户。正值年假将近腾出了点时间,正好可以好好捋一捋 kkfileview 的系列问题。

0add4bbe1d306bc84a881600cbdb02ac94c.jpg

进入正题

问题一、kkfileview项目怎么部署?

kkfileview使用java语言,底层基于spring boot框架开发,spring boot是一个为微服务而生的底层框架,项目打成jar包后自带了web 容器,服务器部署时不需要额外的tomcat容器,只需要将jar包丢到某个目录,然后执行一下脚本即可

nohup java -Dspring.profiles.active=uat -jar /home/it/file-preview/jodconverter-web-1.5.8.RELEASE.jar > /home/it/file-preview/log/app.log &

其中spring.profiles.active代表配置文件是uat的。

问题二、kkfileview依赖的外部组件主要作用是什么?

kkfileview主要依赖openoffice或者liberoffice、以及redis。openoffice主要用来转换word系列的办公文档,使其能够被浏览器直接或间接渲染,如doc、ppt会转换成pdf;excel会被转换成html。redis这里有两个作用,一是用来存储已转换过文件的文件名,用来避免重复转换提供效率。二是用来充当分布式队列,解决并发预览和有些大的文件可以提前入队转换的问题。

问题三、文件预览乱码了有哪些原因呢?

很多人反馈,我在本地运行很好,部署到服务器上后就乱码了。其实文件预览乱码问题很简单,一般有两个原因,一个是编码问题,一个是字体问题。我们先说字体问题。一般的做法是将Windows下的字体拷贝到Linux服务器上,具体操作如下:

将Windows下的C:\Windows\Fonts 目录下的文件完整拷贝到Linux下的 /usr/share/fonts目录。然后依次执行mkfontscale 、mkfontdir 、fc-cache使字体生效。

编码问题的话是个老生常谈的问题。因为其受运行所在主机环境的影响不确定因素比较高,常规做法是,修改配置文件中如下配置,一般都是utf-8或者gbk。还不行,就在启动脚本里设置-Dfile.encoding=UTF-8试试

server.tomcat.uri-encoding = UTF-8
converted.file.charset = GBK

问题四、本地运行起来后报文件找不到异常?

一般遇到这个异常是因为你的文件目录地址配置错误了,如下文件目录配置:

file.dir = /Users/chenkailing/test/

注意目录最后是以/结尾的

问题五、项目启动时,报错Redission is shutdown

出现这个问题一般有两个原因,原因一、redis服务本身有问题、或者redis服务有密码认证,项目没有配置密码,遇到redis带有密码认证的可在配置文件中加入如下配置

spring.redisson.password = xxx

原因二、openoffice进程未关闭。kkfileview在启动时会自动开启openoffice的转换服务进程,所以在启动kkfileview前,需要保证openoffice进程是关闭的

问题六、kkfileview部署成功后怎么接入呢?

kkfileview从设计之初就充分考虑了微服务的使用场景,以http接口提供服务实现了跨语言跨系统跨服务。要使用kkfileview预览,首先这个文件要可访问,然后就访问地址作为参数传入kkfileview接口即可,如下:

https://localhost/onlinePreview?url=http://www.xx.com/meinv.png

url后面的参数就是你要预览的文件地址,当然为了url参数接收的正确性,文件地址需要被编码

问题七、http://file.keking.cn 怎么访问不了?

我们的公共体验服务开放了近一年,开放服务能够最快速直观的体验kkfileview的预览功能,这为kkfileview项目带来了不少的用户。但是因为kkfileview和公司内部的业务系统部署在一起后面考虑到直接暴露服务带来的安全问题,所以就关闭了。这里呼吁如果有闲置服务器而且愿意提供帮助的欢迎联系我一起共建kkfileview。

问题八、相同的文件类型有的可以预览有的不可以?

这个是因为文件格式的兼容性问题,从两个类别的文件来聊聊这个问题。

一个是办公文档,微软的office一直在更新,当openoffice的更新没赶上office的功能时就会出现这种预览保报错的问题。最简单的鉴别方法就是直接使用openoffice打开是否有问题,能打开基本就能预览了。

一个压缩文件,压缩包不能预览很纯粹是因为压缩包格式的兼容性问题,压缩包的格式太多了,相同的zip格式压缩包也存在各种不同的压缩格式

问题九、kkfileview怎么集成到java项目?

一般有这个问题的是大概率是还没了解kkfileview的服务模式,kkfileview不需要集成到自己的项目里面,只要独立部署好kkfileview项目本身就可以对外提供文件预览服务了。具体可以参考问题六

结语

以上九个问题基本囊括了kkfileview使用过程中方方面面,希望此文能够帮助更多的kkfileview使用者以及将要使用kkfileview的所有同仁。再次感谢大家的关注与支持,同时也呼吁大家一起参与进来共建项目,给我们提更多的建议,让kkfileview走的更远更好。最后打个小广告,我们凯京在开源中国的官博成立了,欢迎关注我们,一起学习一起进步。

这篇关于kkfileView 使用问题年终答疑篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/159209

相关文章

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方