Автоматизация преобразования структурированных данных в оформленные документы является частой потребностью для серверных служб. 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.
- Получить токен доступа
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"
- Загрузите шаблон 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"
- Загрузите 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"
- Импорт 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
}'
- Преобразовать рабочую книгу в 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"
- Скачать сгенерированный 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. -
Есть ли способ протестировать процесс, не влияя на производственные данные?
Вы можете использовать временную лицензию, предоставленную на странице страница временной лицензии, чтобы запустить код в непроизводственной среде.