IRONSOFTWAREHOME
동영상

C#을 사용하여 HTML과 JavaScript를 이용해 PDF로 변환하는 방법

Curtis Chau
Curtis Chau
Updated: 2026년 5월 18일

DynamicPDF에서 IronPDF로 마이그레이션해야 하는 이유는?

DynamicPDF의 제품 분할은 일반적인 마이그레이션 동인이 됩니다. 라이센스 모델을 이해하면 현재 구현의 진정한 비용을 평가하는 데 도움이 됩니다.

제품 분할 문제

DynamicPDF (ceTe Software)는 PDF 기능을 별도로 라이센스 된 패키지로 제공합니다:

  1. DynamicPDF Core Suite (ceTe.DynamicPDF.CoreSuite.NET, v12.43.0): Bundles Generator, Merger, and ReportWriter
  2. DynamicPDF HTML Converter (ceTe.DynamicPDF.HtmlConverter.NET, v3.3.0): HTML-to-PDF 별도 애드온
  3. DynamicPDF Converter (ceTe.DynamicPDF.Converter.NET, v3.32.0): 오피스 및 50개 이상의 파일 형식 변환
  4. DynamicPDF PrintManager (ceTe.DynamicPDF.Printing.NET): 프로그램적인 인쇄
  5. DynamicPDF Rasterizer (ceTe.DynamicPDF.Rasterizer.NET): PDF-to-image
  6. DynamicPDF Viewer (ceTe.DynamicPDF.Viewer.NET): WinForms/WPF 뷰어 컨트롤

Generator, Merger 및 ReportWriter는 Core Suite에 통합되지만, HTML 렌더링, 비트맵화, 인쇄 및 보기에는 각각 별도의 구입이 필요합니다. IronPDF는 이러한 기능을 단일 라이브러리 및 라이선스로 번들합니다.

아키텍처 비교

측면DynamicPDFIronPDF
제품 모델단편화된 (5개 이상의 제품)모든 기능 통합된 라이브러리
라이선스여러 라이선스 필요단일 라이선스
HTML to PDF별도 애드온 구매 필요내장, Chromium 기반
CSS 지원제한됨 (애드온 요구)전체 CSS3와 Flexbox/Grid 제공
API 스타일좌표 기반 포지셔닝HTML/CSS + 조작 API
학습 곡선가파름 (여러 API)완만함 (웹 기술)
최신 .NET.NET Standard 2.0 / .NET 6 / .NET 8 / .NET Framework 4.6.2.NET 6/7/8/9+ 네이티브

주요 마이그레이션 혜택

  1. 단일 패키지: 하나의 NuGet 패키지가 3-5개의DynamicPDF패키지를 대체함
  2. 현대적 렌더링: Chromium 엔진 대 레거시 렌더링
  3. 웹 기술: 좌표 기반 위치 지정 대신 HTML/CSS 사용
  4. 간편한 API: 코드가 적고, 읽기 쉽고, 유지 보수가 간편함
  5. 추가 구매 없음: HTML, 병합, 보안 모두 포함

이전 준비

필수 조건

환경이 다음 요구 사항을 충족하는지 확인하세요:

  • .NET Framework 4.6.2+ or .NET 6/7/8/9+
  • Visual Studio 2019+ 또는 VS Code와 C# 확장
  • NuGet 패키지 관리자 접근 -IronPDF라이선스 키 (ironpdf.com에서 무료 체험판 제공)

###DynamicPDF사용 감사

해결책 디렉토리에서 이 명령을 실행하여 모든DynamicPDF참조를 식별합니다:

# Find allDynamicPDFreferences
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep -i dynamic
SHELL

찾을 일반 패키지:

  • ceTe.DynamicPDF.CoreSuite.NET (Generator + Merger + ReportWriter)
  • ceTe.DynamicPDF.HtmlConverter.NET (HTML-to-PDF 애드온)
  • ceTe.DynamicPDF.Converter.NET (Office / 다중 형식을 PDF로)
  • ceTe.DynamicPDF.Rasterizer.NET, ceTe.DynamicPDF.Printing.NET, ceTe.DynamicPDF.Viewer.NET

패러다임 변화 이해

DynamicPDF에서 IronPDF로 마이그레이션할 때 가장 큰 변화는 문서 생성에 대한 기본적인 접근 방식입니다. DynamicPDF는 특정 X,Y 좌표에 요소를 배치하는 좌표 기반 위치 지정을 사용합니다. IronPDF는 웹 기술을 사용하여 디자인하는 HTML/CSS 렌더링을 사용합니다.

이 패러다임 변화는 Label, TextArea, Table2 요소를 HTML에 상응하는 요소로 변환하는 것을 의미하며, 이는 일반적으로 더 읽기 쉽고 유지 관리하기 쉬운 코드로 이어집니다.

단계별 마이그레이션 프로세스

1단계: NuGet 패키지 업데이트

실제로 설치된DynamicPDF패키지를 제거하고 IronPDF를 추가합니다.

# RemoveDynamicPDFpackages (only those you actually have)
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET
dotnet remove package ceTe.DynamicPDF.Converter.NET
dotnet remove package ceTe.DynamicPDF.Rasterizer.NET
dotnet remove package ceTe.DynamicPDF.Printing.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

2단계: 네임스페이스 참조 업데이트

DynamicPDF 네임스페이스를 IronPDF로 대체합니다:

// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;

// Add this
using IronPdf;

3단계: 라이선스 구성

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

완전한 API 마이그레이션 참조

핵심 클래스 매핑

