diff --git a/pom.xml b/pom.xml
index 92428ca..bd2e0bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,7 +57,7 @@
         </dependency>
 
 
-<!--       Commons Math 来计算各种统计量-->
+        <!--       Commons Math 来计算各种统计量-->
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-math3</artifactId>
@@ -66,19 +66,30 @@
 
 
 
-         <dependency>
-             <groupId>com.squareup.okhttp3</groupId>
-             <artifactId>okhttp</artifactId>
-             <version>4.12.0</version>
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>4.12.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-scratchpad</artifactId>
+            <version>4.1.2</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itextpdf</artifactId>
+            <version>5.5.13.3</version>
+            <scope>compile</scope>
         </dependency>
 
-
-<!--        词频分析-->
-<!--        <dependency>-->
-<!--            <groupId>com.hankcs.hanlp.restful</groupId>-->
-<!--            <artifactId>hanlp-restful</artifactId>-->
-<!--            <version>0.0.12</version>-->
-<!--        </dependency>-->
+        <!--        词频分析-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.hankcs.hanlp.restful</groupId>-->
+        <!--            <artifactId>hanlp-restful</artifactId>-->
+        <!--            <version>0.0.12</version>-->
+        <!--        </dependency>-->
 
         <!--        情感分析-->
         <dependency>
@@ -93,15 +104,15 @@
             <version>0.0.12</version>
         </dependency>
 
-<!--        Apriori算法-->
-<!--        <dependency>-->
-<!--            <groupId>org.paukov</groupId>-->
-<!--            <artifactId>combinatoricsLib</artifactId>-->
-<!--            <version>1.0</version>-->
-<!--        </dependency>-->
+        <!--        Apriori算法-->
+        <!--        <dependency>-->
+        <!--            <groupId>org.paukov</groupId>-->
+        <!--            <artifactId>combinatoricsLib</artifactId>-->
+        <!--            <version>1.0</version>-->
+        <!--        </dependency>-->
 
 
-<!--        logistic逻辑回归算法-->
+        <!--        logistic逻辑回归算法-->
         <!-- 用于矩阵运算 -->
         <dependency>
             <groupId>org.ujmp</groupId>
@@ -334,7 +345,7 @@
             <version>9.1.22</version>
         </dependency>
 
-<!--        //词云-->
+        <!--        //词云-->
         <dependency>
             <groupId>com.kennycason</groupId>
             <artifactId>kumo-core</artifactId>
@@ -347,17 +358,27 @@
         </dependency>
 
 
-<!--        AI-->
+        <!--        AI-->
         <dependency>
             <groupId>com.squareup.okhttp3</groupId>
             <artifactId>okhttp</artifactId>
             <version>4.9.3</version> <!-- 使用最新版本 -->
         </dependency>
+
+        <dependency>
+            <groupId>com.aspose</groupId>
+            <artifactId>aspose-words</artifactId>
+            <version>18.10</version>
+        </dependency>
         <dependency>
-            <groupId>com.ibeetl</groupId>
-            <artifactId>admin-convert-pdf</artifactId>
-            <version>1.3.1</version>
-            <scope>compile</scope>
+            <groupId>com.aspose</groupId>
+            <artifactId>aspose-pdf</artifactId>
+            <version>18.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aspose</groupId>
+            <artifactId>aspose-cells</artifactId>
+            <version>20.7</version>
         </dependency>
 
 
diff --git a/src/main/java/com/sztzjy/marketing/service/impl/StuConceptBlockServiceImpl.java b/src/main/java/com/sztzjy/marketing/service/impl/StuConceptBlockServiceImpl.java
index 9f3228a..9e3dbf8 100644
--- a/src/main/java/com/sztzjy/marketing/service/impl/StuConceptBlockServiceImpl.java
+++ b/src/main/java/com/sztzjy/marketing/service/impl/StuConceptBlockServiceImpl.java
@@ -1,6 +1,7 @@
 package com.sztzjy.marketing.service.impl;
 
 
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.IdUtil;
 import com.sztzjy.marketing.config.exception.handler.ServiceException;
 import com.sztzjy.marketing.entity.*;
