구조화된 데이터를 정교한 문서로 변환하는 자동화는 백엔드 서비스에서 자주 필요한 작업입니다. Aspose.Cells Cloud SDK for Node.js는 개발자가 Excel 워크북을 다루고 강력한 REST API를 통해 다양한 형식으로 변환할 수 있게 해줍니다. 이 가이드에서는 SDK를 사용하여 XML 데이터를 PDF로 가져오는 방법을 배우게 되며, 인증부터 파일 업로드, XML 매핑 및 PDF 생성까지 모든 과정을 다룹니다.

필수 조건 및 설정

시작하기 전에 다음을 확인하십시오:

  • Node.js 14 이상 버전이 머신에 설치되어 있어야 합니다.
  • Aspose Cloud 계정과 클라이언트 ID 및 클라이언트 비밀이 필요합니다.
  • Node.js 스크립트를 실행할 수 있는 터미널 또는 IDE에 접근할 수 있어야 합니다.

Aspose.Cells Cloud SDK for 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 다운로드. 필수 조건이 준비되면 실제 구현으로 넘어갈 수 있습니다.

Node.js에서 XML 데이터를 PDF로 가져오기: 단계별 워크스루

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);
    }
})();

참고: 이 코드 예제는 핵심 기능을 보여줍니다. 프로젝트에 사용하기 전에 파일 경로와 구성 값을 실제 환경에 맞게 업데이트하고, 모든 필수 종속성이 올바르게 설치되었는지 확인하며, 개발 환경에서 충분히 테스트하십시오. 문제가 발생하면 공식 문서를 참조하거나 지원 팀에 문의하십시오.

cURL 및 REST API를 사용한 XML에서 PDF 변환

아래는 Node.js 코드를 작성하지 않고도 동일한 작업을 수행하는 cURL 기반 워크플로우입니다.

  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 - 옵션을 활성화하려면 importDataOnly와 함께 true 로 설정해야 합니다.
  • xmlMapIndex - 가져오기 시 사용할 XML 맵(여러 개 정의된 경우)을 선택합니다.

이 옵션들은 앞에서 사용한 importXmlRequest 객체에서 이미 시연되었습니다:

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

PDF‑specific 설정(페이지 크기, 방향 및 이미지 품질 등)을 PdfSaveOptions 객체를 saveWorkbook 메서드에 전달하여 조정할 수 있습니다. 전체 옵션 목록은 API 참조를 참조하세요.

결론

이 튜토리얼을 따라 하면 이제 Aspose.Cells Cloud SDK for Node.js를 사용하여 import XML data to PDF에 대한 완전한 솔루션을 갖게 됩니다. 이 접근 방식은 간단한 SDK 호출과 선택적인 cURL 명령을 결합하여 전체 스택 Node.js 구현을 선호하든 가벼운 REST 통합을 선호하든 유연성을 제공합니다. 클라이언트 자격 증명을 안전하게 보호하고, 프로덕션 작업을 위해 임시 또는 유료 라이선스를 적용하는 것을 고려하십시오. 임시 라이선스는 temporary license page에서 얻을 수 있으며, 제품 페이지에서 가격 옵션을 확인할 수 있습니다. 즐거운 코딩 되세요!

자주 묻는 질문

  • Aspose.Cells Cloud SDK for Node.js를 사용하여 XML 데이터를 PDF로 가져오는 방법은?
    SDK는 Excel 템플릿과 XML 파일을 Aspose Cloud 스토리지에 업로드하고, XML 데이터를 워크시트에 매핑한 다음 워크북을 PDF로 저장합니다. 자세한 API 참조는 Aspose.Cells Cloud SDK for Node.js를 참조하십시오.

  • XML 데이터를 PDF로 가져올 때 PDF 출력물을 사용자 정의할 수 있나요?
    예, saveWorkbook 메서드는 페이지 방향, 이미지 품질 및 압축 수준과 같은 형식별 옵션을 허용합니다. 이러한 설정은 요청 페이로드에서 API 참조에 설명된 대로 조정할 수 있습니다.

  • REST 호출에 필요한 인증 방법은 무엇입니까?
    모든 요청에는 Aspose Cloud 인증 엔드포인트에서 얻은 OAuth 2.0 액세스 토큰을 포함해야 합니다. API를 호출하기 전에 클라이언트 ID와 클라이언트 비밀을 사용하여 토큰을 요청하십시오.

  • 프로덕션 데이터를 영향을 주지 않고 프로세스를 테스트할 방법이 있나요?
    비프로덕션 환경에서 코드를 실행하기 위해 임시 라이선스 페이지에서 제공되는 임시 라이선스를 사용할 수 있습니다.

자세히 보기