Создание захватывающих документов, позволяющих пользователям вращать, масштабировать и исследовать трехмерные модели непосредственно внутри PDF, является мощным способом улучшить каталоги продукции, инженерные отчёты и учебные руководства. Aspose.Words Cloud SDK for .NET предоставляет облачную библиотеку, которая упрощает внедрение и сохранение 3D контента при конвертации файлов DOCX в PDF. В этом руководстве вы узнаете, как генерировать интерактивные 3D PDF в C#, увидите полный пример кода, изучите эквивалентные вызовы cURL REST и поймёте особенности развертывания для реальных приложений.

Требования сценария генерации 3D PDF

Разработчикам, создающим инженерные порталы или интерактивные брошюры продуктов, часто требуется предоставлять PDF‑файлы, содержащие встроенные 3D‑модели. Типичные требования включают:

  • Исходный документ должен быть DOCX, который уже содержит 3D‑модель в формате U3D или PRC .
  • Полученный PDF должен сохранять 3D‑данные, чтобы такие просмотрщики, как Adobe Acrobat, могли отображать их интерактивно.
  • Процесс конвертации должен быть автоматизирован, запускаться на сервере и работать с большими партиями без ручного вмешательства.

Традиционные настольные инструменты нельзя надёжно скриптовать в облачной среде, и они часто удаляют 3D‑потоки при конвертации. Поэтому необходима программная реализация, сохраняющая 3D‑модель и обеспечивающая соответствие PDF/A.

Подход: использование Aspose.Words Cloud для 3D PDF

Aspose.Words Cloud SDK for .NET предлагает набор операций на основе REST, которые работают на защищённых серверах Aspose. Ключевые возможности, которые решают данную задачу, включают:

  • Прямая загрузка файлов DOCX в хранилище Aspose Cloud.
  • PdfSaveOptionsData, позволяющий контролировать соответствие PDF, обновление полей и, что особенно важно, сохранение встроенного 3D‑контента.
  • Асинхронные методы конвертации, возвращающие поток, позволяющие записать выходной файл напрямую на диск.

В совокупности эти функции обеспечивают чистый процесс преобразования 3D в PDF, который можно интегрировать в CI‑конвейеры, веб‑службы или фоновые задачи. Подробная информация об API доступна в официальной документации и справочнике API.

Создание интерактивного 3D PDF в C#: Реализация

Ниже представлено пошаговое руководство по реализации. Каждый шаг включает короткий фрагмент кода, взятый непосредственно из полного примера.

Установите Aspose.Words Cloud SDK for .NET

Сначала добавьте пакет NuGet в ваш проект.

dotnet add package Aspose.Words-Cloud

Вы также можете скачать бинарные файлы со страницы загрузки.

Настройка клиента WordsApi

Создайте объект Configuration с вашими учётными данными клиента и создайте экземпляр WordsApi.

var config = new Configuration
{
    ClientId = "YOUR_CLIENT_ID",
    ClientSecret = "YOUR_CLIENT_SECRET"
};
var wordsApi = new WordsApi(config);

Класс WordsApi задокументирован в справочнике API.

Загрузить DOCX, содержащий встроенную 3D‑модель

Откройте локальный файл DOCX и загрузите его в хранилище Aspose Cloud, перезаписав любой существующий файл с тем же именем.

using (var fileStream = File.OpenRead(localDocxPath))
{
    var uploadRequest = new UploadFileRequest(fileStream, remoteFileName);
    await wordsApi.UploadFileAsync(uploadRequest);
}

Убедитесь, что DOCX уже содержит модель U3D или PRC; это 3D Model Format, который сохраняет SDK.

Установить параметры сохранения PDF для сохранения 3D‑контента

Настройте PdfSaveOptionsData, чтобы сохранить 3D‑потоки и использовать соответствие PDF/A‑1b.

var pdfOptions = new PdfSaveOptionsData
{
    UpdateFields = false,
    Compliance = PdfCompliance.PdfA1b,
    SaveFormat = "pdf"
};

Эти параметры являются частью 3D to PDF Workflow, который обеспечивает сохранность интерактивной модели.

Конвертировать и загрузить интерактивный 3D PDF

Вызовите запрос на конвертацию и запишите полученный поток в локальный PDF‑файл.

var convertRequest = new ConvertDocumentRequest(
    remoteFileName,
    format: "pdf",
    saveOptions: pdfOptions
);

using (var pdfStream = await wordsApi.ConvertDocumentAsync(convertRequest))
using (var fileWriter = File.Create(outputPdfPath))
{
    await pdfStream.CopyToAsync(fileWriter);
}

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

Полный пример кода: Интерактивное создание 3D PDF на C#

Следующий код демонстрирует весь процесс от начала до конца.

using System;
using System.IO;
using System.Threading.Tasks;
using Aspose.Words.Cloud.Sdk;
using Aspose.Words.Cloud.Sdk.Model;
using Aspose.Words.Cloud.Sdk.Model.Requests;

namespace Generate3DPdfExample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // -----------------------------------------------------------------
            // 1. Configure Aspose.Words Cloud client (replace with your credentials)
            // -----------------------------------------------------------------
            var config = new Configuration
            {
                ClientId = "YOUR_CLIENT_ID",
                ClientSecret = "YOUR_CLIENT_SECRET"
            };
            var wordsApi = new WordsApi(config);

// -----------------------------------------------------------------
            // 2. Define file names and paths (generic placeholders)
            // -----------------------------------------------------------------
            const string localDocxPath = "input.docx";   // DOCX that already contains an embedded 3D model (U3D/PRC)
            const string remoteFileName = "input.docx"; // Name used in Aspose Cloud storage
            const string outputPdfPath = "output.pdf";

