Автоматизация преобразования структурированных данных в оформленные документы является частой потребностью для серверных служб. Aspose.Cells Cloud SDK for Node.js позволяет разработчикам работать с Excel‑книгами и конвертировать их в различные форматы с помощью мощного REST API. В этом руководстве вы узнаете, как импортировать данные XML в PDF с использованием SDK, охватывая всё от аутентификации до загрузки файлов, сопоставления XML и генерации PDF.

Предварительные требования и настройка

Прежде чем начать, убедитесь, что у вас есть следующее:

  • Node.js 14 или выше, установленный на вашем компьютере.
  • Учётная запись Aspose Cloud с client ID и client secret.
  • Доступ к терминалу или IDE, где вы можете запускать скрипты Node.js.

Установите Aspose.Cells Cloud SDK для Node.js:

npm install asposecellscloud

Далее настройте свои учетные данные для аутентификации. Ниже приведённый фрагмент взят непосредственно из референсной реализации:

const clientId = 'YOUR_CLIENT_ID';
const clientSecret = 'YOUR_CLIENT_SECRET';
const config = new Configuration(clientId, clientSecret);
const apiClient = new ApiClient(config);
const cellsApi = new CellsApi(apiClient);

Вам также потребуется скачать пакет SDK с официальной страницы релизов: Aspose.Cells Cloud SDK for Node.js Download. С выполненными предварительными условиями мы можем перейти к реальной реализации.

Импорт данных XML в PDF в Node.js: пошаговое руководство

Шаг 1: Загрузка необходимых модулей и создание клиента API

Сначала импортируйте необходимые модули и создайте экземпляр клиента API.

const fs = require('fs');
const path = require('path');
const { CellsApi, Configuration, ApiClient } = require('asposecellscloud');

const clientId = 'YOUR_CLIENT_ID';
const clientSecret = 'YOUR_CLIENT_SECRET';
const config = new Configuration(clientId, clientSecret);
const apiClient = new ApiClient(config);
const cellsApi = new CellsApi(apiClient);

Шаг 2: Определить вспомогательную функцию для загрузки файлов

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

async function uploadFile(localFilePath, remoteFileName) {
    const fileContent = fs.readFileSync(localFilePath);
    await cellsApi.uploadFile(`${remoteFolder}/${remoteFileName}`, fileContent);
}

Шаг 3: Загрузка рабочей книги и XML‑файлов

Загрузите шаблон Excel и файл данных XML в папку Temp в облачном хранилище.

await uploadFile(path.join(localFolder, workbookName), workbookName);
await uploadFile(path.join(localFolder, xmlDataName), xmlDataName);

Шаг 4: Импорт XML-данных в лист

Отобразите XML‑файл на целевом листе. Это ядро процесса импорт XML-данных в PDF.

const importXmlRequest = {
    xmlFile: `${remoteFolder}/${xmlDataName}`,
    xmlMapIndex: 0,
    importDataOnly: true,
    importDataOnlySpecified: true
};
await cellsApi.importXML(workbookName, 'Sheet1', importXmlRequest, remoteFolder);

Шаг 5: Преобразовать обновленную книгу в PDF и загрузить

Наконец, сохраните книгу в формате PDF и получите файл.

const remotePdfPath = `${remoteFolder}/${outputPdfName}`;
await cellsApi.saveWorkbook(workbookName, 'pdf', remotePdfPath, remoteFolder);
const downloadResponse = await cellsApi.downloadFile(remotePdfPath);
fs.writeFileSync(path.join(localFolder, outputPdfName), downloadResponse.body);

После выполнения этих шагов XML‑данные успешно импортированы, и полученный PDF готов к использованию.

Полный пример кода: импорт XML-данных в PDF с подробными комментариями

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

const fs = require('fs');
const path = require('path');
const { CellsApi, Configuration, ApiClient } = require('asposecellscloud');

// ---- Configuration ---------------------------------------------------------
const clientId = 'YOUR_CLIENT_ID';
const clientSecret = 'YOUR_CLIENT_SECRET';
const config = new Configuration(clientId, clientSecret);
const apiClient = new ApiClient(config);
const cellsApi = new CellsApi(apiClient);

// ---- File definitions -------------------------------------------------------
const localFolder = __dirname;
const remoteFolder = 'Temp';                     // folder in Aspose Cloud storage
const workbookName = 'template.xlsx';            // existing workbook template
const xmlDataName = 'data.xml';                  // XML file containing data
const outputPdfName = 'result.pdf';              // final PDF name

// ---- Helper functions -------------------------------------------------------
async function uploadFile(localFilePath, remoteFileName) {
    const fileContent = fs.readFileSync(localFilePath);
    await cellsApi.uploadFile(`${remoteFolder}/${remoteFileName}`, fileContent);
}

async function importXml() {
    const importXmlRequest = {
        xmlFile: `${remoteFolder}/${xmlDataName}`,
        xmlMapIndex: 0,
        importDataOnly: true,
        importDataOnlySpecified: true
    };
    await cellsApi.importXML(workbookName, 'Sheet1', importXmlRequest, remoteFolder);
}

