当前位置: 首页 > news >正文

XHTMLConverter把docx转换html报java.lang.NullPointerException异常

一.报错

1.报错信息

org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerExceptionat org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:77)at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.doConvert(XHTMLConverter.java:63)at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.doConvert(XHTMLConverter.java:38)at org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:45)at cn.com.sinosoft.app.word.OfficeUtil.docx2Html(OfficeUtil.java:146)at cn.com.sinosoft.app.word.OfficeUtil.wordToPdf(OfficeUtil.java:409)at cn.com.sinosoft.app.word.Test.main(Test.java:68)
Caused by: java.lang.NullPointerExceptionat org.apache.poi.xwpf.converter.core.utils.XWPFTableUtil.getGridColList(XWPFTableUtil.java:183)at org.apache.poi.xwpf.converter.core.utils.XWPFTableUtil.computeColWidths(XWPFTableUtil.java:116)at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTable(XWPFDocumentVisitor.java:867)at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:251)at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.start(XWPFDocumentVisitor.java:199)at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:73)... 6 more

2.重点报错信息


org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerExceptionCaused by: java.lang.NullPointerExceptionat org.apache.poi.xwpf.converter.core.utils.XWPFTableUtil.getGridColList(XWPFTableUtil.java:183)

3.报错代码位置

二。问题分析

        我做的是docx->html->pdf转换的流程。需要在docx中插入table表。没插入之前可以正常运行,插入之后,docx到html报以上错误。

1.docx插入完之后,打开docx表格可以正常显示,但是转换html报错。于是把table表剪切出来,又粘贴进去,发现docx->html可以正常转换。疑问:docx可能帮助我做了什么,还不清楚。

2.报错CTTblGrid没有,搜了一下CTTblGrid的用途,和相关报错的前辈处理方案。于是知道了,自己在插入table在docx里边时,没有设置表格宽度。这点docx能显示,转换不行,查问题太头疼,官方jar还需要补丁一下。(或者是我版本用的太低了)

前辈文章:

解决用POI库生成的word文件中的表格在python-docx无法解析的问题_ -CSDN博客 https://blog.csdn.net/liangxiaogang5/article/details/136950154word转html过程中出现NullPointerException解决_xhtmlconverter-CSDN博客https://blog.csdn.net/qq_40707682/article/details/107343720#:~:text=%E5%B7%A5%E4%BD%9C%E4%B8%AD%E9%81%87%E5%88%B0XHTMLConverter.getInstance%20%28%29.convert%20%28document%2C%20baos%2C%20null%29%3B%E8%BF%87%E7%A8%8B%E4%B8%AD%E6%8A%A5NullPointerException,%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95%EF%BC%9A%E5%9C%A8HTMLConverter.getInstance%20%28%29.convert%20%28document%2C%20baos%2C%20null%29%3B%E5%89%8D%E9%9D%A2%E5%8A%A0%E4%B8%8A%E4%BB%A3%E7%A0%81document.createNumbering%20%28%29%3B

三。解决方案

在创建table之后,设置table的列宽。

    public static void setCTTblGrid(XWPFTable table){CTTbl ctTbl = table.getCTTbl();CTTblGrid tblGrid = ctTbl.getTblGrid();if (tblGrid == null) {tblGrid = ctTbl.addNewTblGrid();for (int i = 0; i < 2; i++) {CTTblGridCol ctTblGridCol = tblGrid.addNewGridCol();ctTblGridCol.setW(new BigInteger("1000"));}}}

四。总结

在docx转换html过程中,org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException。这个报错可能很多种情况都会发生。这个可以根据具体报错信息,分析自己的docx是自己通过代码添加元素的时候,是不是有什么属性没有设置,希望能帮助大家。

XHTMLConverter.getInstance().convert官方提供的这个方法,默认各种属性都有,一些地方没有判null逻辑。

 

相关文章:

XHTMLConverter把docx转换html报java.lang.NullPointerException异常

