xml导出pdf简单实现

1. 引入依赖

java 复制代码
<dependency>
   <groupId>com.itextpdf</groupId>
   <artifactId>itext7-core</artifactId>
   <version>8.0.1</version>
</dependency>

2. 代码实现

java 复制代码
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));
        }
    }
}
相关推荐
学习编程的Kitty3 分钟前
算法——位运算
java·前端·算法
用户9047066835722 分钟前
如何使用 Spring MVC 实现 RESTful API 接口
java·后端
刘某某.23 分钟前
数组和小于等于k的最长子数组长度b
java·数据结构·算法
程序员飞哥27 分钟前
真正使用的超时关单策略是什么?
java·后端·面试
用户9047066835729 分钟前
SpringBoot 多环境配置与启动 banner 修改
java·后端
小old弟1 小时前
后端三层架构
java·后端
花花鱼1 小时前
spring boot 2.x 与 spring boot 3.x 及对应Tomcat、Jetty、Undertow版本的选择(理论)
java·后端
温柔一只鬼.1 小时前
Docker快速入门——第二章Docker基本概念
java·docker·容器
要争气1 小时前
5 二分查找算法应用
java·数据结构·算法
郑..方..醒1 小时前
java实现ofd转pdf
java·pdf