当前位置:   article > 正文

java实现docx、doc、xlsx、xls、ppt文件转换pdf文件_java实现将ppt转pdf

java实现将ppt转pdf

1、需要引入以下jar包

    <!--word转pdf-->
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-words</artifactId>
        <version>15.8.0</version>
    </dependency>
    
    <!--xlsx或xls转pdf-->
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-cells</artifactId>
        <version>8.5.2</version>
    </dependency>
 
    <!--ppt转pdf-->
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-slides</artifactId>
        <version>19.6</version>
    </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2、去除水印文件

在这里插入图片描述

3、所以的准备好以后就开始实际操作

(1)、首先是xlsx和xls转换pdf操作

i、导包

import com.aspose.cells.License;
import com.aspose.cells.PdfSaveOptions;
import com.aspose.cells.Workbook;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

ii、读取去除水印文件方法

public static boolean getLicense() {
    boolean result = false;
    try {
        // 读取license.xml
        InputStream is = ExcelConvertPdfUtil.class.getClassLoader().getResourceAsStream("license.xml");
        License aposeLic = new License();
        aposeLic.setLicense(is);
        result = true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

iii、转换操作

public static void excel2pdf(String sourceFilePath, String desFilePathd){
    // 验证License 若不验证则转化出的pdf文档会有水印产生
    if (!getLicense()) {
        return;
    }
    log.info("开始转换excel==start");
    FileOutputStream fileOS = null;
    long old = System.currentTimeMillis();
    try {
        // 原始excel路径
        Workbook wb = new Workbook(sourceFilePath);
        fileOS = new FileOutputStream(desFilePathd);
        PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
        pdfSaveOptions.setOnePagePerSheet(true);
        int[] autoDrawSheets={3};
        //当excel中对应的sheet页宽度太大时,在PDF中会拆断并分页。此处等比缩放。
        autoDraw(wb,autoDrawSheets);
        int[] showSheets={0};
        //隐藏workbook中不需要的sheet页。
        printSheetPage(wb,showSheets);
        wb.save(fileOS, pdfSaveOptions);
        fileOS.flush();
        long now = System.currentTimeMillis();
        log.info("共耗时:{}",((now - old) / 1000.0) );
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        if(fileOS!=null){
            try {
                fileOS.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

/**
 * 隐藏workbook中不需要的sheet页。
 * @param wb
 * @param page 显示页的sheet数组
 */
public static void printSheetPage(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);
        }
    }
}

/**
 * 设置打印的sheet 自动拉伸比例
 * @param wb
 * @param page 自动拉伸的页的sheet数组
 */
public static void autoDraw(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();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68

iiii、运行文件

public static void main(String[] args) {
    String inputExcelPath = "/Users/Desktop/xxx.xls";
    String outputPdfPath = "/Users/Desktop/xxx.pdf";
    excel2pdf(inputExcelPath,outputPdfPath);

}   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(2)、ppt转换pdf工具类

i、导包

import com.aspose.slides.License;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import lombok.extern.log4j.Log4j2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

ii、读取去除水印文件方法

    public static boolean getLicense() {
    boolean result = false;
    try {
        //  license.xml
        InputStream is = ExcelConvertPdfUtil.class.getClassLoader().getResourceAsStream("license.xml");
        License aposeLic = new License();
        aposeLic.setLicense(is);
        result = true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

iii、转换方法

  public static void ppt2Pdf(String inPath,String outPath){
    // 验证License 去除水印
    if (!getLicense()) {
        return ;
    }
    long start = System.currentTimeMillis();
    try {
        FileInputStream fileInput = new FileInputStream(inPath);
        Presentation pres = new Presentation(fileInput);
        FileOutputStream out = new FileOutputStream(new File(outPath));
        pres.save(out, SaveFormat.Pdf);
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    long end =System.currentTimeMillis();
    // 转化用时
    log.info("pdf转换成功,共耗时:{}" , ((end - start) / 1000.0) + "秒");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

iiii、运行文件

public static void main(String[] args) {
String inputExcelPath = “/Users/Desktop/xxx.ppt”;
String outputPdfPath = “/Users/Desktop/pdf.pdf”;
ppt2Pdf(inputExcelPath,outputPdfPath);

}
  • 1

(3)、work转pdf文件

i、导包

import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import lombok.extern.log4j.Log4j2;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

ii、读取去除水印文件

    public static boolean getLicense() {
    boolean result = false;
    try {
        // license.xml应放在
        InputStream is = WordConvertPdfUtil.class.getClassLoader().getResourceAsStream("license.xml");
        License aposeLic = new License();
        aposeLic.setLicense(is);
        result = true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

iii、转换方法

/**
 * @param inPath 源文件路径
 * @param outPath 新pdf文件路径
 */
public static void doc2pdf(String inPath, String outPath) {
    // 验证License 若不验证则转化出的pdf文档会有水印产生
    if (!getLicense()) {
        return;
    }
    log.info("开始转换doc==start");
    FileOutputStream os = null;
    try {
        long old = System.currentTimeMillis();
        // 新建一个空白pdf文档
        File file = new File(outPath);
        os = new FileOutputStream(file);
        // Address是将要被转化的word文档
        Document doc = new Document(inPath);
        // 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,
        doc.save(os, SaveFormat.PDF);
        // EPUB, XPS, SWF 相互转换
        long now = System.currentTimeMillis();
        // 转化用时
        log.info("共耗时:{}",((now - old) / 1000.0) );
    } catch (Exception e) {
        log.info("转换pdf报错==[{}]",e);
    }
    finally {
        try {
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

iiii、运行

public static void main(String[] args) {
    String inPath = "/Users/Desktop/xxx.doc";
    String outPath ="/Users/Desktop/xxx.pdf";
    doc2pdf(inPath,outPath);
}
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/69546
推荐阅读
相关标签
  

闽ICP备14008679号