Установка
Обзор
Aspose.Slides for Node.js via .NET — это npm‑пакет aspose.slides.via.net. Он запускает библиотеку Aspose.Slides .NET внутри Node.js через мост edge-js, поэтому для работы требуется как Node.js, так и .NET.
В этой статье вы пройдёте путь от чистой машины до первой программы, создающей презентацию. Есть четыре шага: создать проект с переопределением edge-js, установить пакет из npm, один раз восстановить .NET‑зависимости пакета и запустить скрипт из папки проекта.
Предварительные требования
- Node.js 22 или 24 LTS, 64‑разрядная сборка, с сайта nodejs.org.
- .NET SDK 8 или новее, с сайта dotnet.microsoft.com. Одна только среда выполнения .NET недостаточна: шаг восстановления ниже требует SDK, так же как и мост при запуске скрипта. Выполните
dotnet --list-sdks, чтобы проверить, какие SDK установлены. - Только для Linux:
- инструменты сборки
python3,makeиg++, потому что npm компилирует edge‑js во время установки в Linux; - библиотеку fontconfig, которую загружает нативная библиотека рисования Aspose.Slides.
В Debian это пакетыpython3,make,g++иlibfontconfig1.
- инструменты сборки
Шаги в этой статье были протестированы на следующих платформах:
| Платформа | Результат |
|---|---|
| Windows x64 с Node.js 22 или 24 | Работает. Тестировано с установленным Microsoft Visual C++ Redistributable. |
| Linux x64 с Node.js 22 или 24, где системный OpenSSL из той же ветки релизов, что и OpenSSL, встроенный в Node.js, например Debian 13 | Работает. |
| Linux, где версии OpenSSL различаются, например Debian 12 | Node.js падает с ошибкой сегментации при создании презентации. |
| macOS | Не проверено. |
В Linux сравните две версии перед началом. Первая команда выводит версию OpenSSL, встроенную в Node.js; вторая — системную версию. Используйте систему, где обе начинаются с одинаковых основных и второстепенных номеров, например 3.5:
node -p process.versions.openssl
openssl version
Если команда openssl не найдена, сначала установите пакет openssl.
Создание проекта
Создайте папку для проекта, инициализируйте её и добавьте переопределение, указывающее npm, какую версию edge-js установить:
mkdir hello-slides
cd hello-slides
npm init -y
npm pkg set overrides.edge-js=26.1.0
Пакет требует более старую версию edge-js, предкомпилированные Windows‑бинарные файлы которой заканчиваются на Node.js 20, поэтому без переопределения первый скрипт в Windows завершается сообщением «The edge module has not been pre-compiled for node.js version». Команда записывает переопределение в секцию overrides файла package.json; добавьте его перед установкой пакета.
Установка пакета
Установите Aspose.Slides for Node.js via .NET из npm:
npm install aspose.slides.via.net
Во время установки пакет копирует свои нативные библиотеки рисования (файлы, в названиях которых присутствует aspose.slides.drawing.capi) в папку проекта рядом с package.json.
Пакет также опубликован в виде ZIP‑архива на releases.aspose.com. В этой статье рассматривается только установка из npm.
Восстановление .NET‑зависимостей
Пакет содержит сборки Aspose.Slides .NET, но не 20 пакетов NuGet, от которых зависят эти сборки. Во время выполнения .NET ищет их в кэше пакетов NuGet: %USERPROFILE%\.nuget\packages в Windows, ~/.nuget/packages в Linux или в папке, указанной переменной окружения NUGET_PACKAGES. Если их нет, первый скрипт завершается сообщением «assembly specified in the dependencies manifest was not found».
Чтобы заполнить кэш, создайте папку deps в папке проекта и сохраните в ней следующий файл под именем deps.csproj. Каждый элемент PackageDownload загружает один пакет точной версии, указанной в скобках; ничего не компилируется.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageDownload Include="Humanizer.Core" Version="[2.14.1]" />
<PackageDownload Include="Microsoft.Bcl.AsyncInterfaces" Version="[6.0.0]" />
<PackageDownload Include="Microsoft.CodeAnalysis.Common" Version="[4.5.0]" />
<PackageDownload Include="Microsoft.CodeAnalysis.CSharp" Version="[4.5.0]" />
<PackageDownload Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="[4.5.0]" />
<PackageDownload Include="Microsoft.CodeAnalysis.VisualBasic" Version="[4.5.0]" />
<PackageDownload Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="[4.5.0]" />
<PackageDownload Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="[4.5.0]" />
<PackageDownload Include="Microsoft.DotNet.InternalAbstractions" Version="[1.0.0]" />
<PackageDownload Include="Microsoft.Extensions.DependencyModel" Version="[7.0.0]" />
<PackageDownload Include="Newtonsoft.Json" Version="[13.0.3]" />
<PackageDownload Include="System.Composition.AttributedModel" Version="[6.0.0]" />
<PackageDownload Include="System.Composition.Convention" Version="[6.0.0]" />
<PackageDownload Include="System.Composition.Hosting" Version="[6.0.0]" />
<PackageDownload Include="System.Composition.Runtime" Version="[6.0.0]" />
<PackageDownload Include="System.Composition.TypedParts" Version="[6.0.0]" />
<PackageDownload Include="System.IO.Pipelines" Version="[6.0.3]" />
<PackageDownload Include="System.Reflection.Metadata" Version="[6.0.1]" />
<PackageDownload Include="System.Text.Encodings.Web" Version="[7.0.0]" />
<PackageDownload Include="System.Text.Json" Version="[7.0.0]" />
</ItemGroup>
</Project>
Затем восстановите его из папки проекта:
dotnet restore deps/deps.csproj
Этот шаг требуется один раз на машину, а не на каждый проект: пакеты остаются в кэше NuGet, и последующие проекты на той же машине используют их. После восстановления можете удалить папку deps.
Запуск первой программы
Создайте файл hello.js в папке проекта со следующим кодом. Он создаёт презентацию, добавляет прямоугольник с текстом «Hello, World!» на первый слайд и сохраняет результат как hello.pptx:
const asposeSlides = require("aspose.slides.via.net");
const { Presentation, ShapeType, SaveFormat } = asposeSlides;
// Новая презентация содержит один пустой слайд.
const presentation = new Presentation();
try {
const slide = presentation.slides.get(0);
// Позиция и размер задаются в пунктах (1/72 дюйма): x, y, ширина, высота.
const rectangle = slide.shapes.addAutoShape(ShapeType.Rectangle, 50, 50, 400, 100);
rectangle.addTextFrame("Hello, World!");
presentation.save("hello.pptx", SaveFormat.Pptx);
console.log("Saved hello.pptx");
} finally {
// Освободить .NET‑объект, поддерживающий презентацию.
presentation.dispose();
}
Запустите его из папки проекта:
node hello.js
Скрипт выводит Saved hello.pptx. Откройте hello.pptx, чтобы увидеть один слайд с заполненным прямоугольником, содержащим текст. Без лицензии Aspose.Slides добавляет водяной знак оценки; см. Evaluate Aspose.Slides и Licensing.
Note
Запускайте свои скрипты из папки проекта, той, что содержитpackage.json. Относительные пути, такие как hello.pptx, разрешаются относительно текущей папки, и на некоторых машинах скрипт, запущенный из другой папки, не может создать презентацию.
JavaScript API отражает Aspose.Slides for .NET: классы сохраняют свои .NET‑имена, свойства и методы используют camelCase (Slides становится slides, AddAutoShape становится addAutoShape), а элементы коллекций читаются via get(index). Отдельной справки API для этого пакета нет, поэтому используйте Aspose.Slides for .NET API reference для деталей классов и членов, например Presentation и ShapeCollection.AddAutoShape.
Часто задаваемые вопросы
Что означает сообщение «The edge module has not been pre-compiled for node.js version»?
npm установил более старую версию edge-js, которую запрашивает пакет. Добавьте переопределение из Create a Project и снова выполните npm install.
Что означает сообщение «assembly specified in the dependencies manifest was not found»?
Зависимости .NET отсутствуют в кэше NuGet. При том же запуске также выводится сообщение «edge.initializeClrFunc is not a function». Выполните Restore the .NET Dependencies один раз, затем снова запустите скрипт.
Что означает сообщение «The edge native module is not available» в Linux?
edge-js не был скомпилирован во время npm install, например из‑за отсутствия python3, make или g++. npm не сообщает об этом как об ошибке. Установите инструменты сборки, затем запустите npm rebuild edge-js в папке проекта.
Почему создание презентации завершается с пустой ошибкой “Error”?
В Linux проверьте, установлена ли библиотека fontconfig (libfontconfig1 в Debian); без неё нативная библиотека рисования не может загрузиться. На любой системе также убедитесь, что скрипт запускается из папки проекта.
Почему Node.js падает с ошибкой сегментации в Linux?
Системный OpenSSL и OpenSSL, встроенный в Node.js, принадлежат к разным веткам релизов. Сравните их, как показано в Prerequisites, и используйте дистрибутив или сборку Node.js, где они совпадают.
Нужно ли выполнять восстановление NuGet для каждого проекта?
Нет. Восстановление заполняет кэш NuGet для вашей учётной записи, и каждый проект на этой машине использует один и тот же кэш.