最新公告
  • 欢迎您光临码巴巴,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • kkFileView 预览功能中乱码

    kkFileView 预览功能中乱码 最后编辑:2022-09-21
    增值服务: 自动发货 使用说明 安装指导 环境配置二次开发BUG修复

    1.office,图片等多种文件格式添加预览功能,使用了俩种方式,第一种通过

    <iframe
          class="child"
          frameborder="0"
          :src="'https://view.officeapps.live.com/op/view.aspx?src=' + this.downloadUrl"
          :style="{ width: width, height: height }"
        >
        </iframe>

    通过这种方式,也做出来了,只是效果真心不太好,毕竟是 officeapps 提供的服务,对于国人来说真的不太友好

    2.之后就是用了kkFileView  挺好用的一个开源项目,本地启动,运行一切都完美,还有附加的水印效果也不错,范式放到了ubuntu20.04上,就开始出现各种问题了

    首先是执行启动文件,就各种报错

    报错1:各种配置文件的路径找不到

    因为我喜欢这样的结构

    所以对应的配置文件为:

    #######################################不可动态配置,需要重启生效#######################################
    server.port = ${KK_SERVER_PORT:8012}
    server.servlet.context-path= ${KK_CONTEXT_PATH:/}
    server.servlet.encoding.charset = utf-8
    #文件上传限制
    spring.servlet.multipart.max-file-size=500MB
    spring.servlet.multipart.max-request-size=500MB
    ## Freemarker 配置
    spring.freemarker.template-loader-path = classpath:/web/
    spring.freemarker.cache = false
    spring.freemarker.charset = UTF-8
    spring.freemarker.check-template-location = true
    spring.freemarker.content-type = text/html
    spring.freemarker.expose-request-attributes = true
    spring.freemarker.expose-session-attributes = true
    spring.freemarker.request-context-attribute = request
    spring.freemarker.suffix = .ftl
    
    # office-plugin
    ## office转换服务的进程数,默认开启两个进程
    office.plugin.server.ports = 2001,2002
    ## office 转换服务 task 超时时间,默认五分钟
    office.plugin.task.timeout = 5m
    
    #预览生成资源路径(默认为打包根路径下的file目录下)
    #file.dir = D:\\kkFileview\\
    file.dir = ${KK_FILE_DIR:default}
    
    #允许预览的本地文件夹 默认不允许任何本地文件被预览
    #file.dir = D:\\kkFileview\\
    local.preview.dir = ${KK_LOCAL_PREVIEW_DIR:default}
    
    
    #openoffice home路径
    #office.home = C:\\Program Files (x86)\\OpenOffice 4
    office.home = ${KK_OFFICE_HOME:default}
    
    #缓存实现类型,不配默认为内嵌RocksDB(type = default)实现,可配置为redis(type = redis)实现(需要配置spring.redisson.address等参数)和 JDK 内置对象实现(type = jdk),
    cache.type =  ${KK_CACHE_TYPE:jdk}
    #redis连接,只有当cache.type = redis时才有用
    spring.redisson.address = ${KK_SPRING_REDISSON_ADDRESS:127.0.0.1:6379}
    spring.redisson.password = ${KK_SPRING_REDISSON_PASSWORD:}
    #缓存是否自动清理 true 为开启,注释掉或其他值都为关闭
    cache.clean.enabled = ${KK_CACHE_CLEAN_ENABLED:true}
    #缓存自动清理时间,cache.clean.enabled = true时才有用,cron表达式,基于Quartz cron
    cache.clean.cron = ${KK_CACHE_CLEAN_CRON:0 0 3 * * ?}
    
    #######################################可在运行时动态配置#######################################
    #提供预览服务的地址,默认从请求url读,如果使用nginx等反向代理,需要手动设置
    #base.url = https://file.keking.cn
    base.url = ${KK_BASE_URL:default}
    
    #信任站点,多个用','隔开,设置了之后,会限制只能预览来自信任站点列表的文件,默认不限制
    #trust.host = file.keking.cn,kkfileview.keking.cn
    trust.host = ${KK_TRUST_HOST:default}
    
    #是否启用缓存
    cache.enabled = ${KK_CACHE_ENABLED:true}
    
    #文本类型,默认如下,可自定义添加
    simText = ${KK_SIMTEXT:txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd}
    #多媒体类型,默认如下,可自定义添加
    media = ${KK_MEDIA:mp3,wav,mp4,flv}
    #是否开启多媒体类型转视频格式转换,目前可转换视频格式有:avi,mov,wmv,3gp,rm
    #请谨慎开启此功能,建议异步调用添加到处理队列,并且增加任务队列处理线程,防止视频转换占用完线程资源,转换比较耗费时间,并且控制了只能串行处理转换任务
    media.convert.disable = ${KK_MEDIA_CONVERT_DISABLE:false}
    #支持转换的视频类型
    convertMedias = ${KK_CONVERTMEDIAS:avi,mov,wmv,mkv,3gp,rm}
    #office类型文档(word ppt)样式,默认为图片(image),可配置为pdf(预览时也有按钮切换)
    office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image}
    #是否关闭office预览切换开关,默认为false,可配置为true关闭
    office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false}
    
    #是否禁止演示模式
    pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true}
    #是否禁止打开文件
    pdf.openFile.disable = ${KK_PDF_OPEN_FILE_DISABLE:true}
    #是否禁止打印转换生成的pdf文件
    pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true}
    #是否禁止下载转换生成的pdf文件
    pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true}
    #是否禁止bookmark
    pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true}
    #是否禁用首页文件上传
    file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:true}
    
    #预览源为FTP时 FTP用户名,可在ftp url后面加参数ftp.username=ftpuser指定,不指定默认用配置的
    ftp.username = ${KK_FTP_USERNAME:ftpuser}
    #预览源为FTP时 FTP密码,可在ftp url后面加参数ftp.password=123456指定,不指定默认用配置的
    ftp.password = ${KK_FTP_PASSWORD:123456}
    #预览源为FTP时, FTP连接默认ControlEncoding(根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK),可在ftp url后面加参数ftp.control.encoding=UTF-8指定,不指定默认用配置的
    ftp.control.encoding = ${KK_FTP_CONTROL_ENCODING:UTF-8}
    
    #水印内容
    #例:watermark.txt = ${WATERMARK_TXT:凯京科技内部文件,严禁外泄}
    #如需取消水印,内容设置为空即可,例:watermark.txt = ${WATERMARK_TXT:}
    watermark.txt = ${WATERMARK_TXT:内部文件,严禁外泄}
    #水印x轴间隔
    watermark.x.space = ${WATERMARK_X_SPACE:10}
    #水印y轴间隔
    watermark.y.space = ${WATERMARK_Y_SPACE:50}
    #水印字体
    watermark.font = ${WATERMARK_FONT:微软雅黑}
    #水印字体大小
    watermark.fontsize = ${WATERMARK_FONTSIZE:50px}
    #水印字体颜色
    watermark.color = ${WATERMARK_COLOR:black}
    #水印透明度,要求设置在大于等于0.005,小于1
    watermark.alpha = ${WATERMARK_ALPHA:0.2}
    #水印宽度
    watermark.width = ${WATERMARK_WIDTH:500}
    #水印高度
    watermark.height = ${WATERMARK_HEIGHT:300}
    #水印倾斜度数,要求设置在大于等于0,小于90
    watermark.angle = ${WATERMARK_ANGLE:30}
    
    #Tif类型图片浏览模式:tif(利用前端js插件浏览);jpg(转换为jpg后前端显示);pdf(转换为pdf后显示,便于打印)
    tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif}
    
    

     

    对应的可执行文件:

    #!/bin/bash
    #
    #
    #############################
    # First_Author:  凯京科技
    # Second_Author:  sanxi
    # Version: 1.1
    # Date:    2021/09/17
    # Description:  v1.1:修改进程启动机制为pid形式。
    #############################
    #
    DIR_HOME=("/opt/openoffice.org3" "/opt/libreoffice" "/opt/libreoffice6.1" "/opt/libreoffice7.0" "/opt/libreoffice7.1" "/opt/openoffice4" "/usr/lib/openoffice" "/usr/lib/libreoffice")
    FLAG=
    OFFICE_HOME=
    KKFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd)
    PID_FILE_NAME="kkFileView.pid"
    PID_FILE="${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}"
    export KKFILEVIEW_BIN_FOLDER=$KKFILEVIEW_BIN_FOLDER
    #
    ## 如pid文件不存在则自动创建
    if [ ! -f ${PID_FILE_NAME} ]; then
      touch "${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}"
    fi
    ## 判断当前是否有进程处于运行状态
    if [ -s "${PID_FILE}" ]; then
      PID=$(cat "${PID_FILE}")
      echo "进程已处于运行状态,进程号为:${PID}"
      exit 1
    else
      cd "$KKFILEVIEW_BIN_FOLDER" || exit 1
      echo "Using KKFILEVIEW_BIN_FOLDER $KKFILEVIEW_BIN_FOLDER"
      grep 'office\.home' ./config/application.properties | grep '!^#'
      if [ $? -eq 0 ]; then
        echo "Using customized office.home"
      else 
      for i in ${DIR_HOME[@]}
        do
          if [ -f "$i/program/soffice.bin" ]; then
            FLAG=true
            OFFICE_HOME=${i}
            break
          fi
        done
        if [ ! -n "${FLAG}" ]; then
          echo "Installing OpenOffice"
          sh ./install.sh
        else 
          echo "Detected office component has been installed in $OFFICE_HOME"
        fi
      fi
    
      ## 启动kkFileView
      echo "Starting kkFileView..."
      nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=./config/application.properties -jar kkFileView-4.1.0-SNAPSHOT.jar > ./log/kkFileView.log 2>&1 &
      echo "Please execute ./showlog.sh to check log for more information"
      PROCESS=$(ps -ef | grep kkFileView | awk 'NR==1{print $2}')
      # 启动成功后将进程号写入pid文件
      echo "$PROCESS" > "$PID_FILE"
    fi
    

    3.大致配置成这样的话,就可以正常启动了。但是在使用过程中出现了问题,.txt  .jpg .pdf 文件可以很完美的完成预览效果,而word,excel, ppt 等会出现中文乱码为了

    官网上给出的答案是:

     

    如果那个小伙伴没有找到字体包,点击右侧下载按钮即可找到下载链接(良心博主,不要钱)

    4.文件都上传了之后,在执行mkfontscale 、mkfontdir 、fc-cache使字体生效时,一直提示安装依赖软件,但是安装不上去,之后又改变了apt的源

    记得先备份!!!!!!!!!!!!!!!

    vim /etc/apt/sources.list

    将里面的内容改为阿里云即可,以下是用Ubuntu16.04为例子。16.04对应的代称是xenial。如果其他版本,可以将代称修改。

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

    ubuntu的源最好也加上,避免某些库找不到。

    deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse

    运行sudo apt-get update 等待完成更新

    运行sudo apt-get upgrade 等待完成更新

    在执行mkfontscale 、mkfontdir 、fc-cache,并执行提示中,需要安装的软件,安装完成之后,在执行 kfontscale 、mkfontdir 、fc-cache 完美运行

    5.最后重新启动了一下项目,测试完美解码

     

     

     

    猜你喜欢

    猜你在找

    1. 本站所有资源来源于用户上传和网络,如有侵权请及时联系站长!

    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!

    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!

    5. 如有链接无法下载、失效或广告,请联系管理员处理!

    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!

    7. 如遇到加密压缩包,默认解压密码为"mababa.xin",如遇到无法解压的请联系管理员!


    码巴巴-优质代码创造者 » kkFileView 预览功能中乱码

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    一个高级程序员模板开发平台
    问问管理员?
    • 2022-09-19Hi,初次和大家见面了,请多关照!

    发表评论

    • 44会员总数(位)
    • 92资源总数(个)
    • 1本周发布(个)
    • 0 今日发布(个)
    • 1458稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    升级SVIP尊享更多特权立即升级