Конвертировать PPT и PPTX в PDF на Java [Включены расширенные функции]

Обзор

Конвертация презентаций PowerPoint (PPT, PPTX, ODP и т.д.) в формат PDF на Java предоставляет несколько преимуществ, включая совместимость с различными устройствами и сохранение макета и форматирования вашей презентации. В этом руководстве показано, как преобразовать презентации в документы PDF, использовать различные параметры для контроля качества изображений, включать скрытые слайды, защищать PDF паролем, обнаруживать замену шрифтов, выбирать отдельные слайды для конвертации и применять стандарты соответствия к результирующим документам.

Конвертация PowerPoint в PDF

С помощью Aspose.Slides вы можете конвертировать презентации в следующих форматах в PDF:

  • PPT
  • PPTX
  • ODP

Чтобы конвертировать презентацию в PDF, передайте имя файла в качестве аргумента классу Presentation и затем сохраните презентацию как PDF, используя метод save. Класс Presentation предоставляет метод save, который обычно используется для конвертации презентации в PDF.

Aspose.Slides позволяет конвертировать:

  • Полные презентации в PDF
  • Определённые слайды из презентации в PDF

Aspose.Slides экспортирует презентации в PDF, обеспечивая тесное соответствие полученных PDF оригинальным презентациям. Элементы и атрибуты рендерятся точно при конвертации, включая:

  • Изображения
  • Текстовые поля и формы
  • Форматирование текста
  • Форматирование абзацев
  • Гиперссылки
  • Колонтитулы
  • Маркеры
  • Таблицы

Конвертация PowerPoint в PDF

Стандартный процесс конвертации PowerPoint в PDF использует параметры по умолчанию. В этом случае Aspose.Slides пытается преобразовать указанную презентацию в PDF, используя оптимальные настройки при максимальном качестве.

Следующий пример загружает презентацию и сохраняет все видимые слайды в PDF, используя параметры экспорта по умолчанию.

import com.aspose.slides.*;

Presentation presentation = new Presentation("PowerPoint.ppt");
try {
    presentation.save("PPT-to-PDF.pdf", SaveFormat.Pdf);
} finally {
    presentation.dispose();
}

Конвертация PowerPoint в PDF с параметрами

Aspose.Slides предоставляет пользовательские параметры — свойства класса PdfOptions, — которые позволяют настроить результирующий PDF, защитить PDF паролем или указать, как должен происходить процесс конвертации.

Конвертация PowerPoint в PDF с пользовательскими параметрами

Используя пользовательские параметры конвертации, вы можете задать предпочтительные настройки качества растровых изображений, указать, как обрабатывать метафайлы, установить уровень сжатия текста, настроить DPI для изображений и многое другое.

Следующий пример экспортирует презентацию в PDF 1.5 с качеством JPEG, установленным на 90, разрешением изображения 300 DPI, метафайлы сохраняются как PNG и используется сжатие текста Flate.

import com.aspose.slides.*;

PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setJpegQuality((byte)90);
pdfOptions.setSufficientResolution(300);
pdfOptions.setSaveMetafilesAsPng(true);
pdfOptions.setTextCompression(PdfTextCompression.Flate);
pdfOptions.setCompliance(PdfCompliance.Pdf15);

Presentation presentation = new Presentation("PowerPoint.pptx");