async function convertToPdf() {
    const remotePdfPath = `${remoteFolder}/${outputPdfName}`;
    await cellsApi.saveWorkbook(workbookName, 'pdf', remotePdfPath, remoteFolder);
    const downloadResponse = await cellsApi.downloadFile(remotePdfPath);
    fs.writeFileSync(path.join(localFolder, outputPdfName), downloadResponse.body);
}

// ---- Main execution ---------------------------------------------------------
(async () => {
    try {
        // Upload required files to Aspose Cloud storage
        await uploadFile(path.join(localFolder, workbookName), workbookName);
        await uploadFile(path.join(localFolder, xmlDataName), xmlDataName);

// Import XML data into the workbook
        await importXml();

// Convert the updated workbook to PDF and download locally
        await convertToPdf();

console.log('XML data imported and PDF generated successfully.');
    } catch (err) {
        console.error('Error:', err.response ? err.response.text : err.message);
    }
})();

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

Преобразование XML в PDF с использованием cURL и REST API

Ниже приведён рабочий процесс на основе cURL, который выполняет те же операции без написания кода на Node.js.

  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. Загрузите шаблон Excel
curl -X PUT "https://api.aspose.cloud/v3.0/cells/storage/file/Temp/template.xlsx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/octet-stream" \
     --data-binary "@template.xlsx"
  1. Загрузите XML‑файл данных
curl -X PUT "https://api.aspose.cloud/v3.0/cells/storage/file/Temp/data.xml" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/octet-stream" \
     --data-binary "@data.xml"
  1. Импорт XML в рабочий лист
curl -X POST "https://api.aspose.cloud/v3.0/cells/template.xlsx/worksheets/Sheet1/importxml" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "xmlFile": "Temp/data.xml",
           "xmlMapIndex": 0,
           "importDataOnly": true,
           "importDataOnlySpecified": true
         }'
  1. Преобразовать рабочую книгу в PDF
curl -X POST "https://api.aspose.cloud/v3.0/cells/template.xlsx/save?format=pdf&outPath=Temp/result.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
  1. Скачать сгенерированный PDF
curl -X GET "https://api.aspose.cloud/v3.0/cells/storage/file/Temp/result.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o result.pdf

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

Точная настройка параметров XML в PDF

Операция импорта предлагает несколько флагов, позволяющих контролировать, как объединяются данные XML:

  • importDataOnly - Когда установлено true, импортируются только строки данных, оставляя существующее форматирование нетронутым.
  • importDataOnlySpecified - Должно быть установлено true вместе с importDataOnly, чтобы активировать эту опцию.
  • xmlMapIndex - Выбирает, какая XML‑карта (если определено несколько) будет использоваться для импорта.

Эти параметры уже продемонстрированы в объекте importXmlRequest, использованном ранее:

const importXmlRequest = {
    xmlFile: `${remoteFolder}/${xmlDataName}`,
    xmlMapIndex: 0,
    importDataOnly: true,
    importDataOnlySpecified: true
};

Вы также можете настроить специфические для PDF параметры, такие как размер страницы, ориентация и качество изображения, передавая объект PdfSaveOptions в метод saveWorkbook. Обратитесь к Справка API для полного списка доступных опций.

Заключение

Следуя этому руководству, вы теперь имеете полное решение для импорта XML‑данных в PDF с использованием Aspose.Cells Cloud SDK для Node.js. Подход сочетает простые вызовы SDK с необязательными командами cURL, предоставляя гибкость, независимо от того, предпочитаете ли вы полностековую реализацию на Node.js или лёгкую интеграцию через REST. Не забудьте защитить свои учетные данные клиента и рассмотреть возможность применения временной или платной лицензии для производственных нагрузок. Вы можете получить временную лицензию на странице временной лицензии и изучить варианты ценообразования на странице продукта. Приятного кодинга!

FAQs

  • Как импортировать данные XML в PDF с помощью Aspose.Cells Cloud SDK for Node.js?
    SDK загружает ваш шаблон Excel и файл XML в хранилище Aspose Cloud, сопоставляет данные XML с листом рабочей книги и затем сохраняет книгу в формате PDF. См. Aspose.Cells Cloud SDK for Node.js для подробных ссылок на API.

  • Могу ли я настроить вывод PDF при импорте XML‑данных в PDF?
    Да, метод saveWorkbook принимает параметры, специфичные для формата, такие как ориентация страницы, качество изображения и уровень сжатия. Отрегулируйте эти настройки в полезной нагрузке запроса, как описано в API‑справке.

  • Какой метод аутентификации требуется для REST‑вызовов?
    Все запросы должны включать токен доступа OAuth 2.0, полученный из конечной точки аутентификации Aspose Cloud. Используйте ваш client ID и client secret, чтобы запросить токен перед вызовом любого API.

  • Есть ли способ протестировать процесс, не влияя на производственные данные?
    Вы можете использовать временную лицензию, предоставленную на странице страница временной лицензии, чтобы запустить код в непроизводственной среде.

Читать дальше