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

生成表格pdf格式

1. 添加依赖

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>kernel</artifactId>
            <version>7.2.5</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>layout</artifactId>
            <version>7.2.5</version>
        </dependency>

2.demo代码

    @SneakyThrows
    public void export(List list, OutputStream outputStream) {
        List<JbMaintainPlanEntity> list = planEntityService.list(dto);
        // 创建 PDF 写入器和文档对象
        PdfWriter writer = new PdfWriter(outputStream);
        PdfDocument pdfDocument = new PdfDocument(writer);
        Document document = new Document(pdfDocument);
        //支持中文,指定字符集
        InputStream resourceAsStream = resourceLoader.getClassLoader().getResourceAsStream("front/simsun.ttf");
        byte[] bytes = IoUtil.readBytes(resourceAsStream);
        FontProgram fontProgram = FontProgramFactory.createFont(bytes);
        PdfFont font = PdfFontFactory.createFont(fontProgram);
        document.setFont(font);
        // 创建表格,并设置列数为data中的键的数量
        float[] columnWidths = {2f, 2f, 2f, 3f, 3f, 2f};
        Table table = new Table(columnWidths);
        table.setWidth(UnitValue.createPercentValue(80));
        table.setHorizontalAlignment(HorizontalAlignment.CENTER);
        // 添加表头
        String[] headers = {"序号", "设备分类", "设备机型", "设备", "轮保日期", "备注"};
        for (String header : headers) {
            Cell cell = new Cell().add(new Paragraph(header));
            cell.setTextAlignment(TextAlignment.CENTER);
            table.addHeaderCell(cell);
        }
        Integer count = 1;
        for (Objetc data: list) {
            Map<String, Object> map = new HashMap<>();
            BeanUtil.beanToMap(data, map, false, false);
            table.addCell(new Cell().add(new Paragraph(count.toString())).setTextAlignment(TextAlignment.CENTER));
            table.addCell(new Cell().add(new Paragraph(String.valueOf(map.get("name"))))
                    .setTextAlignment(TextAlignment.CENTER));
            table.addCell(new Cell().add(new Paragraph(String.valueOf(map.get("model")))).setTextAlignment(TextAlignment.CENTER));
            table.addCell(new Cell().add(new Paragraph(String.valueOf(map.get("age")))).setTextAlignment(TextAlignment.CENTER));
            table.addCell(new Cell().add(new Paragraph(String.valueOf(map.get("date")))).setTextAlignment(TextAlignment.CENTER));
            table.addCell(new Cell().add(new Paragraph(ObjectUtil.isNull(map.get("remark")) ? "" : String.valueOf(map.get("remark"))))
                    .setTextAlignment(TextAlignment.CENTER));
        }
        // 将表格添加到文档中
        document.add(table);

        // 关闭文档
        document.close();
    }

3.字符集下载

https://gitcode.com/open-source-toolkit/c17ea/overview


http://www.kler.cn/a/430152.html

相关文章:

  • “**H5**” 和 “**响应式**” 是前端开发中常见的术语,但它们的概念和使用场景有所不同
  • 云计算基础,虚拟化原理
  • 基于vue的商城小程序的毕业设计与实现(源码及报告)
  • 分布式环境下定时任务扫描时间段模板创建可预订时间段
  • 递归构建树菜单节点
  • 2、蓝牙打印机点灯-GPIO输出控制
  • 贪心算法 part04
  • HTML语义化的案例分析
  • 伺服电机为什么会变慢?
  • CSS学习记录08
  • Java 学习全攻略:从入门到精通的详细指南
  • python网络爬虫基础:html基础概念与遍历文档树
  • 【开源免费】基于SpringBoot+Vue.JS图书进销存管理系统(JAVA毕业设计)
  • 高级 CEF 内核集成与 VC++——CEF系统架构与开发环境搭建
  • 鸿蒙特色实战3共享单车案例
  • 人工智能_大模型091_大模型工作流001_使用工作流的原因_处理复杂问题_多轮自我反思优化ReAct_COT思维链---人工智能工作笔记0236
  • 城电科技 | 光伏景观长廊 打造美丽乡村绿色低碳示范区 光伏景观设计方案
  • Pytest测试用例使用小结
  • TIM输入捕获---STM
  • 【Linux系统】System V 的 IPC 机制在 Linux 系统中的实现
  • 从变更到通知:使用Python和MongoDB Change Streams实现即时事件监听
  • 后端-pageHelp分页查询
  • synchronized的特性
  • 零基础微信小程序开发——小程序的宿主环境(保姆级教程+超详细)
  • 【日常记录-Git】git fetch
  • 河南师范大学在线评测系统(HTUOJ)正式上线啦!!!