Node.js 로 PDF 파일을 만드는 방법
Node.js에서 프로그래밍 방식으로 PDF 파일을 생성하려면 HTML 렌더링을 정확하게 처리하고, 최신 CSS를 지원하며, Node의 비동기 패턴과 깔끔하게 통합되는 라이브러리가 필요합니다. IronPDF는 Chromium 기반 렌더링 엔진을 사용하여 HTML 콘텐츠를 Chrome의 인쇄 출력과 일치하는 PDF로 변환하며, 전체 CSS, 인라인 JavaScript 및 반응형 레이아웃을 기본적으로 지원합니다.
이 가이드는 설치, HTML 문자열, HTML 파일, URL에서 PDF 생성, 출력 옵션 구성, 헤더, 푸터, 디지털 서명, 암호화와 같은 Enterprise 기능을 적용하는 전체 워크플로우를 다룹니다.
빠른 시작: Node.js에서 PDF 만들기
- npm을 통해 IronPDF 설치:
npm install @ironsoftware/ironpdf PdfDocument을@ironsoftware/ironpdf에서 가져옵니다.- HTML 콘텐츠와 함께
PdfDocument.fromHtml()를 호출하세요 .saveAs()을 호출하여 PDF 파일을 디스크에 저장합니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/quickstart.js
import { PdfDocument } from "@ironsoftware/ironpdf";
const pdf = await PdfDocument.fromHtml("<h1>Hello, PDF!</h1><p>Generated with IronPDF.</p>");
await pdf.saveAs("output.pdf");실제 환경에서 실행하기 전에 사용 중인 플랫폼에 맞게 IronPdfEngine를 구성하십시오. Windows, Linux, macOS 및 Docker에 대한 사용 지침은 IronPdfEngine 설정 가이드를 참조하세요.
최소 워크플로우(5단계)
- IronPDF 설치:
npm install @ironsoftware/ironpdf @ironsoftware/ironpdf에서PdfDocument를 가져오기PdfDocument.fromHtml(),PdfDocument.fromFile(),PdfDocument.fromUrl()을 사용하여 PDF 생성- 용지 크기, 여백, 헤더, 푸터와 같은 옵션 설정
pdf.saveAs("output.pdf")로 출력 저장
Node.js 용 IronPDF 어떻게 설치하나요?
npm을 사용하여 @ironsoftware/ironpdf 패키지를 설치하십시오. 이 패키지는 Node.js 12.0 이상과 ESM 및 CommonJS 모듈 형식을 지원합니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/install.sh
npm install @ironsoftware/ironpdf//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/install.sh
npm install @ironsoftware/ironpdfIronPDF for Node.js는 Chromium 기반의 렌더링을 처리하는 IronPDF 엔진 바이너리에 의존합니다. 엔진은 첫 실행 시 자동으로 다운로드되지만 실행 중 다운로드를 피하기 위해 플랫폼별 패키지를 미리 설치할 수 있습니다. 이것은 제한된 네트워크 환경이나 Docker 기반 CI 파이프라인에서 유용합니다:
| 플랫폼 | 패키지 |
|---|---|
| Windows x64 | @ironsoftware/IronPDF-engine-Windows-x64 |
| Linux x64 | @ironsoftware/IronPDF-engine-linux-x64 |
| macOS x64 | @ironsoftware/IronPDF-engine-macos-x64 |
| macOS ARM | @ironsoftware/IronPDF-engine-macos-arm64 |
PdfDocument 호출 전에 IronPdfGlobalConfig.setConfig({ licenseKey: "YOUR-KEY" })을 설정하여 적용하십시오. 전체 라이선스 키 설정 지침을 따르세요.IronPDF의 시스템 요구 사항은 무엇인가요?
IronPDF for Node.js는 Windows, Linux, macOS 및 Docker 환경에서 Node.js 12.0 이상에서 실행됩니다. 이 라이브러리는 x64 및 ARM64 아키텍처 둘 다 지원하여 로컬 개발 및 컨테이너화된 배포에 적합합니다. 클라우드 환경에서는 로컬에서 엔진을 실행하는 대신 원격 IronPDF 엔진에 연결하는 것도 지원합니다.
Node.js에서 HTML로 PDF를 만드는 방법은?
HTML 문자열에서 PDF를 생성하려면 PdfDocument.fromHtml()을 사용하십시오. 이 메서드는 인라인 <style> 블록, CDN을 통해 로드된 외부 폰트, CSS Grid나 Flexbox와 같은 레이아웃 시스템을 포함하여 유효한 모든 HTML을 허용합니다. Chromium 렌더러는 PDF를 생성하기 전에 모든 리소스를 해결합니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/html-string-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
const htmlContent = `
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial, sans-serif; margin: 0; padding: 0; }
.header { background: #2b4c8c; color: white; padding: 24px 32px; }
.header h1 { margin: 0; font-size: 22px; }
.body { padding: 32px; }
table { width: 100%; border-collapse: collapse; margin-top: 16px; }
th { background: #f0f4fb; text-align: left; padding: 8px 12px; }
td { padding: 8px 12px; border-bottom: 1px solid #e0e0e0; }
</style>
</head>
<body>
<div class="header"><h1>Invoice #INV-2025-0042</h1></div>
<div class="body">
<p>Date: ${new Date().toLocaleDateString()}</p>
<table>
<tr><th>Item</th><th>Qty</th><th>Unit Price</th><th>Total</th></tr>
<tr><td>IronPDF Enterprise License</td><td>1</td><td>$499.00</td><td>$499.00</td></tr>
<tr><td>Priority Support (1 year)</td><td>1</td><td>$199.00</td><td>$199.00</td></tr>
</table>
<p style="text-align:right; margin-top:16px;"><strong>Total: $698.00</strong></p>
</div>
</body>
</html>`;
// Generate the PDF from the HTML string
const pdf = await PdfDocument.fromHtml(htmlContent);
await pdf.saveAs("invoice.pdf");PdfDocument.fromHtml()은 PdfDocument 인스턴스를 반환합니다. 파일을 작성하려면 원하는 출력 경로를 지정하여 saveAs()를 호출하십시오. 이 메서드는 비동기적이므로 await를 사용하거나 .then() 핸들러를 연결하십시오. Chromium 엔진은 폰트 로딩, 외부 스타일시트 및 자산 해결을 처리한 후 출력을 캡처합니다. 더 많은 패턴을 보려면 HTML 문자열에서 PDF 생성 예제를 참조하세요.
HTML 파일로부터 PDF 생성 방법은?
.html를 사용하여 디스크에서 기존 PdfDocument.fromFile() 파일을 불러옵니다. 이 접근 방식은 HTML이 애플리케이션 로직과 별개로 유지되는 템플릿 문서에 적합합니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/html-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
// Load an HTML file and render it as a PDF
const pdf = await PdfDocument.fromFile("./templates/report-template.html");
await pdf.saveAs("./output/report.pdf");렌더러는 HTML 파일 디렉토리의 상대적 자산 경로를 해결하여 로컬 CSS 및 이미지 참조가 추가 구성 없이 작동합니다. 자산 해결을 위한 기본 URL을 재정의하는 방법을 비롯한 추가 옵션은 HTML 파일에서 PDF 생성 예제를 참조하세요.
URL로부터 PDF 생성 방법은?
PdfDocument.fromUrl()을 사용하여 활성 웹 페이지를 PDF로 렌더링합니다. 렌더러는 JavaScript를 실행하고 CSS를 적용하며, 동적 콘텐츠를 캡처하기 전에 대기하면서 페이지를 전체 브라우저 세션으로 로드합니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/url-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
// Render a live webpage to PDF
const pdf = await PdfDocument.fromUrl("https://ironpdf.com/nodejs/");
await pdf.saveAs("ironpdf-homepage.pdf");JavaScript를 통해 콘텐츠를 비동기적으로 로드하는 페이지의 경우, 캡처 전에 추가 시간을 허용하기 위해 renderDelay 옵션(밀리초 단위)과 함께 사용하십시오. URL에서 PDF 생성 예제는 지연 구성 및 인증 헤더를 설명합니다.
PDF 출력 설정을 구성하는 방법은?
PdfDocument.fromHtml(), PdfDocument.fromFile() 또는 PdfDocument.fromUrl()의 두 번째 인수로 구성 객체를 전달하십시오. 구성 객체는 용지 크기, 여백, 방향 및 렌더링 옵션을 허용합니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/pdf-settings.js
import { PdfDocument, PdfPaperSize } from "@ironsoftware/ironpdf";
const config = {
paperSize: PdfPaperSize.A4,
marginTop: 25,
marginBottom: 25,
marginLeft: 20,
marginRight: 20,
landscape: false,
printBackground: true,
};
const pdf = await PdfDocument.fromHtml("<h1>Configured PDF</h1>", config);
await pdf.saveAs("configured-output.pdf");주요 구성 옵션은 다음과 같습니다:
paperSize:PdfPaperSize열거형 값(A4, Letter, Legal 및 사용자 정의 크기)을 지원합니다.landscape: 가로 방향 페이지 배치를 위해true을 설정하십시오printBackground: CSS 배경색 및 이미지 포함marginTop/Bottom/Left/Right: 페이지 여백(밀리미터 단위)renderDelay: JavaScript 사용량이 많은 페이지의 경우 캡처 전 대기할 밀리초 수
PDF에 머리글과 바닥글을 추가하는 방법은?
구성 객체에 htmlHeader 및 htmlFooter 속성을 지정하여 머리글과 바닥글을 추가하십시오. 둘 다 HTML 전체 문자열을 허용하며, 페이지 번호, 날짜 및 동적 텍스트로 스타일이 지정된 콘텐츠를 가능하게 합니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/headers-footers.js
import { PdfDocument } from "@ironsoftware/ironpdf";
const config = {
htmlHeader: {
htmlFragment: "<div style='text-align:center; font-size:12px; color:#666;'>Quarterly Report - Confidential</div>",
dividerLine: true,
},
htmlFooter: {
htmlFragment: "<div style='text-align:right; font-size:10px;'>Page {page} of {total-pages}</div>",
dividerLine: true,
},
};
const pdf = await PdfDocument.fromHtml("<h1>Q3 Financial Summary</h1><p>See attached tables.</p>", config);
await pdf.saveAs("report-with-headers.pdf");푸터 HTML에서 {page} 및 {total-pages} 토큰을 사용하십시오; IronPDF는 렌더링 시간에 정확한 값을 대체합니다. HTML 머리글 및 바닥글 및 고급 헤더 기술을 포함하여 더 많은 머리글 및 바닥글 패턴은 연결된 예제를 참조하세요.
PDF에 보안 및 메타데이터를 추가하는 방법은?
PdfDocument 보안 방법을 사용하여 생성된 PDF에 암호 보호 및 암호화를 적용하십시오. 이 라이브러리는 소유자와 사용자 암호 모두를 지원하며, 인쇄, 복사, 편집에 대한 세밀한 권한 제어를 제공합니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/security.js
import { PdfDocument } from "@ironsoftware/ironpdf";
const pdf = await PdfDocument.fromHtml("<h1>Confidential Document</h1>");
// Apply password protection with granular permissions
await pdf.securePdf({
userPassword: "view-password",
ownerPassword: "admin-password",
allowUserAnnotations: false,
allowUserPrinting: true,
allowUserCopyPasteContent: false,
});
await pdf.saveAs("secured-document.pdf");암호가 적용될 때 기본적으로 AES 256비트 암호화를 사용하는 암호화 및 해독. 문서 인증 워크플로우를 위해 IronPDF는 X.509 인증서를 사용한 디지털 서명도 지원합니다.
PdfDocument.fromHtml() 뒤에 PDF/A 변환 방법을 기재하십시오. IronPDF는 PDF/A 준수 및 PDF/UA 접근성 표준을 지원합니다.기존 PDF를 병합하고 조작하는 방법은?
PdfDocument는 기존 PDF 파일을 병합, 분할 및 수정하는 메서드를 제공합니다. PdfDocument.fromFile()을 사용하여 기존 PDF를 불러온 다음, 조작 메서드를 활용해 페이지를 추가하거나 제거하고, 콘텐츠에 스탬프를 찍거나, 텍스트를 교체할 수 있습니다.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/merge-pdfs.js
import { PdfDocument } from "@ironsoftware/ironpdf";
// Merge two PDF files into one
const merged = await PdfDocument.mergePdf([
await PdfDocument.fromFile("./report-part1.pdf"),
await PdfDocument.fromFile("./report-part2.pdf"),
]);
await merged.saveAs("./complete-report.pdf");PdfDocument.mergePdf()는 PdfDocument 인스턴스의 배열을 받아 하나의 병합된 문서를 반환합니다. 페이지 순서는 배열 순서를 따르므로 출력은 입력 파일의 순서를 보존합니다.
다른 일반적 조작 작업:
removePages()을 사용하여 PDF에서 페이지 제거- 기존 문서에 HTML 콘텐츠 스탬핑
- 모든 페이지에 걸쳐 텍스트 찾기 및 교체
- 색인화 또는 처리 용도로 PDF에서 텍스트 추출
대량 작업의 경우, 멀티스레드 PDF 생성을 사용하여 여러 문서를 병렬로 처리할 수 있습니다. PDF 압축은 저장 및 전송을 위한 파일 크기를 줄입니다.
차트와 Angular 페이지 같은 복잡한 콘텐츠에 대한 PDF를 생성하는 방법은?
IronPDF는 전체 Chromium 브라우저 세션을 사용하여 페이지를 렌더링하므로 차트, 그래프, 데이터 시각화를 생성하는 JavaScript 라이브러리가 적절하게 렌더링되며, JavaScript 차트 라이브러리를 포함합니다. Angular와 같은 프레임워크로 구축된 단일 페이지 애플리케이션도 Angular에서 PDF 예제를 사용하여 깔끔하게 변환됩니다.
유니코드가 많은 문서나 다국어 출력을 위해 IronPDF는 추가적인 구성 없이 유니코드 및 국제 문자 세트를 처리합니다. Google Fonts 통합 예제는 출력 PDF의 일관된 타이포그래피를 위해 렌더링된 HTML에서 웹 폰트를 로드하는 방법을 보여줍니다.
renderDelay을 밀리초 단위로 설정하여 페이지가 완전히 렌더링될 시간을 확보하십시오.Node.js에서 PDF를 생성하기 위한 다음 단계는?
이 가이드는 IronPDF의 핵심 워크플로우를 다루었습니다: 라이브러리 설치, HTML 문자열, 파일, URL에서 PDF 생성, 출력 설정 구성, 머리글 및 바닥글 추가, 보안 적용, 기존 PDF 조작.
계속 진행하려면 렌더링 옵션에 대한 자세한 안내를 위해 HTML을 PDF/A로 변환하는 전체 튜토리얼을 확인하거나, PdfDocument 메서드 및 구성 속성의 전체 목록을 보려면 API 레퍼런스를 살펴보세요.
무료 체험을 시작하여 워터마크 없는 PDF를 생성하거나, 라이선싱 옵션 보기를 통해 생산 배포를 위한 라이선스를 취득하세요.
자주 묻는 질문
Node.js에서 PDF 파일을 만드는 가장 쉬운 방법은 무엇인가요?
npm install @ironsoftware/ironpdf로 IronPDF를 설치한 후, PdfDocument.fromHtml()와 HTML 문자열을 호출하고 결과를 saveAs()를 사용하여 저장하세요. 라이브러리는 모든 렌더링을 자동으로 처리합니다.
Node.js용 IronPDF를 어떻게 설치하나요?
프로젝트 디렉터리에서 npm install @ironsoftware/ironpdf를 실행하세요. IronPDF 엔진 이진 파일은 처음 사용할 때 자동으로 다운로드됩니다. 오프라인 또는 CI 환경의 경우, @ironsoftware/ironpdf-engine-linux-x64와 같은 플랫폼별 엔진 패키지를 별도로 설치하세요.
CSS 스타일과 서식을 유지하면서 HTML을 PDF로 변환할 수 있나요?
네. IronPDF는 Chrome 기반의 렌더링 엔진을 사용하여 HTML을 PDF로 변환할 때 모든 CSS 스타일, 외부 폰트, JavaScript 실행을 그대로 유지합니다. 출력물은 Chrome의 인쇄 미리보기 동작과 일치합니다.
기본 HTML 변환 외에 어떤 PDF 기능이 제공되나요?
IronPDF는 전자 서명, AES 256비트 암호화, 세분화된 권한의 암호 보호, 페이지 번호 토큰이 있는 사용자 지정 머리글 및 바닥글, PDF 병합, 페이지 제거, HTML 스탬핑, 텍스트 추출, PDF/A 준수 및 멀티 스레드 생성을 지원합니다.
디스크에 있는 HTML 파일에서 PDF를 어떻게 생성하나요?
PdfDocument.fromFile('./path/to/template.html')을 사용하세요. 렌더러는 HTML 파일의 디렉토리에서 상대 자산 경로를 해결하므로, 로컬 CSS 및 이미지 참조는 추가 설정 없이 작동합니다.
IronPDF를 사용하여 기존 PDF 파일에서 텍스트를 추출할 수 있습니까?
네. PdfDocument.fromFile()을 사용하여 기존 PDF를 로드하고 텍스트 추출 메서드를 사용하여 모든 페이지의 콘텐츠를 읽을 수 있습니다. IronPDF는 새로운 PDF를 생성하는 것과 기존 문서를 처리하는 것을 모두 지원합니다.
IronPDF는 HTML을 렌더링할 때 JavaScript 실행을 지원하나요?
네. Chromium 렌더러는 PDF를 캡처하기 전에 JavaScript를 실행합니다. 비동기적으로 콘텐츠를 로드하는 페이지의 경우, 캡처 전에 추가 시간을 주기 위해 밀리초 단위로 renderDelay 옵션을 설정하세요.





