Перетворення векторної графіки у растрові зображення є поширеною вимогою при створенні мініатюр, попередніх переглядів або PDF‑файлів на сервері. GroupDocs.Conversion Cloud SDK for Node.JS надає потужну бібліотеку, яка здійснює повне в хмарі перетворення SVG у PNG. У цьому посібнику ви побачите повний робочий приклад, відповідний cURL‑процес, поради щодо налаштування та рекомендації кращих практик. Після завершення ви зможете інтегрувати серверне перетворення SVG у PNG у будь‑який застосунок Node.JS.

Повний робочий приклад конвертації SVG у PNG у Node.JS

Цей приклад демонструє, як конвертувати файл SVG, збережений у сховищі GroupDocs Cloud, у зображення PNG за допомогою GroupDocs.Conversion Cloud SDK for Node.JS.

const { Configuration, ConvertApi, ConvertDocumentRequest, ConvertSettings, PngOptions, StorageApi, DownloadFileRequest } = require("@groupdocs/conversion-cloud");
const fs = require('fs');
const path = require('path');

// -----------------------------------------------------------------------------
// Configuration – replace with your own credentials
// -----------------------------------------------------------------------------
const config = new Configuration({
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET"
});

const convertApi = new ConvertApi(config);
const storageApi = new StorageApi(config);

// -----------------------------------------------------------------------------
// Define source SVG and target PNG locations inside GroupDocs Cloud storage
// -----------------------------------------------------------------------------
const inputSvgPath = "input/sample.svg";          // SVG stored in cloud storage
const outputPngPath = "output/sample.png";       // Desired PNG location

// -----------------------------------------------------------------------------
// PNG conversion options – set dimensions to control memory/CPU usage
// -----------------------------------------------------------------------------
const pngOptions = new PngOptions({
    width: 1024,               // Resize width (optional)
    height: 768,               // Resize height (optional)
    backgroundColor: "#FFFFFF" // Ensure opaque background
});

// -----------------------------------------------------------------------------
// Build conversion settings object
// -----------------------------------------------------------------------------
const convertSettings = new ConvertSettings({
    filePath: inputSvgPath,
    format: "png",
    outputPath: outputPngPath,
    options: pngOptions
});

const convertRequest = new ConvertDocumentRequest(convertSettings);

// -----------------------------------------------------------------------------
// Execute conversion, then download the PNG locally
// -----------------------------------------------------------------------------
convertApi.convertDocument(convertRequest)
    .then(convResult => {
        console.log("Conversion succeeded. Cloud file:", convResult.path);
        const downloadReq = new DownloadFileRequest({ path: convResult.path });
        return storageApi.downloadFile(downloadReq);
    })
    .then(fileBuffer => {
        const localFile = path.resolve(__dirname, "sample.png");
        fs.writeFileSync(localFile, fileBuffer);
        console.log("PNG downloaded to:", localFile);
    })
    .catch(err => {
        console.error("Error during SVG → PNG conversion:", err);
    })
    .finally(() => {
        // Clean up HTTP client resources if the SDK exposes a close method
        if (config && config.httpClient && typeof config.httpClient.close === "function") {
            config.httpClient.close();
        }
    });

Примітка: Цей приклад коду демонструє основну функціональність. Перш ніж використовувати його у вашому проєкті, переконайтеся, що оновили шляхи до файлів (input/sample.svg, output/sample.png тощо), щоб вони відповідали фактичним розташуванням ваших файлів, перевірте, що всі необхідні залежності правильно встановлені, і ретельно протестуйте у вашому середовищі розробки. Якщо ви зіткнетеся з будь-якими проблемами, будь ласка, зверніться до офіційної документації або до команди підтримки за допомогою.

Конвертація SVG у PNG за допомогою REST API з використанням cURL

Якщо ви віддаєте перевагу чистому підходу REST, та сама конверсія може бути виконана за допомогою команд cURL. Нижче наведено кроки, які показують, як отримати токен доступу, завантажити SVG, розпочати конверсію та завантажити PNG.