一.报错 1.报错信息 org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerExceptionat org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:77)at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.doConve…...

教育科技质检的三重挑战 质检LIMS系统在教育技术研发的应用

在教育技术研发领域&#xff0c;实验室作为产品验证的核心环节&#xff0c;其质检效率与数据安全性直接关乎企业的创新竞争力。LIMS&#xff08;实验室信息管理系统&#xff09;作为贯穿检测全流程的数字化中枢&#xff0c;正在成为教育科技企业的"质量守护者"。本文…...

MySQL最左前缀原则深度解析:优化索引设计的核心法则

一、什么是最左前缀原则&#xff1f; 最左前缀原则&#xff08;Leftmost Prefix Principle&#xff09; 指在使用复合索引&#xff08;Composite Index&#xff09;时&#xff0c;MySQL会按照索引定义的列顺序&#xff0c;从左到右匹配查询条件。只有连续且从最左侧开始的列组…...

多模态大语言模型arxiv论文略读(三十五)

On the Out-Of-Distribution Generalization of Multimodal Large Language Models ➡️ 论文标题&#xff1a;On the Out-Of-Distribution Generalization of Multimodal Large Language Models ➡️ 论文作者&#xff1a;Xingxuan Zhang, Jiansheng Li, Wenjing Chu, Junjia…...

Linux 安装pm2并全局可用

前言 本文基于&#xff1a;操作系统 CentOS Stream 8 使用工具&#xff1a;Xshell8、Xftp8 服务器基础环境&#xff1a; node - 请查看 Linux安装node并全局可用 所需服务器基础环境&#xff0c;请根据提示进行下载、安装。 1.安装依赖 npm install pm2 -g2.配置全局软链…...

39.剖析无处不在的数据结构

数据结构是计算机中组织和存储数据的特定方式&#xff0c;它的目的是方便且高效地对数据进行访问和修改。数据结构表述了数据之间的关系&#xff0c;以及操作数据的一系列方法。数据又是程序的基本单元&#xff0c;因此无论是哪种语言、哪种领域&#xff0c;都离不开数据结构&a…...

基于 Vue 的Tiptap 富文本编辑器使用指南

目录 &#x1f9f0; 技术栈 &#x1f4e6; 所需依赖 &#x1f4c1; 文件结构 &#x1f9f1; 编辑器组件实现&#xff08;components/Editor.vue&#xff09; ✨ 常用操作指令 &#x1f9e0; 小贴士 &#x1f9e9; Tiptap 扩展功能使用说明&#xff08;含快捷键与命令&am…...

【音视频】AAC-ADTS分析

AAC-ADTS 格式分析 AAC⾳频格式&#xff1a;Advanced Audio Coding(⾼级⾳频解码)&#xff0c;是⼀种由MPEG-4标准定义的有损⾳频压缩格式&#xff0c;由Fraunhofer发展&#xff0c;Dolby, Sony和AT&T是主 要的贡献者。 ADIF&#xff1a;Audio Data Interchange Format ⾳…...

vue中将elementUI和echarts转成pdf文件

若要将包含 ElementUI 组件数据和多个 ECharts 图表的数据转换为 PDF 文档&#xff0c;可结合 html2canvas、jspdf 以及 dom-to-image 来实现。其中&#xff0c;html2canvas 和 dom-to-image 可将 ECharts 图表转换为图片&#xff0c;jspdf 则用于生成 PDF 文档。对于 ElementU…...

基于 Electron、Vue3 和 TypeScript 的辅助创作工具全链路开发方案:涵盖画布系统到数据持久化的完整实现

基于 Electron、Vue3 和 TypeScript 的辅助创作工具全链路开发方案&#xff1a;涵盖画布系统到数据持久化的完整实现 引言 在数字内容创作领域&#xff0c;高效的辅助工具是连接创意与实现的关键桥梁。创作者需要一款集可视化画布、节点关系管理、数据持久化于一体的专业工具&…...

