北枫寒夜 2024-03-25 21:03 采纳率: 100%
浏览 9
已结题

poi导出pdf怎么实现

若依框架使用poi导出发票,可以为word或者pdf文件,请附带xml依赖和详细代码,谢谢

  • 写回答

2条回答 默认 最新

  • 码农阿豪 Java领域优质创作者 2024-03-25 21:04
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    解答:
    1. 引入 poi 的依赖 在 pom.xml 文件中加入下面的依赖:
    <dependencies>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.1.2</version>
      </dependency>
    </dependencies>
    
    1. 导出 word 文件 下面的代码演示了如何使用 poi 导出一个基本的发票到 word 文档:
    public void exportToWord() {
      try (XWPFDocument document = new XWPFDocument()) {
        // 创建一个段落
        XWPFParagraph p = document.createParagraph();
        // 创建一个文本格式化子节点
        XWPFRun r = p.createRun();
        r.setBold(true);
        r.setText("Invoice");
        // 添加一个表格
        int numRows = 5;
        int numCols = 2;
        XWPFTable table = document.createTable(numRows, numCols);
        // 设置表头
        XWPFTableRow header = table.getRow(0);
        header.getCell(0).setText("Item");
        header.getCell(1).setText("Price");
        // 填充表格数据
        table.getRow(1).getCell(0).setText("Item 1");
        table.getRow(1).getCell(1).setText("$10");
        table.getRow(2).getCell(0).setText("Item 2");
        table.getRow(2).getCell(1).setText("$20");
        table.getRow(3).getCell(0).setText("Item 3");
        table.getRow(3).getCell(1).setText("$30");
        // 添加总价
        table.getRow(4).getCell(0).setText("Total");
        table.getRow(4).getCell(1).setText("$60");
        // 保存文档
        try (FileOutputStream out = new FileOutputStream("invoice.docx")) {
          document.write(out);
        }
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    
    1. 导出 pdf 文件 下面的代码演示了如何使用 poi 将上面的发票导出到 pdf 文件:
    public void exportToPdf() {
      try (XWPFDocument document = new XWPFDocument()) {
        // 创建发票内容
        // ...
        // 将发票保存到临时文件
        File tmpFile = File.createTempFile("invoice", ".docx");
        try (FileOutputStream out = new FileOutputStream(tmpFile)) {
          document.write(out);
        }
        // 将临时文件转换为 pdf 文件
        try (PDDocument pdf = PDDocument.load(tmpFile)) {
          pdf.save("invoice.pdf");
        }
        // 删除临时文件
        tmpFile.delete();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    

    上面的代码还需要引入 poi 的依赖,以及 apache pdfbox 的依赖:

    <dependencies>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.1.2</version>
      </dependency>
      <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.24</version>
      </dependency>
    </dependencies>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址