aspose-words 解决linux目录更新页码错乱问题

本文探讨了在Linux环境下使用Aspose-Words解决Word文档目录页码错乱的技术挑战。通过分析问题原因,着重于字体缺失,提供了解决方案,包括安装Windows字体、配置字体路径和使用Aspose-Words进行正确更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

aspose-words 解决linux目录更新页码错乱问题


问题描述

aspose-words踩坑-windows环境下正常,在linux环境下目录的页码错乱

导出word我用的是poi-tl,poi-tl要对目录更新只能用Apache POI的document().enforceUpdateFields()来更新目录,但是使用enforceUpdateFields()方法导出的word文件打开的时候会有一个提示框,并且是不支持wps的,所以在目录更新我改用aspose-words


原因分析:

在window下没有问题但是在linux下有问题,说明不是代码或者输入输出流编码的问题,原因是两个平台环境的问题。说明linux环境中缺少相应的字体以供使用,可能会导致导出的文件字体乱码,或者更新域错乱问题。


解决方案:

1.更新字体

  1. 在linux环境下安装win字体,将win机器的C:\Windows\Fonts目录下的全部文件拷贝到linux服务器字体安装目录下,然后执行以下命令更新字体缓存。
    在这里插入图片描述
  2. linux字体库位置在/usr/share/fonts/,在这个目录下新建一个文件夹,将win下的字体文件全部拷贝进去
    在这里插入图片描述
  3. 安装字体命令
contos安装插件
yum install fontconfig
yum install mkfontscale

修改字体权限
chmod -R 755 /usr/share/fonts/chinese

安装字体命令
cd /usr/share/fonts/chinese
mkfontscale
mkfontdir 
fc-cache -fv

让字体生效命令
source /etc/profile

4.如果项目是用docker部署,可以在docker-compose文件里添加数据卷,共享宿主机字体。如果项目不是用docker部署这步跳过。

 ufo-evaluation:
    build:
      context: /root/build/evaluation
    image: ufo/evaluation:1.0.0.alpha
    container_name: ufo-evaluation
    command:
      - --spring.profiles.active=test
    ports:
      - "88:88"
     #共享宿主机字体
    volumes:
      - /usr/share/fonts/chinese:/usr/share/fonts/chinese
    privileged: true
    restart: always
    networks:
      - ufo_net
    depends_on:
      - ufo-redis
      - ufo-mysql

2.修改代码

		OsInfo osInfo = SystemUtil.getOsInfo();
		//如果是linux系统,使用/usr/share/fonts/chinese文件下的字体库
		if (osInfo.isLinux()) {
			FontSettings.getDefaultInstance().setFontsFolder("/usr/share/fonts/chinese", true);
		}
		//实例化document
		Document document = new Document(file.getPath());
		//aspose.words更新目录
		document.updateFields();
		//导出word
		document.save(response.getOutputStream(), SaveFormat.DOCX);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值