@@ -13,11 +14,13 @@ import com.sztzjy.marketing.util.ConvertUtil;
 import com.sztzjy.marketing.util.PdfUtil;
 import com.sztzjy.marketing.util.ResultEntity;
 import com.sztzjy.marketing.util.compute.ScoringUtil;
+import com.sztzjy.marketing.util.convertPDF.PDFConvertUtil;
 import com.sztzjy.marketing.util.file.IFileUtil;
 import org.apache.poi.util.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
+import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
@@ -277,6 +280,19 @@ public class StuConceptBlockServiceImpl implements StuConceptBlockService {
         if (stuBlockProductWithBLOBs == null) {
             throw new RuntimeException("模块或用户ID不能为空");
         }
+        String upload = null;
+        String originalFilename = file.getOriginalFilename();
+        int i = file.getOriginalFilename().lastIndexOf(".");
+        String substring = file.getOriginalFilename().substring(i + 1);
+
+        boolean flag = false;
+        //将文件转为PDF
+        if ("doc".equals(substring) || "docx".equals(substring)
+                || "jpeg".equals(substring) || "png".equals(substring) || "jpg".equals(substring)) {
+
+            flag = true;
+
+        }
 
         //查询是否已有分数
         StuPracticalTrainingReportExample stuPracticalTrainingReportExample = new StuPracticalTrainingReportExample();
@@ -292,11 +308,17 @@ public class StuConceptBlockServiceImpl implements StuConceptBlockService {
                 }
             }
             //多次上传  更新  上限就六个
+            StuPracticalTrainingReport report = stuPracticalTrainingReports.get(0);
 
+            if (flag) {
+                upload = convertFile(substring, file);
+            }
 
-            StuPracticalTrainingReport report = stuPracticalTrainingReports.get(0);
             //更新操作
-            String upload = fileUtil.upload(file);
+            if (upload == null) {
+                upload = fileUtil.upload(file);
+            }
+
             report.setUrl(upload);
             report.setUploadTime(new Date());
             report.setSize((int) file.getSize());