try {
    presentation.save("PowerPoint-to-PDF.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Сохранить встроенные файлы OLE в виде вложений PDF

Если в презентации содержится встроенная рабочая книга Excel, вы можете захотеть, чтобы получатели PDF имели доступ к данным рабочей книги, а также к слайдам. Вызовите setIncludeOleData с параметром true, чтобы сохранить встроенные файлы OLE в виде вложений в результирующий PDF.

Значение по умолчанию — false: превью‑изображение или значок объекта OLE отображается на странице PDF, но встроенный файл не включается как вложение. Установка параметра в true дополнительно включает данные файла. Превью остаётся визуальным представлением; вложение позволяет получателям открыть или сохранить встроенный файл отдельно. Объект OLE не становится интерактивной таблицей Excel на странице PDF.

Следующий пример загружает презентацию, уже содержащую встроенную рабочую книгу Excel, и экспортирует её в PDF с прикреплённой рабочей книгой.

import com.aspose.slides.*;

PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setIncludeOleData(true);

Presentation presentation = new Presentation("presentation.pptx");
try {
    presentation.save("presentation.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Чтобы проверить результат:

  1. Откройте экспортированный PDF в просмотрщике, поддерживающем вложения файлов, например в Adobe Acrobat Reader.
  2. Откройте панель Вложения просмотрщика и найдите встроенную рабочую книгу.
  3. Сохраните вложение и откройте его в Excel для проверки данных, или откройте его напрямую, если просмотрщик это позволяет. Превью на странице PDF отделено от вложения.

Конвертация PowerPoint в PDF с скрытыми слайдами

Если в презентации есть скрытые слайды, вы можете использовать метод setShowHiddenSlides класса PdfOptions, чтобы включить скрытые слайды в виде страниц в результирующий PDF.

Следующий пример экспортирует презентацию в PDF, включая любые скрытые слайды.

import com.aspose.slides.*;

Presentation presentation = new Presentation("PowerPoint.pptx");
try {
    PdfOptions pdfOptions = new PdfOptions();
    pdfOptions.setShowHiddenSlides(true);

    presentation.save("PowerPoint-to-PDF.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Конвертация PowerPoint в защищённый паролем PDF

Следующий пример экспортирует презентацию в PDF, требующий пароль password для открытия. Права доступа позволяют печать, включая печать высокого качества.

import com.aspose.slides.*;

Presentation presentation = new Presentation("PowerPoint.pptx");
try {
    PdfOptions pdfOptions = new PdfOptions();
    pdfOptions.setPassword("password");
    pdfOptions.setAccessPermissions(PdfAccessPermissions.PrintDocument | PdfAccessPermissions.HighQualityPrint);

    presentation.save("PPTX-to-PDF.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Обнаружение замен шрифтов

Aspose.Slides предоставляет метод setWarningCallback в классе PdfOptions, позволяющий обнаруживать замену шрифтов во время процесса конвертации презентации в PDF.

Следующий пример экспортирует презентацию в PDF и выводит предупреждения о замене шрифтов в консоль. Предупреждение выводится только тогда, когда недоступный шрифт заменяется во время экспорта.

import com.aspose.slides.*;

class FontSubstitutionHandler implements IWarningCallback {
    public int warning(IWarningInfo warning) {
        if (warning.getWarningType() == WarningType.DataLoss && warning.getDescription().startsWith("Font will be substituted")) {
            System.out.println("Font substitution warning: " + warning.getDescription());
        }
        return ReturnAction.Continue;
    }
}

PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setWarningCallback(new FontSubstitutionHandler());

Presentation presentation = new Presentation("sample.pptx");
try {
    presentation.save("output.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Обработка шрифтов без отдельного жирного начертания

Презентация может применять полужирное форматирование к тексту, даже если у её шрифта нет отдельного жирного начертания. Текст может выглядеть жирным благодаря синтетическому удлинению, которое искусственно утолщает обычные глифы. Когда такой текст выглядит слишком тяжёлым или иначе отличается от предполагаемого вида в PDF, попробуйте вызвать PdfOptions.setRasterizeUnsupportedFontStyles с параметром true. Этот параметр рендерит затронутый текст как растровое изображение во время экспорта PDF и может улучшить его отображение для некоторых шрифтов. Значение по умолчанию — false.

Примерная презентация содержит два текстовых блока: один с обычным текстом и один с полужирным форматированием того же шрифта, у которого нет отдельного жирного начертания. Следующий пример загружает презентацию, включает растрирование неподдерживаемых стилей шрифтов и экспортирует её в PDF:

import com.aspose.slides.PdfOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setRasterizeUnsupportedFontStyles(true);

Presentation presentation = new Presentation("unsupported-bold.pptx");
try {
    presentation.save("rasterized.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Следующие превью показывают вывод с отключённым и включённым параметром. В этом примере полужирный текст имеет более тяжёлые штрихи при отключённом параметре. При включённом параметре его штрихи легче; обычный текст остаётся без изменений. Сравните результаты перед выбором настройки для вашей презентации.

Опция отключена (false, по умолчанию) Опция включена (true)
PDF with unsupported font style rasterization disabled PDF with unsupported font style rasterization enabled

В этом примере включение параметра преобразует только полужирный текст в растровое изображение: его нельзя выделять, копировать или искать как текст без OCR, а его края выглядят мягче при 800 % зуме. Обычный текст остаётся доступным для поиска. При отключённом параметре обе строки остаются текстом.

Этот параметр растрирует текст, отформатированный как полужирный, когда у его шрифта нет отдельного жирного начертания. Вместо этого Замена шрифтов выбирает другой шрифт, когда оригинальный недоступен.

Конвертация выбранных слайдов PowerPoint в PDF

Следующий пример экспортирует слайды 1 и 3 из презентации в PDF. Номера слайдов в этом массиве начинаются с 1, и входная презентация должна содержать как минимум три слайда.

import com.aspose.slides.*;

Presentation presentation = new Presentation("PowerPoint.pptx");
try {
    int[] slides = { 1, 3 };
    presentation.save("PPTX-to-PDF.pdf", slides, SaveFormat.Pdf);
} finally {
    presentation.dispose();
}

Конвертация PowerPoint в PDF с пользовательским размером слайда

Следующий пример копирует первый слайд из презентации в новую презентацию с размером слайда 612 × 792 точек (8.5 × 11 дюймов). Он масштабирует содержимое слайда, чтобы оно подошло, и экспортирует один слайд в PDF.

import com.aspose.slides.*;

float slideWidth = 612;
float slideHeight = 792;

Presentation presentation = new Presentation("SelectedSlides.pptx");
Presentation resizedPresentation = new Presentation();

try {
    resizedPresentation.getSlideSize().setSize(slideWidth, slideHeight, SlideSizeScaleType.EnsureFit);
    
    ISlide slide = presentation.getSlides().get_Item(0);
    resizedPresentation.getSlides().insertClone(0, slide);

    // Удалить пустой слайд, с которым была создана новая презентация.
    resizedPresentation.getSlides().removeAt(1);

    resizedPresentation.save("PDF_with_custom_slide_size.pdf", SaveFormat.Pdf);
} finally {
    resizedPresentation.dispose();
    presentation.dispose();
}

Конвертация PowerPoint в PDF в режиме слайдов с примечаниями

Следующий пример экспортирует презентацию в PDF, размещая каждую записку выступающего под соответствующим слайдом. Используйте презентацию, содержащую записки выступающего, чтобы увидеть результат.

import com.aspose.slides.*;

Presentation presentation = new Presentation("SelectedSlides.pptx");
try {
    NotesCommentsLayoutingOptions notesOptions = new NotesCommentsLayoutingOptions();
    notesOptions.setNotesPosition(NotesPositions.BottomFull);
    
    PdfOptions pdfOptions = new PdfOptions();
    pdfOptions.setSlidesLayoutOptions(notesOptions);

    presentation.save("PDF_with_notes.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Стандарты доступности и соответствия для PDF

Aspose.Slides позволяет использовать процедуру конвертации, соответствующую Руководствам по доступности веб‑контента (WCAG). Вы можете экспортировать документ PowerPoint в PDF, используя любой из этих стандартов соответствия: PDF/A1a, PDF/A1b и PDF/UA.

Этот код демонстрирует процесс конвертации PowerPoint в PDF, создающий несколько PDF‑файлов на основе разных стандартов соответствия:

import com.aspose.slides.*;

Presentation presentation = new Presentation("pres.pptx");
try {
    PdfOptions pdfOptions = new PdfOptions();

    pdfOptions.setCompliance(PdfCompliance.PdfA1a);
    presentation.save("pres-a1a-compliance.pdf", SaveFormat.Pdf, pdfOptions);

    pdfOptions.setCompliance(PdfCompliance.PdfA1b);
    presentation.save("pres-a1b-compliance.pdf", SaveFormat.Pdf, pdfOptions);

    pdfOptions.setCompliance(PdfCompliance.PdfUa);
    presentation.save("pres-ua-compliance.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Примечание: При экспорте в PDF/UA Aspose.Slides рассматривает сложную графику, такую как SmartArt, диаграммы и формулы, как единую фигуру. Отдельные элементы пути не сохраняются как отдельный контент и могут быть помечены как артефакты; альтернативный текст предоставляется только для всей фигуры.

Вопросы и ответы

Могу ли я конвертировать несколько файлов PowerPoint в PDF массово?
Да, Aspose.Slides поддерживает пакетную конвертацию нескольких файлов PPT или PPTX в PDF. Вы можете программно проходить по файлам и применять процесс конвертации.

Можно ли защитить паролем сконвертированный PDF?
Да. Используйте класс PdfOptions для установки пароля и определения прав доступа во время процесса конвертации.

Как включить скрытые слайды в PDF?
Вызовите setShowHiddenSlides с параметром true в классе PdfOptions, чтобы включить скрытые слайды в результирующий PDF.

Может ли Aspose.Slides сохранять высокое качество изображений в PDF?
Да, вы можете контролировать качество изображений, используя методы такие как setJpegQuality и setSufficientResolution в классе PdfOptions, чтобы обеспечить высококачественные изображения в вашем PDF.

Поддерживает ли Aspose.Slides стандарты соответствия PDF/A?
Да, Aspose.Slides позволяет экспортировать PDF, соответствующие различным стандартам, включая PDF/A1a, PDF/A1b и PDF/UA, обеспечивая соответствие ваших документов требованиям доступности и архивирования.

Дополнительные ресурсы