DynamicPDF클래스IronPDF 동등
DocumentChromePdfRenderer
DocumentPdfDocument
PageHTML <div> 페이지 넘김과 함께
MergeDocumentPdfDocument.Merge()
HtmlConverterChromePdfRenderer

페이지 요소를 HTML에 매핑하기

DynamicPDF PageElementIronPDF/HTML 동등한 요소
Label<p>, <span>, <div>
TextArea<div>, <p> CSS와 함께
Image<img> 태그
Table2HTML <table>
PageNumberingLabel{page} / {total-pages} 자리 표시자

주요 API 매핑

DynamicPDFIronPDF
Document + PageChromePdfRenderer
Label, TextAreaHTML <p>, <div>
Table2HTML <table>
MergeDocumentPdfDocument.Merge()
HtmlConverterChromePdfRenderer
document.Draw()pdf.SaveAs() / pdf.BinaryData
PageNumberingLabel %%CP%%{page} 자리 표시자

코드 마이그레이션 예제

HTML을 PDF로 변환

HTML을 PDF로 변환하는 것은 IronPDF의 내장 Chromium 렌더링과는 달리 별도로 HtmlConverter 애드온이 필요한 DynamicPDF의 요구 사항을 보여줍니다.

DynamicPDF 구현:

// NuGet: Install-Package ceTe.DynamicPDF.Converter.NET
// HTML-to-PDF is a separate add-on; CoreSuite alone does not include it.
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        HtmlConverter converter = new HtmlConverter(html);
        converter.Convert("output.pdf");
    }
}

IronPDF 구현:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

IronPDF의 ChromePdfRenderer는 전체 CSS3 지원을 갖춘 Chromium 기반 렌더링을 제공하며, 별도의 애드온 구매가 필요하지 않습니다. 더 많은 옵션을 보려면 HTML to PDF 문서를 참조하세요.

여러 PDF 병합

PDF 병합은 IronPDF의 내장 정적 Merge 메서드와 DynamicPDF의 MergeDocument 클래스(병합 제품 라이선스가 필요함) 간의 차이를 보여줍니다.

DynamicPDF 구현:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;

class Program
{
    static void Main()
    {
        MergeDocument document = new MergeDocument("document1.pdf");
        document.Append("document2.pdf");
        document.Draw("merged.pdf");
    }
}

IronPDF 구현:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}

IronPDF의 정적 Merge 메서드는 여러 PdfDocument 객체를 직접 허용합니다. 더 많은 옵션은 PDF 병합 문서를 참조하십시오.

PDF에 텍스트 추가

텍스트 배치에서는 DynamicPDF의 좌표 기반 Label 요소와 IronPDF의 HTML 기반 TextStamper 간의 패러다임 변화를 보여줍니다.

DynamicPDF 구현:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Page page = new Page(PageSize.Letter);
        Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
        page.Elements.Add(label);
        document.Pages.Add(page);
        document.Draw("output.pdf");
    }
}

IronPDF 구현:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalAlignment = VerticalAlignment.Top
        };
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}

IronPDF의 TextStamper는 다른 페이지 크기에서도 더 유연한 레이아웃을 가능하게 하는 정렬 기반 위치 지정을 제공합니다. 더 많은 옵션은 워터마크 및 스탬핑 문서를 참조하세요.

전체 문서 생성 예제

이 종합 예제는 복수의 요소를 가진DynamicPDF문서를 IronPDF의 HTML 접근 방식으로 변환하는 방법을 보여줍니다.

DynamicPDF 구현:

using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;

// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);

Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");

// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");

IronPDF 구현:

using IronPdf;

var renderer = new ChromePdfRenderer();

// All features in one library
var html = @"
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>";

var invoice = renderer.RenderHtmlAsPdf(html);

// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");

중요한 마이그레이션 노트

좌표 기반에서 HTML/CSS 위치 지정으로 전환

근본적인 패러다임 전환은 X,Y 좌표 위치를 CSS 기반 레이아웃으로 변환해야 합니다:

//DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);

//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";

//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";

페이지 번호 매기기 구문

DynamicPDF와 IronPDF는 페이지 번호를 위한 서로 다른 placeholder 구문을 사용합니다:

//DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"

//IronPDF placeholders
"Page {page} of {total-pages}"
C#

머리말과 바닥글

DynamicPDF Template 요소를IronPDFHtmlHeaderFooter로 변환:

//IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

더 많은 헤더/푸터 옵션은 헤더 및 푸터 문서를 참조하세요.

보안 설정

//IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";

포괄적인 보안 옵션은 암호화 문서를 참조하십시오.

마이그레이션 후 점검 목록

코드 마이그레이션을 완료한 후, 다음을 확인하십시오:

  • 생성된 PDF의 시각적 비교
  • 텍스트 위치 및 레이아웃 확인
  • 표 렌더링 및 오버플로우 테스트
  • 모든 페이지의 헤더/푸터 확인
  • 양식 채우기 기능 테스트
  • 보안/암호화 확인
  • 성능 벤치마킹
  • 사용하지 않는DynamicPDF라이선스 파일 제거
  • 문서 업데이트

추가 리소스


DynamicPDF에서 IronPDF로의 마이그레이션은 여러 제품 라이선스를 단일 라이브러리로 통합하고 좌표 기반 위치 결정을 Chromium에서 HTML/CSS 렌더링으로 대체합니다. 웹 기술에 이미 익숙한 팀은 일반적으로 생성된 코드를 더 쉽게 유지할 수 있다고 느낍니다.

참고해 주세요: DynamicPDF는 해당 소유자의 등록 상표입니다. 이 사이트는 ceTe Software와 관련이 없으며, 승인 또는 후원받지 않았습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.
Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.