aspose jar下载不下来,需要修改下载jar包的来源
<repositories>
        <repository>
            <id>aspose-maven-repository</id>
            <url>https://releases.aspose.com/java/repo</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
1.word(doc和docx)转pdf
        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-words</artifactId>
            <version>20.12</version>
            <type>pom</type>
        </dependency>
package com.ruoyi.web.controller.common; import com.aspose.words.Document; import com.aspose.words.License; import com.aspose.words.SaveFormat; import com.ruoyi.common.exception.ServiceException; import org.apache.xmlbeans.ResourceLoader; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; public class WordToPdf { public static InputStream wordToPdf(MultipartFile file) {try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) { Document doc = new Document(file.getInputStream()); //sourceFile是将要被转化的word文档 doc.save(baos, SaveFormat.PDF);//全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换 byte[] pdfBytes = baos.toByteArray(); InputStream pdfInputStream = new ByteArrayInputStream(pdfBytes); return pdfInputStream; } catch (Exception e) { System.out.println("convert failed"); e.printStackTrace(); throw new ServiceException("convert word to pdf failed"); } } }
2.Excel(xls和xlsx)转pdf
<dependency>
       <groupId>com.aspose</groupId>
       <artifactId>aspose-cells</artifactId>
       <version>20.12</version>
</dependency>
package com.ruoyi.web.controller.common; import com.aspose.cells.PdfSaveOptions; import com.aspose.cells.Workbook; import com.aspose.words.License; import com.ruoyi.common.exception.ServiceException; import org.apache.xmlbeans.ResourceLoader; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; public class ExcelToPdf { public static InputStream excelToPdf(MultipartFile file) {try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) { Workbook wb = new Workbook(file.getInputStream()); PdfSaveOptions pdfSaveOptions = new PdfSaveOptions(); pdfSaveOptions.setOnePagePerSheet(true); wb.save(baos, pdfSaveOptions); baos.flush(); baos.close(); byte[] pdfBytes = baos.toByteArray(); InputStream pdfInputStream = new ByteArrayInputStream(pdfBytes); return pdfInputStream; } catch (Exception e) { e.printStackTrace(); throw new ServiceException("convert excel to pdf failed"); } } }
3.ppt(ppt和pptx)转pdf
 <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-slides</artifactId>
            <version>20.12</version>
            <classifier>jdk16</classifier>
        </dependency>
package com.ruoyi.web.controller.common; import com.aspose.slides.Presentation; import com.aspose.slides.SaveFormat; import com.ruoyi.common.exception.ServiceException; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; public class PptToPdf { public static InputStream pptToPdf(MultipartFile file) { try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) { Presentation pres = new Presentation(file.getInputStream()); pres.save(baos, SaveFormat.Pdf); byte[] pdfBytes = baos.toByteArray(); InputStream pdfInputStream = new ByteArrayInputStream(pdfBytes); return pdfInputStream; }catch (Exception e) { e.printStackTrace(); throw new ServiceException("convert ppt/pptx to pdf failed"); } } }
注:免费版生成出来是有水印的,如果购买正版,会有license,把文件放到resource目录下,读取并验签
private static boolean getLicense() { boolean result = false; try { ClassLoader classLoader = ResourceLoader.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("license.xml"); // license.xml应放在resource路径下 License aposeLic = new License(); aposeLic.setLicense(is); result = true; } catch (Exception e) { e.printStackTrace(); } return result; }