当前位置: 首页 > 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));}}
}
http://www.lryc.cn/news/207207.html

相关文章:

  • JAVAEE初阶相关内容第十六弹--网络编程
  • Python---练习:使用for循环嵌套实现打印九九乘法表
  • mac安装并使用wireshark
  • torch张量的降维与升维
  • 八大排序算法(C语言版)之插入排序
  • Linux系统安装redis并配置为服务
  • DDIO和DMA有什么区别
  • 【MATLAB源码-第58期】基于蛇优化算法(SO)和粒子群优化算法(PSO)的栅格地图路径规划最短路径和适应度曲线对比。
  • nlp与知识图谱代码解读
  • Redis设计与实现(3)字典
  • STM32MP157D BSP
  • 最新SQL注入漏洞修复建议
  • 新人FPGA验证书籍推荐
  • TypeError: data.reduce is not a function:数据类型不匹配
  • 出租屋智能视频监控系统方案:全面保卫租客安全
  • 代码解读-自然语言处理
  • docker指令
  • 【MySql】9- 实践篇(七)
  • Maven compile时报错 系统资源不足,出现OOM:GC overhead limit exceeded
  • 启动内核ip转发和其他优化
  • 信息安全技术
  • SQL 选择数据库 USE语句
  • FL Studio21版无限破解版下载 软件内置破解补丁
  • 【代码随想录】算法训练计划02
  • hive针对带有特殊字符非法json数据解析
  • 【C++进阶之路】第三篇:二叉搜索树 kv模型
  • 【Oracle】Navicat Premium 连接 Oracle的两种方式
  • 在python里如何实现switch函数的功能
  • Python 继承和子类示例:从 Person 到 Student 的演示
  • DevOps持续集成-Jenkins(3)