Аутентифікація та отримання токену доступу

curl -X POST "https://api.groupdocs.cloud/v2.0/auth/token" \
     -H "Content-Type: application/json" \
     -d '{
           "client_id": "YOUR_CLIENT_ID",
           "client_secret": "YOUR_CLIENT_SECRET"
         }'

Відповідь містить access_token, який ви будете використовувати у наступних викликах.

Завантажте вихідний SVG-файл

curl -X POST "https://api.groupdocs.cloud/v2.0/storage/upload?path=input/sample.svg" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "file=@/path/to/local/sample.svg"

Виконати конвертацію SVG у PNG

curl -X POST "https://api.groupdocs.cloud/v2.0/conversion/convert" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "filePath": "input/sample.svg",
           "format": "png",
           "outputPath": "output/sample.png",
           "options": {
               "width": 1024,
               "height": 768,
               "backgroundColor": "#FFFFFF"
           }
         }'

API повертає шлях до новоствореного PNG‑файлу в хмарному сховищі.

Завантажити отриманий файл PNG

curl -X GET "https://api.groupdocs.cloud/v2.0/storage/download?path=output/sample.png" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o sample.png

Ці команди cURL дають вам повний контроль над процесом конвертації без написання коду. Для отримання додаткових відомостей перегляньте офіційну документацію API.

Як працює конвертація SVG у PNG у Node.JS

  1. Імпорт класів SDK - Оператор require("@groupdocs/conversion-cloud") завантажує необхідні класи, такі як ConvertApi, ConvertSettings та PngOptions (Довідка API).
const { ConvertApi, ConvertSettings, PngOptions } = require("@groupdocs/conversion-cloud");
  1. Налаштування автентифікації - Об’єкт Configuration містить ваші clientId і clientSecret. Цей об’єкт передається як ConvertApi, так і StorageApi для авторизації всіх подальших викликів.
