将PDF转换为Microsoft PowerPoint

Aspose.PDF for Java 让您跟踪PDF到PPTX转换的进度。 我们有一个名为Aspose.Slides的API,它提供创建和操作PPT/PPTX演示文稿的功能。该API还提供将PPT/PPTX文件转换为PDF格式的功能。在Aspose.PDF for Java中,我们引入了将PDF文档转换为PPTX格式的功能。在此转换过程中,PDF文件的各个页面被转换为PPTX文件中的单独幻灯片。

在PDF到PPTX转换过程中,文本被渲染为可选择/更新的文本,而不是渲染为图像。 请注意,为了将PDF文件转换为PPTX格式,Aspose.PDF提供了一个名为PptxSaveOptions的类。PptxSaveOptions类的对象作为第二个参数传递给Document.save(..)方法。

查看下一个代码片段,以解决将PDF转换为PowerPoint格式的任务:

public final class ConvertPDFtoPPTX {

    private ConvertPDFtoPPTX() {

    }

    private static final Path DATA_DIR = Paths.get("/home/aspose/pdf-examples/Samples");

    public static void run() throws IOException {
        convertPDFtoPPTX_Simple();
        convertPDFtoPPTX_SlideAsImages();
        convertPDFtoPPTX_ProgresDetails();
    }

    public static void convertPDFtoPPTX_Simple() {
        String documentFileName = Paths.get(DATA_DIR.toString(), "PDFToPPTX.pdf").toString();
        String pptxDocumentFileName = Paths.get(DATA_DIR.toString(), "PDFToPPTX_out.pptx").toString();

        // 加载PDF文档
        Document document = new Document(documentFileName);

        // 实例化PptxSaveOptions
        PptxSaveOptions pptx_save = new PptxSaveOptions();

        // 将输出保存为PPTX格式
        document.save(pptxDocumentFileName, pptx_save);
        document.close();
    }
}

将 PDF 转换为以图像为幻灯片的 PPTX

如果您需要将可搜索的 PDF 转换为以图像而不是可选择文本的 PPTX,Aspose.PDF 提供了这种功能,通过 Aspose.Pdf.PptxSaveOptions 类来实现。为此,将 PptxSaveOptions 类的属性 SlidesAsImages 设置为 ’true’,如下代码示例所示。

以下代码片段展示了将 PDF 文件转换为以图像为幻灯片的 PPTX 格式的过程。

public static void convertPDFtoPPTX_SlideAsImages() {
    String documentFileName = Paths.get(DATA_DIR.toString(), "PDFToPPTX.pdf").toString();
    String pptxDocumentFileName = Paths.get(DATA_DIR.toString(), "PDFToPPTX_out.pptx").toString();

    // 加载 PDF 文档
    Document document = new Document(documentFileName);
    // 实例化 PptxSaveOptions 实例
    PptxSaveOptions pptxSaveOptions = new PptxSaveOptions();
    // 将输出保存为 PPTX 格式
    pptxSaveOptions.setSlidesAsImages(true);

    document.save(pptxDocumentFileName, pptxSaveOptions);
    document.close();
}

在控制台显示进度与 Aspose.PDF for Java 看起来像这样:

package com.aspose.pdf.examples.conversion;

import com.aspose.pdf.Document;
import com.aspose.pdf.PptxSaveOptions;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * 将 PDF 转换为 PPTX。
 */
public final class ConvertPDFtoPPTX {

    private ConvertPDFtoPPTX() {

    }

    private static final Path DATA_DIR = Paths.get("/home/aspose/pdf-examples/Samples");

    public static void run() throws IOException {
        convertPDFtoPPTX_ProgressDetails();
    }

    public static void convertPDFtoPPTX_ProgressDetails() {
        String documentFileName = Paths.get(DATA_DIR.toString(), "PDFToPPTX.pdf").toString();
        String pptxDocumentFileName = Paths.get(DATA_DIR.toString(), "PDFToPPTX_out.pptx").toString();

        // 加载 PDF 文档
        Document document = new Document(documentFileName);

        // 实例化 PptxSaveOptions 实例
        PptxSaveOptions pptx_save = new PptxSaveOptions();

        // 指定自定义进度处理程序
        pptx_save.setCustomProgressHandler(new ShowProgressOnConsole());

        // 以 PPTX 格式保存输出
        document.save(pptxDocumentFileName, pptx_save);
        document.close();
    }
}

PPTX 转换的进度详情

Aspose.PDF for Java 允许您跟踪 PDF 到 PPTX 的转换进度。Aspose.Pdf.PptxSaveOptions 类提供了 CustomProgressHandler 属性,可以指定为自定义方法以跟踪转换进度,如以下代码示例所示。

package com.aspose.pdf.examples;

import java.time.LocalDateTime;

import com.aspose.pdf.ProgressEventType;
import com.aspose.pdf.UnifiedSaveOptions.ConversionProgressEventHandler;
import com.aspose.pdf.UnifiedSaveOptions.ProgressEventHandlerInfo;

class ShowProgressOnConsole extends ConversionProgressEventHandler{

    @Override
    public void invoke(ProgressEventHandlerInfo eventInfo) {        
        switch (eventInfo.EventType) {
            case ProgressEventType.TotalProgress:
                System.out.println(
                        String.format("%s  - 转换进度 : %d %%.", LocalDateTime.now().toString(), eventInfo.Value));
                break;
            case ProgressEventType.ResultPageCreated:
                System.out.println(String.format("%s  - 结果页面的 %s 在 %d 布局中创建。", LocalDateTime.now().toString(),
                        eventInfo.Value, eventInfo.MaxValue));
                break;
            case ProgressEventType.ResultPageSaved:
                System.out.println(String.format("%s  - 结果页面 %d 在 %d 中导出。", LocalDateTime.now(), eventInfo.Value, eventInfo.MaxValue));
                break;
            case ProgressEventType.SourcePageAnalysed:
                System.out.println(String.format("%s  - 源页面 %d 在 %d 中分析。", LocalDateTime.now(),  eventInfo.Value, eventInfo.MaxValue));
                break;
            default:
                break;
        }
    }