微信流量主挑战:用户破16!新增文档转换(新纪元3)

朋友们,报告好消息!我的小程序用户数量已经涨到16个了!没错,真·没拉朋友圈亲戚好友来撑场子,全靠实力(和一点点运气)吸引了16位陌生小伙伴光临!这波进步,连我自己都感动了!

有兴趣的朋友可以搜索体验一下,接下来的日子,我会每天更新营运状况,告诉大家这小程序到底能不能带来“流量变现”奇迹,还是最后成了我自己的社交实验田。同时,我还会不断更新小程序功能,努力让这16位尊贵用户用得开心(不开心也别走啊,求你们了)。今天涨了几个用户?广告收益能不能多买一杯奶茶?这些热乎乎的“战绩”,通通告诉你们!

我承诺,每天更新营运状况,实话实说:流量主是发家致富的捷径,还是“赚够奶茶钱就谢天谢地”?小程序功能也会不断优化升级,毕竟要让这16位小伙伴用得爽,才有希望吸引更多用户加入。

接下来的开发计划已经排满了档期!不仅要优化现有功能,还打算增加更多实用性强、能留住用户的新功能,比如文档转换啊、在线工具类的小工具,要知道,16个用户那可是我未来的“财富基石”,必须得服务到位!

文档转化用了什么技术?主角就是大名鼎鼎的 docx4j,这玩意儿就是处理文档的“瑞士军刀”,专门帮你在各种文档格式之间左手倒右手,效率杠杠的!

docx4j 的核心能力在于,它能够高效解析和生成 .docx 文件,无需安装 Microsoft Office,也不依赖 COM 组件。通过 XML 和 JAXB 技术,docx4j 将文档的结构和内容转换为可操作的对象,开发者可以轻松修改、删除或添加文档内容,比如表格、段落、图片等。

除了基本的文档处理功能,docx4j 的强大之处还在于其转换能力。例如,docx 转 PDF 是一个备受青睐的功能。借助 docx4j 的 PDF 导出模块,它能够快速将 Word 文档渲染成高质量的 PDF 文件,广泛应用于合同生成、报告输出等场景。此外,它还能通过插件支持其他格式的转换,扩展性非常强。

对于开发者来说,docx4j 提供了友好的 API 接口和灵活的功能模块。无论是简单的文档读取,还是复杂的内容操作,它都能轻松驾驭。其社区活跃,文档齐全,为开发者的二次开发和快速实现功能提供了极大的便利。

依赖如下

        <dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId><version>6.1.1</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-reload4j</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.docx4j</groupId><artifactId>docx4j-export-fo</artifactId><version>8.1.1</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-reload4j</artifactId></exclusion></exclusions></dependency>

关键代码实现类
 