@@ -306,8 +328,13 @@ public class StuConceptBlockServiceImpl implements StuConceptBlockService {
 
             return report;
         } else {
+            if (flag) {
+                upload = convertFile(substring, file);
+            }
             //第一次上传
-            String upload = fileUtil.upload(file);
+            if (upload == null) {
+                upload = fileUtil.upload(file);
+            }
             StuPracticalTrainingReport report = new StuPracticalTrainingReport();
 
             int uuid = UUID.randomUUID().hashCode();
@@ -359,7 +386,7 @@ public class StuConceptBlockServiceImpl implements StuConceptBlockService {
 //                if (stuPracticalTrainingReportList.size() == 6) {
 //                    stuScoreDetails.setCompletionStatus("1");
 //                }
-                ArrayList<String> arrayList = new ArrayList<>();
+                List<String> arrayList = new ArrayList<>(10);
                 arrayList.add("AI文生图");
                 arrayList.add("AI修图");
                 arrayList.add("AI视频");
@@ -396,6 +423,47 @@ public class StuConceptBlockServiceImpl implements StuConceptBlockService {
 
     }
 
+    private String convertFile(String substring, MultipartFile file) {
+        String originalFilename = file.getOriginalFilename();
+
+        //格式不为pdf,转换
+        try {
+            BufferedInputStream inputStream = FileUtil.getInputStream(convertMultipartFileToFile(file));
+
+
+            String s = IdUtil.simpleUUID();
+//                String filePath = "D:\\home";
+            // 创建 File 对象
+//                File infoFile = new File(filePath);
+//                if (!infoFile.exists()) {
+//                    infoFile.mkdir();
+//                }
+            FileOutputStream fileOutputStream = new FileOutputStream(filePath + "/pdf/" + s + ".pdf");
+            if ("doc".equals(substring) || "docx".equals(substring)) {
+                PDFConvertUtil.convertToPDFByFileNameSuffix(originalFilename, inputStream, fileOutputStream);
+            } else if ("jpeg".equals(substring) || "png".equals(substring) || "jpg".equals(substring)) {
+                PDFConvertUtil.imgToPdf(inputStream, fileOutputStream);
+            }
+            FileInputStream fileInputStream = new FileInputStream(filePath + "/pdf/" + s + ".pdf");
+
+            MultipartFile multipartFile = new MockMultipartFile(
+                    "example.txt", // 文件名
+                    s + ".pdf", // 原始文件名
+                    "pdf",   // 文件类型
+                    fileInputStream
+            );
+            String upload = localFileUtil.upload(multipartFile);
+
+            fileInputStream.close();
+            fileOutputStream.close();
+            return upload;
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
 
     /*
      * @author whb
@@ -686,7 +754,8 @@ public class StuConceptBlockServiceImpl implements StuConceptBlockService {
     }
 
     @Override
-    public ResultEntity downReportByZip(HttpServletResponse response, String userId, String module, String reportName) {
+    public ResultEntity downReportByZip(HttpServletResponse response, String userId, String module, String
+            reportName) {
         StuPracticalTrainingReportExample example = new StuPracticalTrainingReportExample();
         StuPracticalTrainingReportExample.Criteria criteria = example.createCriteria()
                 .andModuleEqualTo(module)
@@ -748,7 +817,8 @@ public class StuConceptBlockServiceImpl implements StuConceptBlockService {
         return null;
     }
 
-    private StuPracticalTrainingReport uploadByReport(MultipartFile file, StuBlockProductWithDTO stuBlockProductWithBLOBs) {
+    private StuPracticalTrainingReport uploadByReport(MultipartFile file, StuBlockProductWithDTO
+            stuBlockProductWithBLOBs) {
 
         StuPracticalTrainingReport stuPracticalTrainingReport = new StuPracticalTrainingReport();
         String upload = fileUtil.upload(file);
@@ -768,7 +838,7 @@ public class StuConceptBlockServiceImpl implements StuConceptBlockService {
     }
 
 
-    public File convertMultipartFileToFile(MultipartFile multipartFile) throws IOException {
+    public static File convertMultipartFileToFile(MultipartFile multipartFile) throws IOException {
         // 创建一个临时文件
         File tempFile = File.createTempFile("temp", null);
 
diff --git a/src/main/java/com/sztzjy/marketing/util/convertPDF/PDFConvertUtil.java b/src/main/java/com/sztzjy/marketing/util/convertPDF/PDFConvertUtil.java
new file mode 100644
index 0000000..5e64927
--- /dev/null
+++ b/src/main/java/com/sztzjy/marketing/util/convertPDF/PDFConvertUtil.java
@@ -0,0 +1,538 @@
+package com.sztzjy.marketing.util.convertPDF;
+
+import com.aspose.words.FontSettings;
+import com.aspose.words.License;
+import com.aspose.words.SaveFormat;
+import com.itextpdf.text.Document;
+import com.itextpdf.text.Image;
+import com.itextpdf.text.PageSize;
+import com.itextpdf.text.pdf.PdfPCell;
+import com.itextpdf.text.pdf.PdfPTable;
+import com.itextpdf.text.pdf.PdfWriter;
+import org.apache.poi.hslf.usermodel.*;
+import org.apache.poi.xslf.usermodel.*;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.sztzjy.marketing.util.convertPDF.PDFConvertUtil.TypeEnum.*;
+
+
+/**
+ * 功能描述: <br>
+ * PDF 转换工具
+ *
+ * @Author: lx
+ * @Date: 2022/12/13 16:26
+ */
+public final class PDFConvertUtil {
+
+    final private static Map<TypeEnum, List<String>> types = new HashMap<>();
+
+    public static enum TypeEnum {
+        WORD, EXCEL, PPT, PPTX, IMG, OTHER
+    }
+
+    static {
+        types.put(WORD, Arrays.asList("DOC", "DOCX"));
+        types.put(EXCEL, Arrays.asList("XLS", "XLSX"));
+        types.put(PPT, Arrays.asList("PPT"));
+        types.put(PPTX, Arrays.asList("PPTX"));
+//        types.put(IMG, Arrays.asList("JPEG", "JPG", "PNG"));
+        types.put(OTHER, Arrays.asList("OOXML", "RTF HTML", "OpenDocument", "EPUB", "XPS", "SWF"));
+
+    }
+
+    /**
+     * @param inputStream  源文件输入流
+     * @param outputStream pdf文件输出流
+     **/
+    public static boolean imgToPdf(InputStream inputStream, OutputStream outputStream) {
+
+        Document document = null; PdfWriter pdfWriter = null;
+        try {
+            //此处处理乱码和小方块
+            //如果在本地运行,此处报错,请注释这个这是字体,主要是为了解决linux环境下面运行jar时找不到中文字体的问题
+            //指定文件库内容路径
+            FontSettings.getDefaultInstance().setFontsFolders(
+                    new String[] {"/usr/share/fonts", "/usr/share/fonts/chinese"}
+                    , true);
+
+            // 创建文档,设置PDF页面的大小 A2-A9, 个人觉得A3最合适
+            document = new Document(PageSize.A6, 0, 0, 0, 0);
+
+            // 新建pdf文档,具体逻辑看.getInstance方法
+            pdfWriter = PdfWriter.getInstance(document, outputStream);
+
+            document.open();
+            document.newPage();
+
+            // 将文件流转换为字节流,便于格式转换
+            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
+            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+            byte[] bytes = new byte[1024];
+            int length = 0 ;
+            while (-1 != (length = bufferedInputStream.read(bytes))) {
+                byteArrayOutputStream.write(bytes, 0, length);
+            }
+
+            // 处理img图片
+            Image image = Image.getInstance(byteArrayOutputStream.toByteArray());
+
+            float height = image.getHeight();
+            float width = image.getWidth();
+
+            float percent = 0.0f;
+            // 设置像素或者长宽高,将会影响图片的清晰度,因为只是对图片放大或缩小
+            if (height > width) {
+                // A4 - A9
+                percent = PageSize.A6.getHeight() / height * 100;
+            } else {
+                percent = PageSize.A6.getWidth() / width * 100;
+            }
+
+            image.setAlignment(Image.MIDDLE);
+            image.scalePercent(percent);
+
+            // 将图片放入文档中,完成pdf转换
+            document.add(image);
+            System.out.println("image转换完毕");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        } finally {
+            close(document, pdfWriter);
+            closeOutput(outputStream);
+            closeInput(inputStream);
+        }
+
+        return true;
+    }
+
+    /**
+     * @param inputStream  源文件输入流
+     * @param outputStream pdf文件输出流
+     **/
+    public static boolean wordToPdfByAspose(InputStream inputStream, OutputStream outputStream) {
+
+        // 验证License 若不验证则转化出的pdf文档会有水印产生
+        if (!getLicense()) {
+            return false;
+        }
+        try {
+            //此处处理乱码和小方块
+            //如果在本地运行,此处报错,请注释这个这是字体,主要是为了解决linux环境下面运行jar时找不到中文字体的问题
+            //指定文件库内容路径
+            FontSettings.getDefaultInstance().setFontsFolders(
+                    new String[] {"/usr/share/fonts", "/usr/share/fonts/win"}
+                    , true);
+            // 将源文件保存在com.aspose.words.Document中,具体的转换格式依靠里面的save方法
+            com.aspose.words.Document doc = new com.aspose.words.Document(inputStream);
+
+            // 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,EPUB, XPS, SWF 相互转换
+            doc.save(outputStream, SaveFormat.PDF);
+
+            System.out.println("word转换完毕");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }finally {
+            closeOutput(outputStream);
+            closeInput(inputStream);
+        }
+        return true;
+    }
+
+    /**
+     * 关闭输出流
+     * @param outputStream
+     */
+    private static void closeOutput(OutputStream outputStream) {
+        if (outputStream != null) {
+            try {
+                outputStream.flush();
+                outputStream.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 关闭输出流
+     * @param inputStream
+     */
+    private static void closeInput(InputStream inputStream) {
+        if (inputStream != null) {
+            try {
+                inputStream.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private static void close(Document document, PdfWriter pdfWriter) {
+        if (document != null) {
+            document.close();
+        }
+        if (pdfWriter != null) {
+            pdfWriter.close();
+        }
+    }
+
+    // 官方文档的要求 无需理会
+    public static boolean getLicense() {
+        boolean result = false;
+        try {
+            String s = "<License>\n" +
+                    "  <Data>\n" +
+                    "    <Products>\n" +
+                    "      <Product>Aspose.Total for Java</Product>\n" +
+                    "      <Product>Aspose.Words for Java</Product>\n" +
+                    "    </Products>\n" +
+                    "    <EditionType>Enterprise</EditionType>\n" +
+                    "    <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
+                    "    <LicenseExpiry>20991231</LicenseExpiry>\n" +
+                    "    <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
+                    "  </Data>\n" +
+                    "  <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +
+                    "</License>";
+            ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
+            License aposeLic = new License();
+            aposeLic.setLicense(is);
+            result = true;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+    /**
+     * @param inputStream  源文件输入流
+     * @param outputStream pdf文件输出流
+     **/
+    public static boolean excelToPdf(InputStream inputStream, OutputStream outputStream) {
+        // 验证License 若不验证则转化出的pdf文档会有水印产生
+        if (!getExcelLicense()) {
+            return false;
+        }
+        try {
+            //此处处理乱码和小方块
+            //如果在本地运行,此处报错,请注释这个这是字体,主要是为了解决linux环境下面运行jar时找不到中文字体的问题
+            //指定文件库内容路径
+            FontSettings.getDefaultInstance().setFontsFolders(
+                    new String[] {"/usr/share/fonts", "/usr/share/fonts/win"}
+                    , true);
+            // 原始excel路径
+            com.aspose.cells.Workbook wb = new com.aspose.cells.Workbook(inputStream);
+
+            com.aspose.cells.PdfSaveOptions pdfSaveOptions = new com.aspose.cells.PdfSaveOptions();
+            pdfSaveOptions.setOnePagePerSheet(false);
+
+            int[] autoDrawSheets={3};
+            //当excel中对应的sheet页宽度太大时,在PDF中会拆断并分页。此处等比缩放。
+            autoDraw(wb,autoDrawSheets);
+
+            int[] showSheets={0};
+            //隐藏workbook中不需要的sheet页。
+            printSheetPage(wb,showSheets);
+            wb.save(outputStream, pdfSaveOptions);
+            System.out.println("excel转换完毕");
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }finally {
+            closeOutput(outputStream);
+            closeInput(inputStream);
+        }
+        return true;
+    }
+
+
+    /**
+     * 设置打印的sheet 自动拉伸比例
+     * @param wb
+     * @param page 自动拉伸的页的sheet数组
+     */
+    public static void autoDraw(com.aspose.cells.Workbook wb,int[] page){
+        if(null!=page&&page.length>0){
+            for (int i = 0; i < page.length; i++) {
+                wb.getWorksheets().get(i).getHorizontalPageBreaks().clear();
+                wb.getWorksheets().get(i).getVerticalPageBreaks().clear();
+            }
+        }
+    }
+
+    /**
+     * 隐藏workbook中不需要的sheet页。
+     *
+     * @param wb
+     * @param page 显示页的sheet数组
+     */
+    public static void printSheetPage(com.aspose.cells.Workbook wb, int[] page) {
+        for (int i = 1; i < wb.getWorksheets().getCount(); i++) {
+            wb.getWorksheets().get(i).setVisible(false);
+        }
+        if (null == page || page.length == 0) {
+            wb.getWorksheets().get(0).setVisible(true);
+        } else {
+            for (int i = 0; i < page.length; i++) {
+                wb.getWorksheets().get(i).setVisible(true);
+            }
+        }
+    }
+
+    public static boolean getExcelLicense() {
+        boolean result = false;
+        try {
+            String s = "<License>\n" +
+                    "  <Data>\n" +
+                    "    <Products>\n" +
+                    "      <Product>Aspose.Cells for Java</Product>\n" +
+                    "    </Products>\n" +
+                    "    <EditionType>Enterprise</EditionType>\n" +
+                    "    <SubscriptionExpiry>29991231</SubscriptionExpiry>\n" +
+                    "    <LicenseExpiry>29991231</LicenseExpiry>\n" +
+                    "    <SerialNumber>evilrule</SerialNumber>\n" +
+                    "  </Data>\n" +
+                    "  <Signature>evilrule</Signature>\n" +
+                    "</License>";
+            ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
+            com.aspose.cells.License aposeLic = new com.aspose.cells.License();
+            aposeLic.setLicense(is);
+            result = true;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    /**
+     * pptToPdf
+     * @param inputStream
+     * @param outputStream
+     * @return
+     */
+    public static boolean pptToPdf(InputStream inputStream, OutputStream outputStream) {
+
+        Document document = null;
+        HSLFSlideShow hslfSlideShow = null;
+        PdfWriter pdfWriter = null;
+
+        try {
+            //此处处理乱码和小方块
+            //如果在本地运行,此处报错,请注释这个这是字体,主要是为了解决linux环境下面运行jar时找不到中文字体的问题
+            //指定文件库内容路径
+            FontSettings.getDefaultInstance().setFontsFolders(
+                    new String[] {"/usr/share/fonts", "/usr/share/fonts/win"}
+                    , true);
+            hslfSlideShow = new HSLFSlideShow(inputStream);
+
+            // 获取ppt文件页面
+            Dimension dimension = hslfSlideShow.getPageSize();
+
+            document = new Document();
+
+            // pdfWriter实例
+            pdfWriter = PdfWriter.getInstance(document, outputStream);
+
+            document.open();
+
+            PdfPTable pdfPTable = new PdfPTable(1);
+
+            List<HSLFSlide> hslfSlideList = hslfSlideShow.getSlides();
+
+            for (int i=0; i < hslfSlideList.size(); i++) {
+                HSLFSlide hslfSlide = hslfSlideList.get(i);
+                // 设置字体, 解决中文乱码
+                for (HSLFShape shape : hslfSlide.getShapes()) {
+                    if (shape instanceof HSLFTextShape) {
+                        HSLFTextShape textShape = (HSLFTextShape) shape;
+
+                        for (HSLFTextParagraph textParagraph : textShape.getTextParagraphs()) {
+                            for (HSLFTextRun textRun : textParagraph.getTextRuns()) {
+                                textRun.setFontFamily("宋体");
+                            }
+                        }
+                    }
+                }
+                BufferedImage bufferedImage = new BufferedImage((int)dimension.getWidth(), (int)dimension.getHeight(), BufferedImage.TYPE_INT_RGB);
+
+                Graphics2D graphics2d = bufferedImage.createGraphics();
+
+                graphics2d.setPaint(Color.white);
+                graphics2d.setFont(new Font("宋体", Font.PLAIN, 12));
+
+                hslfSlide.draw(graphics2d);
+
+                graphics2d.dispose();
+
+                Image image = Image.getInstance(bufferedImage, null);
+                image.scalePercent(56f);
+
+                // 写入单元格
+                pdfPTable.addCell(new PdfPCell(image, true));
+                document.add(image);
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        } finally {
+            close(document, pdfWriter);
+            closeOutput(outputStream);
+            closeInput(inputStream);
+        }
+        System.out.println("ppt转换完毕");
+        return true;
+    }
+
+    /**
+     *  pptxToPdf
+     * @param inputStream
+     * @param outputStream
+     * @return
+     */
+    public static boolean pptxToPdf(InputStream inputStream, OutputStream outputStream) {
+
+        Document document = null;
+
+        XMLSlideShow slideShow = null;
+
+        PdfWriter pdfWriter = null;
+
+        try {
+            //此处处理乱码和小方块
+            //如果在本地运行,此处报错,请注释这个这是字体,主要是为了解决linux环境下面运行jar时找不到中文字体的问题
+            //指定文件库内容路径
+            FontSettings.getDefaultInstance().setFontsFolders(
+                    new String[] {"/usr/share/fonts", "/usr/share/fonts/win"}
+                    , true);
+
+            slideShow = new XMLSlideShow(inputStream);
+
+            Dimension dimension = slideShow.getPageSize();
+
+            document = new Document();
+
+            pdfWriter = PdfWriter.getInstance(document, outputStream);
+
+            document.open();
+
+            PdfPTable pdfPTable = new PdfPTable(1);
+
+            List<XSLFSlide> slideList = slideShow.getSlides();
+
+            for (int i = 0, row = slideList.size(); i < row; i++) {
+
+                XSLFSlide slide = slideList.get(i);
+
+                // 设置字体, 解决中文乱码
+                for (XSLFShape shape : slide.getShapes()) {
+                    if (shape instanceof XSLFTextShape) {
+                        XSLFTextShape textShape = (XSLFTextShape) shape;
+
+                        for (XSLFTextParagraph textParagraph : textShape.getTextParagraphs()) {
+                            for (XSLFTextRun textRun : textParagraph.getTextRuns()) {
+                                textRun.setFontFamily("宋体");
+                            }
+                        }
+                    }
+                }
+
+                BufferedImage bufferedImage = new BufferedImage((int)dimension.getWidth(), (int)dimension.getHeight(), BufferedImage.TYPE_INT_RGB);
+
+                Graphics2D graphics2d = bufferedImage.createGraphics();
+
+                graphics2d.setPaint(Color.white);
+                graphics2d.setFont(new Font("宋体", Font.PLAIN, 12));
+
+                slide.draw(graphics2d);
+
+                graphics2d.dispose();
+
+                Image image = Image.getInstance(bufferedImage, null);
+                //image.scalePercent(50f);
+                image.scalePercent(56f);
+
+                // 写入单元格
+                pdfPTable.addCell(new PdfPCell(image, true));
+                document.add(image);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        } finally {
+            close(document, pdfWriter);
+            closeOutput(outputStream);
+            closeInput(inputStream);
+        }
+        System.out.println("pptx转换完毕");
+        return true;
+    }
+
+    /**
+     * 功能描述: <br>
+     * 通过文件名后缀来进行转换
+     *
+     * @return {@link boolean}
+     * @Author: lx
+     * @Date: 2022/12/13 16:37
+     */
+    public static boolean convertToPDFByFileNameSuffix(String fileName, InputStream inputStream, OutputStream outputStream) {
+
+        String fileSuffix = getFileSuffix(fileName).toUpperCase();
+
+        if (types.get(WORD).contains(fileSuffix)) {
+            return wordToPdfByAspose(inputStream, outputStream);
+        }
+        if (types.get(EXCEL).contains(fileSuffix)) {
+            return excelToPdf(inputStream, outputStream);
+        }
+        if (types.get(PPT).contains(fileSuffix)) {
+            return pptToPdf(inputStream, outputStream);
+        }
+        if (types.get(PPTX).contains(fileSuffix)) {
+            return pptxToPdf(inputStream, outputStream);
+        }
+//        if (types.get(IMG).contains(fileSuffix)) {
+//            return imgToPdf(inputStream, outputStream);
+//        }
+        if (types.get(OTHER).contains(fileSuffix)) {
+            return wordToPdfByAspose(inputStream, outputStream);
+        }
+        return false;
+    }
+
+    /**
+     * 判断是否可以生成PDF文件
+     * @param fileName
+     * @return
+     */
+    public static boolean isCreatePdf(String fileName) {
+        return types.values().stream().anyMatch(item -> item.contains(getFileSuffix(fileName).toUpperCase()));
+    }
+
+    /**
+     * 功能描述: <br>
+     * 取文件名后缀
+     *
+     * @param fileName
+     * @return {@link String}
+     * @Author: lx
+     * @Date: 2022/12/13 21:51
+     */
+    private static String getFileSuffix(String fileName) {
+        if (!fileName.contains(".")) {
+            throw new RuntimeException("非法的文件名,文件名必须要有文件类型!");
+        }
+        String[] split = fileName.split("\\.");
+        return split[split.length - 1];
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 4c4fdbb..1b9df88 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -21,8 +21,8 @@ spring:
 file:
   type: local
   path: /usr/local/tianzeProject/digitalMarketing/uploadFile
-#  path: D:\home
-#  path: /usr/local/tianzeProject/blockFinance/uploadFile
+  #path: D:\home
+
 
 bigModule:
   accessKey: 4zXteUiZO56bkIXfcIypUVsS