const config = new Configuration({ clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET" });
  1. Визначте шляхи вводу та виводу - inputSvgPath вказує на SVG у хмарному сховищі, тоді як outputPngPath визначає, куди слід зберегти PNG.
const inputSvgPath = "input/sample.svg";
const outputPngPath = "output/sample.png";
  1. Встановити параметри PNG - PngOptions дозволяє контролювати розміри та колір фону, що корисно для великих або прозорих SVG.
const pngOptions = new PngOptions({ width: 1024, height: 768, backgroundColor: "#FFFFFF" });
  1. Створити налаштування конвертації та виконати - ConvertSettings об’єднує шлях до файлу, цільовий формат, місце виводу та параметри. Метод convertDocument виконує конвертацію, а результат містить хмарний шлях до PNG.

    const convertSettings = new ConvertSettings({ filePath: inputSvgPath, format: "png", outputPath: outputPngPath, options: pngOptions });
    const convertRequest = new ConvertDocumentRequest(convertSettings);
    convertApi.convertDocument(convertRequest);
    
  2. Завантажити PNG - Після конвертації StorageApi.downloadFile отримує двійкові дані, які ви можете записати у локальну файлову систему.

Розуміння кожного кроку допомагає налаштувати процес, обробляти помилки та інтегрувати конвертацію в більш складні робочі процеси.

Встановлення та налаштування GroupDocs.Conversion Cloud SDK для Node.JS

npm install groupdocs-conversion-cloud

SDK вимагає Node.js 12 або новішу версію. Після встановлення створіть об’єкт конфігурації з вашими clientId та clientSecret (доступними у вашому обліковому записі GroupDocs Cloud). Перегляньте сторінку завантаження для отримання останньої версії пакету.

const { Configuration } = require("@groupdocs/conversion-cloud");
const config = new Configuration({
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET"
});

Переконайтеся, що облікові дані мають дозвіл на доступ до сервісів сховища та конвертації. Після налаштування ви можете створити екземпляри ConvertApi і StorageApi, як показано у прикладі коду.

Тонке налаштування параметрів конвертації PNG

Клас PngOptions пропонує кілька властивостей, які ви можете налаштувати:

  • width / height - Визначте вихідну роздільну здатність. Більші значення підвищують якість, але споживають більше пам’яті.
    const pngOptions = new PngOptions({ width: 1920, height: 1080 });
    
  • backgroundColor - Встановіть суцільний фон для SVG, які містять прозорість.
    const pngOptions = new PngOptions({ backgroundColor: "#000000" });
    
  • compressionLevel - (Якщо підтримується) Виберіть рівень стиснення між 0 (без стиснення) і 9 (максимальне стиснення), щоб зменшити розмір файлу.
    const pngOptions = new PngOptions({ compressionLevel: 6 });
    

Ці параметри передаються через властивість options об’єкта ConvertSettings. Дивіться довідка API для повного списку доступних налаштувань.

Кращі практики ефективного перетворення SVG у PNG

  • Перевірка вмісту SVG - Переконайтеся, що SVG не містить зовнішніх скриптів або шкідливих даних перед завантаженням. GroupDocs.Conversion очищає вхідні дані, але попередня перевірка додає додатковий рівень безпеки.
  • Повторне використання об’єкта Configuration - Створіть один екземпляр Configuration і використовуйте його в кількох викликах ConvertApi, щоб зменшити накладні витрати.
  • Встановіть розумні розміри - Обмежте ширину та висоту до потрібного розміру. Надмірно великі зображення збільшують час обробки та використання пам’яті.
  • Стрімінг великих файлів - Для дуже великих SVG розгляньте можливість потокового завантаження замість завантаження всього буфера в пам’ять.
  • Контролюйте використання API - Слідкуйте за вашою квотою конвертації та обробляйте відповіді про обмеження швидкості (rate‑limit) коректно.

Висновок

GroupDocs.Conversion Cloud SDK for Node.JS забезпечує просте, масштабоване та безпечне серверне перетворення SVG у PNG. Дотримуючись повного прикладу коду, еквівалентного cURL‑процесу та вищезгаданих порад щодо налаштування, ви можете інтегрувати високопродуктивне перетворення зображень у будь‑який бекенд‑сервіс. Пам’ятайте переглянути варіанти ліцензування: у продакшн‑розгортаннях потрібна платна підписка, а тимчасову ліцензію для тестування можна отримати на сторінці тимчасової ліцензії. Почніть конвертувати вже сьогодні і впевнено надавайте користувачам чіткі PNG‑активи.

Питання та відповіді

Як виконати конвертацію SVG у PNG у Node.JS, використовуючи GroupDocs?
Використовуйте GroupDocs.Conversion Cloud SDK for Node.JS. Завантажте SVG у хмарне сховище, налаштуйте PngOptions, викличте convertDocument і завантажте PNG. Повний приклад коду в цій статті показує кожен крок.

Чи можу я пакетно конвертувати багато SVG файлів одночасно?
Так. Пройдіться по списку шляхів до SVG і викликайте один і той же запит конвертації для кожного файлу. SDK обробляє кожен запит незалежно, дозволяючи зберігати всі результати у форматі PNG в одній вихідній папці.

Що робити, якщо конвертація завершується помилкою?
Перевірте повідомлення про помилку, яке повертається у блоці catch. Поширені проблеми включають недійсні облікові дані, відсутні шляхи до файлів або непідтримувані функції SVG. Ознайомтеся з офіційною документацією для детальних кодів помилок і кроків усунення несправностей.

Де я можу знайти більше інформації про параметри PNG?
Усі налаштовувані властивості перелічені в API‑довіднику для PngOptions. Перейдіть до API довідка, щоб ознайомитися з додатковими налаштуваннями, такими як рівень стиснення та глибина кольору.

Читати далі