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

JAVA读取doc,docx转PDF通过vue展示

后端代码:

 @GetMapping("/getContentAsPdf/{guid}")
    public void getContentAsPdf(@PathVariable String guid, HttpServletResponse response) {
        String contentUrl = ""; // 假设这个方法返回文档的URL
        List<BsResource> byGuid = bsResourceService.findByGuid(guid);
        if (!CollectionUtils.isEmpty(byGuid)) {
            contentUrl = byGuid.get(0).getAbsolutePath();
        }

        // 设置响应的内容类型为PDF
        response.setContentType("application/pdf");

        try (InputStream is = new URL(contentUrl).openStream();
             ByteArrayOutputStream baos = new ByteArrayOutputStream()) {

            if (contentUrl.endsWith(".doc")) {
                // 处理.doc文件
                HWPFDocument hwpfDocument = new HWPFDocument(is);
                Range range = hwpfDocument.getRange();
                StringBuilder textBuilder = new StringBuilder();
                for (int i = 0; i < range.numParagraphs(); i++) {
                    textBuilder.append(range.getParagraph(i).text()).append("\n");
                }
                // 将文本内容转换为PDF
                convertTextToPdf(textBuilder.toString(), baos);
            } else if (contentUrl.endsWith(".docx")) {
                // 处理.docx文件
                try (XWPFDocument docxDocument = new XWPFDocument(is)) {
                    PdfWriter writer = new PdfWriter(baos);
                    PdfDocument pdf = new PdfDocument(writer);
                    Document document = new Document(pdf);

                    for (XWPFParagraph paragraph : docxDocument.getParagraphs()) {
                        document.add(new Paragraph(paragraph.getText()));
                    }

                    document.close();
                }
            }

            // 将PDF写入响应流
            try (OutputStream os = response.getOutputStream()) {
                baos.writeTo(os);
            }
        } catch (MalformedURLException ex) {
            throw new RuntimeException(ex);
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        }
    }

    private void convertTextToPdf(String text, ByteArrayOutputStream baos) throws IOException {
        PdfWriter writer = new PdfWriter(baos);
        PdfDocument pdf = new PdfDocument(writer);
        Document document = new Document(pdf);
        document.add(new Paragraph(text));
        document.close();
    }

前端VUE调用(可以用iframe嵌套):

    async handleTitleClick(row) {
      try {
        // 显示PDF
        this.pdfUrl = `${baseURL}/bs/doc/getContentAsPdf/${row.guid}`;
        this.dialogVisible = true;
      } catch (error) {
        console.error('获取PDF文件失败:', error);
        this.$message.error('获取PDF文件失败');
      }
    },

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

相关文章:

  • LeNet网络搭建
  • BERT模型入门(1)BERT的基本概念
  • 5G学习笔记之Non-Public Network
  • [Unity Shader][图形渲染] Shader数学基础11 - 复合变换详解
  • VR线上展厅的色彩管理如何影响用户情绪?
  • vue2 - Day03 - (生命周期、组件、组件通信)
  • 基于Multisim拔河比赛游戏+计分电路(含仿真和报告)
  • 华为 HarmonyOS NEXT 原生应用开发:【封装正则API】在原生鸿蒙中使用正则表达式校验登录注册模块(邮箱、密码、手机号)校验
  • 微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems
  • WordPress 中最佳的维护服务:入门级用户指南
  • 【机器学习导引】ch4-决策树
  • copyq禁止访问网络(ubuntu cgroup)
  • 发不了Science?那是因为你不会画Science风格的配图
  • 静态数据区,堆,栈
  • linux动态库与静态库
  • 从底层技术到实际应用:Claude与ChatGPT谁更适合学术写作?
  • Redis学习:BitMap/HyperLogLog/GEO案例 、布隆过滤器BloomFilter、缓存预热+缓存雪崩+缓存击穿+缓存穿透
  • 20241106,LeetCode 每日一题,用 Go 实现整数回文数判断
  • Redis(2):内存模型
  • java:题目:用Java实现简单的自取取款操作
  • Leetcode 第 422 场周赛题解
  • Flutter中有趣的级联语法
  • 蓝桥杯真题——三角回文数(C语言)
  • PCL 点云配准 精度评价指标均方根误差(RMSE)
  • ASP .NET CORE 6 在项目中集成WatchDog开源项目
  • 社区养老服务小程序ssm+论文源码调试讲解