private byte[] convertWordToPdf(String filePath) throws Exception {FileOutputStream fileOutputStream = null;ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();try {// 获取当前时间戳String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());// 获取文件名(去掉路径和扩展名)File file = new File(filePath);String fileName = file.getName().replaceAll("\\.docx$", "");// 创建带时间戳的pdf路径,文件保存到fileDir目录下String pdfPath = fileDir + fileName + "_" + timestamp + ".pdf";// 进行文件转换fileOutputStream = new FileOutputStream(new File(pdfPath));WordprocessingMLPackage mlPackage = WordprocessingMLPackage.load(file);setFontMapper(mlPackage);Docx4J.toPDF(mlPackage, fileOutputStream);System.out.println("PDF转换成功,文件保存为:" + pdfPath);// 读取生成的PDF文件内容并返回字节数组try (InputStream pdfInputStream = new FileInputStream(pdfPath)) {byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = pdfInputStream.read(buffer)) != -1) {byteArrayOutputStream.write(buffer, 0, bytesRead);}}return byteArrayOutputStream.toByteArray();} catch (Exception e) {e.printStackTrace();System.out.println("转换失败");throw new UnsupportedOperationException("Word 转 PDF 的功能尚未实现: " + filePath);} finally {IOUtils.closeQuietly(fileOutputStream);try {byteArrayOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}private static void setFontMapper(WordprocessingMLPackage mlPackage) throws Exception {Mapper fontMapper = new IdentityPlusMapper();fontMapper.put("隶书", PhysicalFonts.get("LiSu"));fontMapper.put("宋体", PhysicalFonts.get("SimSun"));fontMapper.put("微软雅黑", PhysicalFonts.get("Microsoft Yahei"));fontMapper.put("黑体", PhysicalFonts.get("SimHei"));fontMapper.put("楷体", PhysicalFonts.get("KaiTi"));fontMapper.put("新宋体", PhysicalFonts.get("NSimSun"));fontMapper.put("华文行楷", PhysicalFonts.get("STXingkai"));fontMapper.put("华文仿宋", PhysicalFonts.get("STFangsong"));fontMapper.put("宋体扩展", PhysicalFonts.get("simsun-extB"));fontMapper.put("仿宋", PhysicalFonts.get("FangSong"));fontMapper.put("仿宋_GB2312", PhysicalFonts.get("FangSong_GB2312"));fontMapper.put("幼圆", PhysicalFonts.get("YouYuan"));fontMapper.put("华文宋体", PhysicalFonts.get("STSong"));fontMapper.put("华文中宋", PhysicalFonts.get("STZhongsong"));mlPackage.setFontMapper(fontMapper);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

顶顶通呼叫中心中间件mod_cti模块安全增强,预防盗打风险(mod_cti基于FreeSWITCH)

文章目录 前言联系我们mod_cti版本支持安全加强说明 前言 FreeSWITCH暴露在公网最大的风险就是被不法之人盗打 出现盗打的主要原因以下几点&#xff1a; 分机密码太简单或者密码泄露了拨号方案配置不合理sofia配置错误 所以我们给顶顶通呼叫中心中间件添加了安全加强功能&am…

请分别从CPU、内 存、IO、⽹络的⻆度判断Linux的瓶颈?

在 Linux 下分析程序的性能瓶颈&#xff0c;需要结合多种⼯具和⽅法来从不同的⻆度观察系统的⾏为。以下是从 CPU、内存、I/O 和⽹络四个主要⽅⾯进⾏性能瓶颈分析的⽅法&#xff1a; 1. CPU top/htop&#xff1a;这些⼯具可以显示系统中每个进程的 CPU 利⽤率。如果你看到某…

ADB 上传文件并使用脚本监控上传百分比

有个需求&#xff0c;需要测试 emmc的外部连续写入性能&#xff0c;使用 ADB 上传一个巨大的文件。并且在上传到一定值时进行干预。 因此但是 adb push 命令本身会 block 运行并且不返回进度&#xff0c;因此需要一个额外的监控脚本。 上传脚本&#xff1a; echo off setloc…

【Halcon】例程讲解:基于形状匹配与OCR的多图像处理(附图像、程序下载链接)

1. 开发需求 在参考图像中定义感兴趣区域&#xff08;ROI&#xff09;&#xff0c;用于形状匹配和文本识别。通过形状匹配找到图像中的目标对象位置。对齐多幅输入图像&#xff0c;使其与参考图像保持一致。在对齐后的图像上进行OCR识别&#xff0c;提取文本和数字信息。以循环…

产品初探Devops!以及AI如何赋能Devops?

DevOps源自Development&#xff08;开发&#xff09;和Operations&#xff08;运维&#xff09;的组合&#xff0c;是一种新的软件工程理念&#xff0c;旨在打破传统软件工程方法中“开发->测试->运维”的割裂模式&#xff0c;强调端到端高效一致的交付流程&#xff0c;实…

python+PyMuPDF库:(一)创建pdf文件及内容读取和写入

目录 文档操作 打开文档 获取文档信息 删除页 复制页 移动页 选择重构合并 保存关闭 页对象操作 内容读取 获取页对象的字体样式 插入文本标签 插入文本内容 字体设置 insert_text添加文本 insert_textbox添加文本 插入图片 获取页面注释、链接、表单字段 …

开源诊断工具Arthas

说明&#xff1a; 1、需要先要安装配置好jdk。 2、你的虚拟机得有网&#xff0c;没有网就按照压缩包上传解压。然后直接看三 一、官网 https://arthas.aliyun.com/doc/quick-start.html#_1-%E5%90%AF%E5%8A%A8-math-game 二、下载和卸载 # 下载 curl -O https://arthas.al…

VisionPro开发使用交互反馈系统(Affordance System)

XR Interaction Toolkit 提供了一个affordance system 可供性系统&#xff0c;使用户能够创建对交互状态的视觉和听觉反馈。一般的信息流从向Affordance State Provider场景中添加一个&#xff08;通常是可交互的&#xff09;并将其指向我们要监视其交互状态的可交互对象开始。…

P1588 [USACO07OPEN] Catch That Cow S 洛谷 BFS-最短路思想

题目描述 FJ 丢失了他的一头牛&#xff0c;他决定追回他的牛。已知 FJ 和牛在一条直线上&#xff0c;初始位置分别为 x 和 y&#xff0c;假定牛在原地不动。FJ 的行走方式很特别&#xff1a;他每一次可以前进一步、后退一步或者直接走到 2x 的位置。计算他至少需要几步追上他的…

如何在 Ubuntu 22.04 上安装并开始使用 RabbitMQ

简介 消息代理是中间应用程序&#xff0c;在不同服务之间提供可靠和稳定的通信方面发挥着关键作用。它们可以将传入的请求存储在队列中&#xff0c;并逐个提供给接收服务。通过以这种方式解耦服务&#xff0c;你可以使其更具可扩展性和性能。 RabbitMQ 是一种流行的开源消息代…

云原生架构中的中间件容器化:优劣势与实践探索

在云原生架构逐步推进的过程中&#xff0c;许多企业已经开始将应用和服务容器化&#xff0c;以充分利用云计算带来的弹性和自动化。随着容器技术的发展&#xff0c;容器化不仅仅限于应用层&#xff0c;越来越多的中间件也被考虑纳入容器化范畴&#xff0c;包括Redis、Kafka、Ra…

力扣矩阵-算法模版总结

lc-73.矩阵置零-(时隔14天)-12.27 思路&#xff1a;(23min22s) 1.直接遍历遇0将行列设0肯定不行&#xff0c;会影响后续判断&#xff0c;题目又要求原地算法&#xff0c;那么进一步考虑是否可以将元素为0&#xff0c;其行列需要设为0的位置给存储下来&#xff0c;最后再遍历根据…

OCR实践-问卷表格统计

前言 书接上文 OCR实践—PaddleOCROCR实践-Table-Transformer 本项目代码已开源 放在 Github上&#xff0c;欢迎参考使用&#xff0c;Star https://github.com/caibucai22/TableAnalysisTool 主要功能说明&#xff1a;对手动拍照的问卷图片进行统计分数&#xff08;对应分数…

vue3 video 播放rtmp视频?(360浏览器支持)

** 注意&#xff1a;目前只能在360浏览器播放rtmp视频** 谷歌浏览器不支持Flash Player的问题 试过上面这个方法&#xff0c;目前没能实现&#xff08;没解决&#xff09;&#xff0c;如果有更好的解决方法&#xff0c;告诉我一下 需要下载版本较低的video.js版本库&#xff0…

yarn list --pattern vuex-module-decorators

dgqdgqdeMac-mini spid-admin % yarn list --pattern vuex-module-decorators yarn list v1.22.22 └─ vuex-module-decorators0.16.1 ✨ Done in 0.24s.好的&#xff0c;这段代码是一个典型的 Vuex 模块定义&#xff0c;使用了 vuex-module-decorators 库。这个库为 Vuex 提…

用Python写炸金花游戏

文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **打印结果** 完整代码 以下游戏规则&#xff1a; 那么我们要实现的功能&#xff0c;就是…

day19-Linux软件包

科普&#xff0c;什么是代码文件。 电脑程序Program&#xff0c;就是某一个编程语言编写的一个代码文件&#xff0c;里面包含了该语言特有的指令&#xff0c;以及各种字符、符号。 linux自带的network管理脚本&#xff0c;shell脚本 什么是软件程序。 软件程序&#xff0c;就…

浅谈下Spring MVC的执行流程

什么是Spring MVC Spring MVC是一个基于Java的Web框架&#xff0c;用于构建Web应用程序。 它是Spring Framework的一部分&#xff0c;它提供了模型-视图-控制器&#xff08;MVC&#xff09;架构。 支持RESTful风格的URL请求&#xff0c;易于与其他视图技术集成&#xff0c;如…

图像处理-Ch4-频率域处理

Ch4 频率域处理(Image Enhancement in Frequency Domain) FT &#xff1a;将信号表示成各种频率的正弦信号的线性组合。 频谱&#xff1a; ∣ F ( u , v ) ∣ [ R 2 ( u , v ) I 2 ( u , v ) ] 1 2 |F(u, v)| \left[ R^2(u, v) I^2(u, v) \right]^{\frac{1}{2}} ∣F(u,v)…

从代码中学习:评估模型的性能

从代码中学习&#xff1a;评估模型的性能 在这篇博客中&#xff0c;我们将逐步解析一段Python代码&#xff0c;并解释每一行的作用。这段代码主要用于加载数据集、加载预训练模型、进行推理并评估模型的性能。我们将以简单易懂的方式解释每一部分&#xff0c;确保即使是小学生…