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

xml导出pdf简单实现

1. 引入依赖

<dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>8.0.1</version>
</dependency>

2. 代码实现

import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.property.TextAlignment;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;public class XmlToPdf {public static void main(String[] args) throws Exception {// 读取XML文件File xmlFile = new File("example.xml");DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();Document doc = dBuilder.parse(xmlFile);doc.getDocumentElement().normalize();// 创建PDF文档PdfWriter writer = new PdfWriter("output.pdf");PdfDocument pdf = new PdfDocument(writer);Document pdfDoc = new Document(pdf, PageSize.A4);// 遍历XML元素并将其添加到PDF文档中processNode(pdfDoc, doc.getDocumentElement());// 关闭文档pdfDoc.close();}private static void processNode(Document pdfDoc, Node node) {if (node.getNodeType() == Node.ELEMENT_NODE) {Element element = (Element) node;Paragraph paragraph = new Paragraph(element.getTextContent()).setTextAlignment(TextAlignment.CENTER);pdfDoc.add(paragraph);}NodeList children = node.getChildNodes();for (int i = 0; i < children.getLength(); i++) {processNode(pdfDoc, children.item(i));}}
}

相关文章:

xml导出pdf简单实现

1. 引入依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>8.0.1</version> </dependency>2. 代码实现 import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.ker…...

JAVAEE初阶相关内容第十六弹--网络编程

写在前 这一节的内容首先是对十五弹&#xff08;UDP回显服务器&#xff09;进行简单的改进&#xff0c;在这基础上开始介绍TCP流套接字编程。 目录 写在前 1.改进回显服务器 1.1完整代码实现 1.2运行输出结果 2.TCP流套接字编程 2.1ServerSocketAPI 2.2SocketAPI 3.TC…...

Python---练习:使用for循环嵌套实现打印九九乘法表

思考&#xff1a; 外层循环主要用于控制循环的行数&#xff0c;内层循环用于控制列数。 基本语法&#xff1a; # 外层循环 for i in 序列1:# 内层循环for j in 序列2:循环体 序列1 序列2 &#xff0c;就可以是range(1, 10) -----也就是从1&#xff0c;到9。 参考while循环…...

mac安装并使用wireshark

mac安装并使用wireshark 1 介绍 我们在日常开发过程中&#xff0c;遇到了棘手的问题时&#xff0c;免不了查看具体网络请求情况&#xff0c;这个时候就需要用到抓包工具。比较著名的抓包工具就属&#xff1a;wireshark、fildder。我这里主要介绍wireshark。 2 安装 以mac安装为…...

torch张量的降维与升维

文章目录 一、降维和升维未完待续.... 一、降维和升维 squeeze和unsqueeze是torch张量常用的降维与升维的一种方式&#xff0c;但这种方式只能增添或减少大小为1的维度&#xff0c;如下&#xff1a; x1 torch.randn(1, 8, 256, 256) x1 torch.squeeze(x1,dim0) print(x1.sh…...

八大排序算法(C语言版)之插入排序

八大排序详解 目录&#xff1a;一、排序的概念1.1 排序的概念1.2 排序的应用 二、直接插入排序三、希尔排序四、排序算法复杂度及稳定性分析 目录&#xff1a; 八大排序算法&#xff1a; #mermaid-svg-7qCaGEYz0Jyj9dYw {font-family:"trebuchet ms",verdana,arial,…...

Linux系统安装redis并配置为服务

一、Linux环境 1、下载 官网提供的源码下载地址&#xff1a; https://github.com/redis/redis/archive/7.0.5.tar.gz 2、将源码上传至服务器 3、解压缩 # 将解压缩后的文件放置在同目录的source文件夹下 tar -zxvf redis-7.0.5.tar.gz -C ./source4、编译安装 对源码进行编…...

DDIO和DMA有什么区别

DDIO 和 DMA 的区别 DDIO (Data Direct I/O Technology) 主要应用: 主要用于网卡和CPU之间的数据传输。工作原理: 通过CPU的Last Level Cache (LLC) 直接与外部网卡交换数据&#xff0c;绕过了主存储器。优点: 减少了CPU和网卡等待内存的时间。提高了数据包的处理速度。减少了…...

【MATLAB源码-第58期】基于蛇优化算法(SO)和粒子群优化算法(PSO)的栅格地图路径规划最短路径和适应度曲线对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 粒子群算法 (Particle Swarm Optimization, PSO) 1. 算法概述 粒子群算法是一种基于群体智能的优化算法&#xff0c;模拟鸟群觅食的行为。算法中的每个粒子代表问题的一个可能解&#xff0c;并且具有位置和速度两个属性。粒…...

nlp与知识图谱代码解读

词嵌入 简单原理 我们要给一群14岁的孩子讲解词嵌入。可以使用一些比喻和生活中的例子&#xff1a; 老师&#xff1a; 你们还记得玩乐高积木的时候&#xff0c;每个积木块代表了一个特定的事物或形状吗&#xff1f;现在&#xff0c;想象一下&#xff0c;每个词都像是一个乐高…...

Redis设计与实现(3)字典

Redis的字典使用哈希表作为底层实现&#xff0c;一个哈希表里面可以有多个哈希表节点&#xff0c;而每一个哈希表节点就保存了字典中的一个键值对 redis字典所使用的哈希表由dict.h/dictht typedef struct dictht{//哈希表数组dictEntry **table;//哈希表大小unsigned long si…...

STM32MP157D BSP

一&#xff0c;全志R16、IMX6ULL和STM32MP157D启动相关 1&#xff0c;IMX6ULL是EMMC启动后&#xff0c;通过uboot fat命令的load进内存进行启动测试 2&#xff0c;openedv应该也是参考的官方的板子&#xff0c;类似调试口等均应该是一致的&#xff0c;所以目前就是用正点原子…...

最新SQL注入漏洞修复建议

点击星标&#xff0c;即时接收最新推文 本文选自《web安全攻防渗透测试实战指南&#xff08;第2版&#xff09;》 点击图片五折购书 SQL注入漏洞修复建议 常用的SQL注入漏洞的修复方法有两种。 1&#xff0e;过滤危险字符 多数CMS都采用过滤危险字符的方式&#xff0c;例如&…...

新人FPGA验证书籍推荐

1、FPGA之道 推荐理由&#xff1a;FPGA基础知识讲解全面&#xff0c;可以作为参考书时常翻阅&#xff1b; 2、Verilog数字系统设计教程 推荐理由&#xff1a;FPGA语法详细的介绍&#xff0c;案例比较有代表性&#xff1b; 工具类书籍推荐&#xff1a; 3、ModelSim电子系统…...

TypeError: data.reduce is not a function:数据类型不匹配

错误展示&#xff1a; 错误分析&#xff1a; 首先来看看前端代码&#xff1a;我表格绑定的数据模型是tableData&#xff0c;而我tableData定义的是一个数组 其次看看后端给的数据&#xff1a; 传递的是一个对象&#xff0c;而不是一个数组&#xff01; 这样原因就找出了&…...

出租屋智能视频监控系统方案:全面保卫租客安全

除了我们常见的家庭、社区、园区等智能监控&#xff0c;出租房作为很多人的暂住所也极易发生盗窃等事件&#xff0c;为保障大众租户的财产安全&#xff0c;旭帆科技特地针对出租屋制定了智能监控系统方案。 1、安装智能安防摄像头 高清晰度、夜视功能良好的智能摄像头&#xf…...

代码解读-自然语言处理

目录 demo3文本转为向量代码解读给出每一步的输出 demo3文本转为向量 代码 from tensorflow.keras.preprocessing.text import Tokenizer # 标记器(每一个词&#xff0c;以我们的数值做映射&#xff0c;)words [LaoWang has a Wechat account., He is not a nice person., …...

docker指令

镜像操作&#xff1a; # 搜索镜像 docker search image_name # 搜索结果过滤&#xff1a;是否是官方 docker search --filter --filter is-official image_name # 搜索结果过滤&#xff1a;是否是自动化构建 docker search --filter --filter is-automated image_name # 搜索结…...

【MySql】9- 实践篇(七)

文章目录 1. 一主多从的主备切换1.1 基于位点的主备切换1.2 GTID1.3 基于 GTID 的主备切换1.4 GTID 和在线 DDL 2. 读写分离问题2.1 强制走主库方案2.2 Sleep 方案2.3 判断主备无延迟方案2.4 配合 semi-sync方案2.5 等主库位点方案2.6 GTID 方案 3. 如何判断数据库是否出问题了…...

Maven compile时报错 系统资源不足,出现OOM:GC overhead limit exceeded

今天在对项目进行Maven clean compile的时候&#xff0c;报出了如下的错误&#xff0c; 系统资源不足。 有关详细信息&#xff0c;请参阅一下堆栈跟踪。 java.lang.OutOfMemoryError: GC overhead limit exceededat java.util.EnumSet.noneOf(EnumSet.java:115)at com.sun.too…...

DepotDownloader核心功能解析:从App下载到工作坊内容获取的完整指南

DepotDownloader核心功能解析&#xff1a;从App下载到工作坊内容获取的完整指南 【免费下载链接】DepotDownloader Steam depot downloader utilizing the SteamKit2 library. 项目地址: https://gitcode.com/gh_mirrors/de/DepotDownloader DepotDownloader是一款功能强…...

迪卡侬集团2025年净销售额同比增长4.0%至168亿欧元

、美通社消息&#xff1a;2025年&#xff0c;面对瞬息万变的市场环境&#xff0c;迪卡侬集团展现出稳健的经营韧性与持续的战略定力&#xff0c;整体经营表现稳步向好&#xff0c;以当地货币计算&#xff0c;商品交易总额(GMV)同比增长7.1%&#xff0c;净销售额同比增长5.6%&am…...

Isaac Sim 6 利用Replicator实现高效语义分割与实例分割(实践指南5.10)

1. 为什么选择Isaac Sim生成分割数据集&#xff1f; 在计算机视觉项目中&#xff0c;语义分割和实例分割是两项基础但极其耗时的任务。传统的数据标注方式需要人工逐像素标注&#xff0c;一个1000张图片的数据集可能需要团队花费数周时间。而使用Isaac Sim的Replicator工具&…...

技术解析:ncmdump如何破解网易云音乐NCM格式加密机制

技术解析&#xff1a;ncmdump如何破解网易云音乐NCM格式加密机制 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 在数字音乐版权保护日益严格的今天&#xff0c;网易云音乐采用NCM格式对下载的音乐文件进行加密保护&#xff0c;这种…...

SiameseUIE Vue前端开发:交互式信息抽取平台构建

SiameseUIE Vue前端开发&#xff1a;交互式信息抽取平台构建 如果你用过一些信息抽取工具&#xff0c;可能会遇到这样的体验&#xff1a;要么是命令行黑框框&#xff0c;要么是简陋的网页界面&#xff0c;输入一段文本&#xff0c;返回一堆看不懂的JSON数据。整个过程冷冰冰的…...

Qwen2.5-VL底座+lychee-rerank-mm效果惊艳:批量图片智能打分可视化展示

Qwen2.5-VL底座lychee-rerank-mm效果惊艳&#xff1a;批量图片智能打分可视化展示 1. 项目简介 这是一个专门为RTX 4090显卡&#xff08;24G显存&#xff09;打造的智能图片排序系统。核心基于阿里通义千问Qwen2.5-VL多模态大模型&#xff0c;结合Lychee-rerank-mm专业重排序…...

QMCDecode终极指南:解锁QQ音乐加密格式的完整解决方案

QMCDecode终极指南&#xff1a;解锁QQ音乐加密格式的完整解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转…...

Nano-Banana模型安全防护:对抗样本检测与防御

Nano-Banana模型安全防护&#xff1a;对抗样本检测与防御 在AI模型日益普及的今天&#xff0c;安全性已成为不可忽视的核心议题。Nano-Banana模型通过引入先进的对抗样本检测与防御机制&#xff0c;在鲁棒性上实现了显著突破&#xff0c;有效提升了模型在复杂环境下的可靠性。…...

手把手教你用C语言解决Modbus TCP从站多主站连接的3个典型问题(含select使用避坑)

深度解析Modbus TCP从站多主站连接的三大实战难题与优化方案 在工业自动化领域&#xff0c;Modbus TCP协议因其简单可靠的特点被广泛应用于设备间通信。但当从站需要同时处理多个主站&#xff08;如SCADA系统、HMI人机界面和测试工具&#xff09;的连接请求时&#xff0c;开发者…...

千问3.5-2B辅助MATLAB科学计算:算法实现与结果可视化脚本生成

千问3.5-2B辅助MATLAB科学计算&#xff1a;算法实现与结果可视化脚本生成 1. 科研计算的新助手 作为一名经常使用MATLAB的科研工作者&#xff0c;你是否遇到过这样的困扰&#xff1a;明明知道要解决什么数学问题&#xff0c;却卡在代码实现环节&#xff1f;或者花了大量时间调…...