本地部署DeepSeek-R1模型接入PyCharm

以下是DeepSeek-R1本地部署及接入PyCharm的详细步骤指南,整合了视频内容及官方文档核心要点: 一、本地部署DeepSeek-R1模型 1. 安装Ollama框架 ​下载安装包 访问Ollama官网(https://ollama.com/download)或通过视频提供的百度云盘链接下载对应系统的安装包。Windows用户…...

基于LightGBM-TPE算法对交通事故严重程度的分析与可视化

基于LightGBM-TPE算法对交通事故严重程度的分析与可视化 原文&#xff1a; Analysis and visualization of accidents severity based on LightGBM-TPE 1. 引言部分 文章开篇强调了道路交通事故作为意外死亡的主要原因&#xff0c;引起了多学科领域的关注。分析事故严重性特…...

音视频小白系统入门课-3

本系列笔记为博主学习李超老师课程的课堂笔记&#xff0c;仅供参阅 往期课程笔记传送门&#xff1a; 音视频小白系统入门笔记-0音视频小白系统入门笔记-1音视频小白系统入门笔记-2 视频&#xff1a; 由一组图像组成&#xff1a;像素、分辨率、RGB 8888(24位) 、RGBA(32位)为…...

考研系列-计算机网络-第五章、传输层

一、传输层提供的服务 1.重点知识...

将Ubuntu系统中已有的Python环境迁移到Anaconda的虚拟环境中

需求&#xff1a;关于如何将Ubuntu系统中已有的Python环境迁移到Anaconda的虚拟环境test2里&#xff0c;而且他们提到用requirements.txt 安装一直报错&#xff0c;所以想尝试直接拷贝的方法。 可以尝试通过直接拷贝移植的方式迁移Python环境到Anaconda虚拟环境&#xff0c;但…...

AI 数字短视频数字人源码开发:多维赋能短视频生态革新​

在短视频行业深度发展的进程中&#xff0c;AI 数字短视频数字人源码开发凭借其独特的技术优势&#xff0c;从多个维度为行业生态带来了革命性的变化&#xff0c;重塑短视频创作、传播与应用的格局。 数据驱动&#xff0c;实现内容精准化创作 AI 数字短视频数字人源码开发能够深…...

ffmpeg 硬解码相关知识

一&#xff1a;FFMPEG 支持的硬解方式&#xff1a;如下都是了解知识 DXVA2 - windows DXVA2 硬件加速技术解析‌ ‌一、核心特性与适用场景‌ ‌技术定义‌&#xff1a;DXVA2&#xff08;DirectX Video Acceleration 2&#xff09;是微软推出的基于 DirectX 的硬件加速标准…...

Ubuntu数据连接访问崩溃问题

目录 一、分析问题 1、崩溃问题本地调试gdb调试&#xff1a; 二、解决问题 1. 停止 MySQL 服务 2. 卸载 MySQL 相关包 3. 删除 MySQL 数据目录 4. 清理依赖和缓存 5.重新安装mysql数据库 6.创建程序需要的数据库 三、验证 1、动态库更新了 2、头文件更新了 3、重新…...

边缘计算全透视:架构、应用与未来图景

边缘计算全透视&#xff1a;架构、应用与未来图景 一、产生背景二、本质三、特点&#xff08;一&#xff09;位置靠近数据源&#xff08;二&#xff09;分布式架构&#xff08;三&#xff09;实时性要求高 四、关键技术&#xff08;一&#xff09;硬件技术&#xff08;二&#…...

迅为iTOP-RK3576开发板/核心板6TOPS超强算力NPU适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品

迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片&#xff0c;集成了4个Cortex-A72和4个Cortex-A53核心&#xff0c;以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。 支持INT4/INT8/INT16/FP16/BF16/TF32混合运算&a…...

前沿分享|技术雷达202504月刊精华

本期雷达 ###技术部分 7. GraphRAG 试验 在上次关于 检索增强生成&#xff08;RAG&#xff09;的更新中&#xff0c;我们已经介绍了GraphRAG。它最初在微软的文章中被描述为一个两步的流程&#xff1a; &#xff08;1&#xff09;对文档进行分块&#xff0c;并使用基于大语言…...

[创业之路-380]:企业法务 - 企业经营中,企业为什么会虚开増值税发票?哪些是虚开増值税发票的行为?示例?风险?

一、动机与风险 1、企业虚开增值税发票的动机 利益驱动 骗抵税款&#xff1a;通过虚开发票虚增进项税额&#xff0c;减少应纳税额&#xff0c;降低税负。公司套取国家的利益。非法套现&#xff1a;虚构交易开具发票&#xff0c;将资金从公司账户转移至个人账户&#xff0c;用…...

嵌入式:ARM公司发展史与核心技术演进

一、发展历程&#xff1a;从Acorn到全球算力基石 1. ​起源&#xff08;1978-1990&#xff09;​ 1978年​&#xff1a;奥地利物理学家Hermann Hauser与工程师Chris Curry创立剑桥处理器公司&#xff08;CPU Ltd.&#xff09;&#xff0c;后更名为**艾康电脑&#xff08;Acor…...

ubuntu的各种工具配置

1.nfs&#xff1a;虚拟机桥接模式下&#xff0c;开发板和虚拟机保持在同一网段下&#xff0c;开发板不要直连电脑 挂载命令&#xff1a;mount -v -t nfs 192.168.110.154:/home/lhj /mnt -o nolock (1) 安装 NFS 服务器 sudo apt update sudo apt install nfs-kernel-server -y…...

Go 剥离 HTML 标签的三把「瑞士军刀」——从正则到 Bluemonday

1 为什么要「剥皮」&#xff1f; 安全&#xff1a;去掉潜在的 <script onload…> 等恶意标签&#xff0c;防止存储型 XSS。可读性&#xff1a;日志、消息队列、搜索索引里往往只需要纯文本。一致性&#xff1a;不同富文本编辑器生成的 HTML 五花八门&#xff0c;统一成「…...

【Java面试笔记:基础】6.动态代理是基于什么原理?

1. 反射机制 定义&#xff1a;反射是 Java 语言提供的一种基础功能&#xff0c;允许程序在运行时自省&#xff08;introspect&#xff09;&#xff0c;直接操作类或对象。功能&#xff1a; 获取类定义、属性和方法。调用方法或构造对象。运行时修改类定义。 应用场景&#xff…...

docker容器中uv的使用

文章目录 TL;DRuv简介uv管理项目依赖step 1step 2WindowsLinux/Mac step 3依赖包恢复 在Docker容器中使用uv TL;DR 本文记录uv在docker容器中使用注意点, uv简介 uv是用rust编写的一个python包管理器&#xff0c;特点是速度快&#xff0c;且功能强大&#xff0c;目标是替代p…...

分部积分选取u、v的核心是什么?

分部积分选取u、v的核心是什么&#xff1f;是反对幂指三吗&#xff1f; 不全是&#xff0c;其实核心是&#xff1a;v要比u更容易积分&#xff0c;也就是更容易求得原函数&#xff0c;来看一道例题&#xff1a;...

Android Studio调试中的坑二

下载新的Android studio Meerkat后&#xff0c;打开发现始终无法更新对应的SDK&#xff0c;连Android 15的SDK也无法在SDK Manger中显示出来&#xff0c;但是Meerkat必须要使用新版本SDK。 Android studio下载地址 命令行工具 | Android Studio | Android Developers 解决…...

【Redis】缓存三剑客问题实践(上)

本篇对缓存三剑客问题进行介绍和解决方案说明&#xff0c;下篇将进行实践&#xff0c;有需要的同学可以跳转下篇查看实践篇&#xff1a;&#xff08;待发布&#xff09; 缓存三剑客是什么&#xff1f; 缓存三剑客指的是在分布式系统下使用缓存技术最常见的三类典型问题。它们分…...

2025年4月22日(平滑)

在学术和工程语境中&#xff0c;表达“平滑”需根据具体含义选择术语。以下是专业场景下的精准翻译及用法解析&#xff1a; 1. 数学/信号处理中的「平滑」&#xff08;消除噪声&#xff09; Smooth (verb/noun/adjective) “Apply a Gaussian filter to smooth the noisy signa…...

给vue-admin-template菜单栏 sidebar-item 添加消息提示

<el-badge :value"200" :max"99" class"item"><el-button size"small">评论</el-button> </el-badge> <!-- 在 SidebarItem.vue 中 --> <template><div v-if"!item.hidden" class&q…...

C++(初阶)(十二)——stack和queue

十二&#xff0c;stack和queue 十二&#xff0c;stack和queueStackQueuepriority_queue 简单使用模拟实现deque Stack 函数说明stack()构造空栈empty()判断栈是否为空size()返回栈的有效元素个数top()返会栈顶元素的引用push()将所给元素val压入栈中pop()将栈的尾部元素弹出 …...

数据采集:AI 发展的基石与驱动力

人工智能&#xff08;AI&#xff09;无疑是最具变革性的技术力量之一&#xff0c;正以惊人的速度重塑着各行各业的格局。从智能语音助手到自动驾驶汽车&#xff0c;从精准的医疗诊断到个性化的推荐系统&#xff0c;AI 的广泛应用已深刻融入人们的日常生活与工作的各个层面。而在…...

Kubernetes Docker 部署达梦8数据库

Kubernetes & Docker 部署达梦8数据库 一、达梦镜像获取 目前达梦官方暂未在公共镜像仓库提供Docker镜像&#xff0c;需通过达梦官网联系获取官方镜像包。 二、Kubernetes部署方案 部署配置文件示例 apiVersion: apps/v1 kind: Deployment metadata:labels:app: dm8na…...

宏碁笔记本电脑怎样开启/关闭触摸板

使用快捷键&#xff1a;大多数宏碁笔记本可以使用 “FnF7” 或 “FnF8” 组合键来开启或关闭触摸板&#xff0c;部分型号可能是 “FnF2”“FnF9” 等。如果不确定&#xff0c;可以查看键盘上的功能键图标&#xff0c;一般有触摸板图案的按键就是触摸板的快捷键。通过设备管理器…...

计算机组成与体系结构:缓存(Cache)

目录 为什么需要 Cache&#xff1f; &#x1f9f1; Cache 的分层设计 &#x1f539; Level 1 Cache&#xff08;L1 Cache&#xff09;一级缓存 &#x1f539; Level 2 Cache&#xff08;L2 Cache&#xff09;二级缓存 &#x1f539; Level 3 Cache&#xff08;L3 Cache&am…...

【VS Code】打开远程服务器Docker项目或文件夹

1、配置SSH连接 在VS Code中&#xff0c;按CtrlShiftP打开命令面板。 输入并选择Remote-SSH: Connect to Host...。 输入远程服务器的SSH地址&#xff08;例如userhostname或userip_address&#xff09;。 如果这是您第一次连接到该主机&#xff0c;VS Code可能会要求您配置…...

docker 常见命令

指定服务名查看日志 docker-compose logs -f doc-cleaning docker inspect id 启动所有服务 在docker-compose目录下 docker-compose up -d docker-compose down会删除容器和网络 docker compose stop redis rabbitmq docker compose stop可以快速停止服务&#xff0c;方…...

C#抽象类和虚方法的作用是什么?

抽象类 (abstract class)&#xff1a; 不能直接实例化&#xff0c;只能被继承。 用来定义一套基础框架和规范&#xff0c;强制子类必须实现某些方法&#xff08;抽象方法&#xff09;。 可用来封装一些共通的逻辑&#xff0c;减少代码重复。 虚方法 (virtual)&#xff1a; …...

redis数据类型-基数统计HyperLogLog

redis数据类型-基数统计HyperLogLog 文档 redis单机安装redis常用的五种数据类型redis数据类型-位图bitmap 说明 官网操作命令指南页面&#xff1a;https://redis.io/docs/latest/commands/?nameget&groupstringHyperLogLog介绍页面&#xff1a;https://redis.io/docs…...

音视频学习 - MP3格式

环境 JDK 13 IDEA Build #IC-243.26053.27, built on March 16, 2025 Demo MP3Parser MP3 MP3全称为MPEG Audio Layer 3&#xff0c;它是一种高效的计算机音频编码方案&#xff0c;它以较大的压缩比将音频文件转换成较小的扩展名为.mp3的文件&#xff0c;基本保持源文件的音…...

Oracle--PL/SQL编程

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 PL/SQL&#xff08;Procedural Language/SQL&#xff09;是Oracle数据库中的一种过程化编程语言&#xff0c;构建于SQL之上&#xff0c;允许编写包含S…...

【愚公系列】《Python网络爬虫从入门到精通》063-项目实战电商数据侦探(主窗体的数据展示)

&#x1f31f;【技术大咖愚公搬代码&#xff1a;全栈专家的成长之路&#xff0c;你关注的宝藏博主在这里&#xff01;】&#x1f31f; &#x1f4e3;开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主&#xff01; &#x1f…...

DAPP(去中心化应用程序)开发全解析:构建去中心化应用的流程

去中心化应用&#xff08;DApp&#xff09;凭借其透明性、抗审查性和用户数据主权&#xff0c;正重塑金融、游戏、社交等领域。本文基于2025年最新开发实践&#xff0c;系统梳理DApp从需求规划到部署运维的全流程&#xff0c;并融入经济模型设计、安全加固等核心要点&#xff0…...

Spark与Hadoop之间有什么样的对比和联系

一、什么是Spark Spark 是一个快速、通用且可扩展的大数据处理框架&#xff0c;最初由加州大学伯克利分校的AMPLab于2009年开发&#xff0c;并于2010年开源。它在2013年成为Apache软件基金会的顶级项目&#xff0c;是大数据领域的重要工具之一。 Spark 的优势在于其速度和灵活…...

spark和Hadoop之间的对比和联系

Spark 诞生主要是为了解决 Hadoop MapReduce 在迭代计算以及交互式数据处理时面临的性能瓶颈问题。 一&#xff0c;spark的框架 Hadoop MR 框架 从数据源获取数据&#xff0c;经过分析计算后&#xff0c;将结果输出到指定位置&#xff0c;核心是一次计算&#xff0c;不适合迭…...

LeetCode 第 262 题全解析:从 SQL 到 Swift 的数据分析实战

文章目录 摘要描述题解答案&#xff08;SQL&#xff09;Swift 题解代码分析代码示例&#xff08;可运行 Demo&#xff09;示例测试及结果时间复杂度分析空间复杂度分析总结未来展望 摘要 在实际业务中&#xff0c;打车平台要监控行程的取消率&#xff0c;及时识别服务质量的问…...

“融合Python与机器学习的多光谱遥感技术:数据处理、智能分类及跨领域应用”​

随着遥感技术的快速发展&#xff0c;多光谱数据凭借其多波段信息获取能力&#xff0c;成为地质、农业及环境监测等领域的重要工具。相较于高光谱数据&#xff0c;Landsat、哨兵-2号等免费中分辨率卫星数据具有长时间序列、广覆盖的优势&#xff0c;而无人机平台的兴起进一步补充…...

JavaScript的JSON处理Map的弊端

直接使用 Map 会遇到的问题及解决方案 直接使用 Map 会导致数据丢失&#xff0c;因为 JSON.stringify 无法序列化 Map。以下是详细分析及解决方法&#xff1a; 问题复现 // 示例代码 const myMap new Map(); myMap.set(user1, { name: Alice }); myMap.set(user2, { name: B…...