Конвертировать PowerPoint в PDF в Node.js через .NET

Обзор

Aspose.Slides for Node.js via .NET преобразует презентации PowerPoint и OpenDocument в PDF без Microsoft PowerPoint. Каждый видимый слайд становится одной страницей PDF того же размера, что и слайд, и текст остаётся выделяемым и поисковым. В этой статье показаны конвертация по умолчанию и конвертация в PDF/A с PdfOptions.

В примерах ожидается презентация с именем sample.pptx в папке проекта, которую вы создали согласно Installation. Подойдёт любая презентация PowerPoint. Сохраните каждый пример как файл .js в папке проекта и запустите его из этой папки командой node.

Конвертировать презентацию в PDF

Чтобы конвертировать презентацию в PDF, выполните следующие действия:

  1. Откройте презентацию, передав её путь конструктору Presentation. Тот же код работает с файлами PPTX, PPT и ODP.
  2. Вызовите метод save с путём вывода и SaveFormat.Pdf.
  3. Вызовите dispose в блоке finally, чтобы освободить ресурсы .NET, поддерживающие презентацию.
const { Presentation, SaveFormat } = require("aspose.slides.via.net");

const presentation = new Presentation("sample.pptx");
try {
    presentation.save("sample.pdf", SaveFormat.Pdf);
    console.log("Saved sample.pdf");
} finally {
    presentation.dispose();
}

Скрипт записывает sample.pdf в папку проекта. Конвертация использует настройки по умолчанию: каждый слайд, который не скрыт, становится страницей в порядке следования слайдов. Без лицензии на каждой странице также отображается водяной знак оценки; см. раздел Licensing.

Конвертировать презентацию в PDF/A

Чтобы управлять выводом, передайте объект PdfOptions в качестве третьего аргумента метода save. В следующем примере свойству compliance присваивается значение PdfCompliance.PdfA2b, что приводит к созданию файла PDF/A-2b. PDF/A — это стандарт ISO для долговременного архивирования: среди прочих требований он требует встраивание в файл всех шрифтов, используемых документом.

const { Presentation, SaveFormat, PdfOptions, PdfCompliance } = require("aspose.slides.via.net");

const pdfOptions = new PdfOptions();
pdfOptions.compliance = PdfCompliance.PdfA2b;

const presentation = new Presentation("sample.pptx");
try {
    presentation.save("sample-pdfa.pdf", SaveFormat.Pdf, pdfOptions);
    console.log("Saved sample-pdfa.pdf");
} finally {
    presentation.dispose();
}

Скрипт записывает sample-pdfa.pdf с теми же страницами, что и при конвертации по умолчанию. Чтобы убедиться, что файл соответствует стандарту, проверьте его с помощью валидатора PDF/A, например veraPDF. Другие значения PdfCompliance выбирают другие стандарты, такие как PdfA1b, PdfA2a или PdfUa для доступности.

Часто задаваемые вопросы

Как включить скрытые слайды в PDF?

Скрытые слайды по умолчанию пропускаются. Установите свойство showHiddenSlides объекта PdfOptions в значение true и передайте параметры в метод save.

Могу ли я защитить PDF паролем?

Да. Установите свойство password объекта PdfOptions перед вызовом save. Затем PDF‑просмотрщики запросят этот пароль перед открытием файла.

Могу ли я конвертировать только некоторые слайды?

Да. Передайте массив позиций слайдов в качестве четвёртого аргумента метода save. Позиции начинаются с 1, а третий аргумент может быть null, если параметры не нужны: presentation.save("selected.pdf", SaveFormat.Pdf, null, [1, 3]) записывает PDF с первым и третьим слайдами.

Почему текст выглядит иначе при конвертации в Linux?

Aspose.Slides может использовать только шрифты, установленные на машине, где выполняется конвертация. Если в презентации используется шрифт, которого нет, например Calibri на типичном Linux‑сервере, Aspose.Slides заменит его установленным шрифтом, что может изменить внешний вид текста и переносы строк. Установите необходимые шрифты, используемые вашими презентациями, чтобы получить такой же результат, как на Windows.

Можно ли получить PDF в виде Buffer вместо файла?

Да. presentation.saveToBuffer(SaveFormat.Pdf) возвращает PDF в виде объекта Node.js Buffer, что удобно при отправке результата в HTTP‑ответе. Этот метод также принимает PdfOptions в качестве второго аргумента.