// -----------------------------------------------------------------
            // 3. Upload the DOCX to Aspose Cloud storage (overwrites if exists)
            // -----------------------------------------------------------------
            using (var fileStream = File.OpenRead(localDocxPath))
            {
                var uploadRequest = new UploadFileRequest(fileStream, remoteFileName);
                await wordsApi.UploadFileAsync(uploadRequest);
            }

// -----------------------------------------------------------------
            // 4. Prepare PDF save options – enable 3D content preservation
            // -----------------------------------------------------------------
            var pdfOptions = new PdfSaveOptionsData
            {
                // Preserve the embedded 3D model; the option name may vary depending on API version.
                // Setting 'UpdateFields' to false speeds up conversion when fields are not required.
                UpdateFields = false,
                // Use PDF/A-1b compliance to keep the document portable while still supporting 3D.
                Compliance = PdfCompliance.PdfA1b,
                // Ensure the output is a single PDF file.
                SaveFormat = "pdf"
            };

// -----------------------------------------------------------------
            // 5. Convert the uploaded DOCX to PDF with the defined options
            // -----------------------------------------------------------------
            var convertRequest = new ConvertDocumentRequest(
                remoteFileName,
                format: "pdf",
                saveOptions: pdfOptions
            );

using (var pdfStream = await wordsApi.ConvertDocumentAsync(convertRequest))
            using (var fileWriter = File.Create(outputPdfPath))
            {
                await pdfStream.CopyToAsync(fileWriter);
            }

// -----------------------------------------------------------------
            // 6. Clean up remote file (optional)
            // -----------------------------------------------------------------
            var deleteRequest = new DeleteFileRequest(remoteFileName);
            await wordsApi.DeleteFileAsync(deleteRequest);

Console.WriteLine($"3D PDF generated successfully at '{Path.GetFullPath(outputPdfPath)}'.");
        }
    }
}

Примечание: Этот пример кода демонстрирует базовую функциональность. Прежде чем использовать его в вашем проекте, убедитесь, что обновили пути к файлам (input.docx, output.pdf и т.д.), чтобы они соответствовали фактическим расположениям, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если вы столкнётесь с какими‑либо проблемами, обратитесь к официальной документации или свяжитесь с службой поддержки для получения помощи.

Выполнить 3D PDF конвертацию с помощью cURL и REST API

Тот же запрос можно выполнить с помощью вызовов cURL к REST‑конечным точкам Aspose.Words Cloud.

  1. Получите токен доступа (замените заполнители вашими учетными данными).
curl -X POST "https://api.aspose.cloud/connect/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
  1. Загрузите DOCX содержащий 3D‑модель.
curl -X PUT "https://api.aspose.cloud/v4.0/words/storage/file/input.docx" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @input.docx
  1. Запрос конвертации PDF с сохранением 3D.
curl -X POST "https://api.aspose.cloud/v4.0/words/input.docx/saveAs/pdf" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "PdfSaveOptions": {
            "UpdateFields": false,
            "Compliance": "PdfA1b"
        }
      }' \
  -o output.pdf
  1. Скачайте полученный PDF (предыдущая команда уже сохранила его локально, но вы также можете получить его напрямую).

Для получения более подробной информации о телах запросов и дополнительных параметрах см. официальную документацию API.

Соображения по развертыванию для генерации 3D PDF

При интеграции этого решения в производственную среду учитывайте следующие моменты:

  • Расположение сервера - Преобразование выполняется на облачных серверах Aspose, поэтому убедитесь, что ваша сеть позволяет исходящий HTTPS‑трафик к api.aspose.cloud.
  • Лицензирование - Для использования в продакшене требуется коммерческая лицензия. Вы можете начать с временной лицензии на странице временной лицензии.
  • Масштабируемость - Поскольку API без состояния, вы можете параллелить загрузки и преобразования на нескольких рабочих экземплярах, чтобы обрабатывать крупные партии, поддерживая полную 3D to PDF Automation.

Заключение

Создание интерактивных 3D PDF в C# становится простым с помощью Aspose.Words Cloud SDK for .NET. Следуя вышеописанным шагам, вы можете внедрять модели U3D или PRC, сохранять их при конвертации в PDF и автоматизировать процесс как с помощью библиотеки .NET, так и прямыми REST‑вызовами. Не забудьте получить соответствующую лицензию для продакшн‑использования и протестировать сгенерированные PDF в просмотрщике, поддерживающем 3D, например Adobe Acrobat. Благодаря этой возможности вы сможете предоставлять более насыщенные и привлекательные документы для инженерных, маркетинговых и обучающих сценариев.

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

Как я могу создать интерактивный 3D PDF в C# с использованием Aspose.Words Cloud?
Используйте SDK для загрузки DOCX, который уже содержит модель U3D или PRC, настройте PdfSaveOptionsData, чтобы сохранить 3D‑потоки, и вызовите ConvertDocumentAsync. Полный пример кода в этой статье показывает точную последовательность.

Какие форматы 3D‑моделей я могу встроить для конвертации PDF?
Aspose.Words Cloud поддерживает форматы U3D и PRC, которые являются стандартными форматами интерактивного 3D‑контента в PDF‑файлах.

Можно ли выполнить конвертацию без написания кода C#?
Да, тот же процесс можно выполнить с помощью команд cURL к Aspose.Words Cloud REST API, как показано в разделе cURL.

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

Читать далее