C#에서 XFINIUM.PDF에서 IronPDF로 마이그레이션하는 방법
XFINIUM.PDF는 C#에서 PDF를 프로그래밍적으로 생성 및 편집하기 위한 포괄적인 도구를 제공하는 크로스 플랫폼 PDF 라이브러리입니다. 두 가지 에디션—Generator와 Viewer—을 제공하지만, 좌표 기반의 그래픽 프로그래밍에 의존하는 라이브러리의 특성상 문서 중심의 애플리케이션을 개발하는 팀에게 상당한 도전 과제를 안겨줍니다. 모든 요소는 픽셀 좌표를 사용하여 수동으로 배치해야 하며, 간단해야 할 문서를 복잡한 드로잉 연습으로 만듭니다.
이 가이드는 XFINIUM.PDF에서 IronPDF로의 완전한 전환 경로를 제공하며, 단계별 지침, 코드 비교 및 이 전환을 평가하는 전문 .NET 개발자를 위한 실제 사례를 포함합니다.
XFINIUM.PDF에서 마이그레이션해야 하는 이유
XFINIUM.PDF는 좌표 기반의 그래픽 프로그래밍에 의존하는 저수준 PDF 라이브러리로, 개발자가 페이지의 모든 요소를 수동으로 배치하도록 강요합니다. 이 접근 방식은 요구 사항이 변경됨에 따라 유지 관리 악몽이 됩니다. 개발 팀이 마이그레이션을 고려하는 주요 이유는 다음과 같습니다:
HTML 지원 없음: XFINIUM.PDF는 HTML/CSS를 직접 PDF로 변환할 수 없습니다. 낮은 수준의 도형 원시로 프로그래밍적으로 PDF를 생성하는 데 중점을 두고 있으며, 광범위한 HTML-to-PDF 기능이 필요한 프로젝트에는 부족할 수 있습니다.
좌표 기반 API: 페이지의 모든 요소에 대해 DrawString("text", font, brush, 50, 100)와 같은 픽셀 좌표로 수동 위치 설정이 필요합니다.
수동 글꼴 관리: PdfStandardFont 및 PdfBrush과 같은 클래스를 사용하여 글꼴 객체를 명시적으로 생성 및 관리해야 합니다.
CSS 스타일링 없음: 모던 웹 스타일링을 지원하지 않습니다. 색상, 폰트, 레이아웃은 프로그래밍적 메서드 호출을 통해 수동으로 처리해야 합니다.
JavaScript 렌더링 없음: 정적 콘텐츠만 가능합니다. XFINIUM.PDF는 동적 웹 콘텐츠를 렌더링하거나 JavaScript를 실행할 수 없습니다.
복잡한 텍스트 레이아웃: 간단한 단일 라인 텍스트를 초과하는 모든 경우에 대한 수동 텍스트 측정 및 래핑 계산이 필요합니다.
제한된 커뮤니티 리소스: 주류 솔루션과 비교하여 예제 및 튜토리얼 같은 커뮤니티 제공 리소스가 부족하여 신규 사용자가 시작하는 데 어려움을 겪을 수 있습니다.
핵심 문제: 그래픽 API vs HTML
XFINIUM.PDF는 문서 디자이너가 아닌 그래픽 프로그래머처럼 생각하도록 강요합니다:
// XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, 50, 50);
page.Graphics.DrawString("Customer:", labelFont, brush, 50, 80);
page.Graphics.DrawString(customer.Name, valueFont, brush, 120, 80);
// ... hundreds of lines for a simple document
// XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, 50, 50);
page.Graphics.DrawString("Customer:", labelFont, brush, 50, 80);
page.Graphics.DrawString(customer.Name, valueFont, brush, 120, 80);
// ... hundreds of lines for a simple document
' XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, 50, 50)
page.Graphics.DrawString("Customer:", labelFont, brush, 50, 80)
page.Graphics.DrawString(customer.Name, valueFont, brush, 120, 80)
' ... hundreds of lines for a simple document
IronPDF는 익숙한 HTML/CSS를 사용합니다:
// IronPDF: Declarative HTML
var html = @"<h1>Invoice</h1><p><b>Customer:</b> " + customer.Name + "</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Declarative HTML
var html = @"<h1>Invoice</h1><p><b>Customer:</b> " + customer.Name + "</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF: Declarative HTML
Dim html As String = "<h1>Invoice</h1><p><b>Customer:</b> " & customer.Name & "</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
IronPDFvs XFINIUM.PDF: 기능 비교
구조적 차이를 이해하면 기술 결정을 내리는데 이주 투자를 평가하는데 도움이 됩니다:
| 기능 | XFINIUM.PDF | IronPDF |
|---|---|---|
| HTML to PDF | 제한된 HTML 지원으로 프로그램 기반 PDF 생성에 중점을 둡니다. | 포괄적인 지원을 받는 전체 HTML-to-PDF 변환 |
| 커뮤니티 및 지원 | 작은 커뮤니티로 온라인 리소스가 적습니다. | 방대한 문서 및 튜토리얼이 있는 대규모 커뮤니티 |
| 라이선스 | 개발자 기반 라이선스를 통한 상업적 제공 | 상업적 |
| Cross-Platform Support | 강력한 크로스 플랫폼 기능 | 크로스 플랫폼 운영도 지원 |
| CSS 지원 | 아니요 | 전체 CSS3 |
| JavaScript | 아니요 | 전체 ES2024 |
| 플렉스박스/그리드 | 아니요 | 예 |
| 자동 레이아웃 | 아니요 | 예 |
| 자동 페이지 매김 | 아니요 | 예 |
| 수동 배치 | 필요함 | 선택적 (CSS 위치) |
| 학습 곡선 | 높음 (좌표 시스템) | 낮음 (HTML/CSS) |
| 코드 다양성 | 매우 높음 | 낮음 |
빠른 시작: XFINIUM.PDF에서 IronPDF로 마이그레이션
이러한 기본 단계를 통해 즉시 이주를 시작할 수 있습니다.
1단계: NuGet 패키지 교체
XFINIUM.PDF 제거:
# Remove XFINIUM.PDF
dotnet remove package Xfinium.Pdf
# Remove XFINIUM.PDF
dotnet remove package Xfinium.Pdf
IronPDF 설치하세요:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
단계 2: 네임스페이스 업데이트
XFINIUM.PDF 네임스페이스를 IronPdf 네임스페이스로 교체:
// Before (XFINIUM.PDF)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Content;
using Xfinium.Pdf.FlowDocument;
// After (IronPDF)
using IronPdf;
// Before (XFINIUM.PDF)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Content;
using Xfinium.Pdf.FlowDocument;
// After (IronPDF)
using IronPdf;
Imports IronPdf
단계 3: 라이선스 초기화
애플리케이션 시작 시 라이선스 초기화를 추가합니다:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
코드 마이그레이션 예제
HTML을 PDF로 변환
가장 기본적인 작업은 이러한 .NET PDF 라이브러리 간의 복잡성 차이를 나타냅니다.
XFINIUM.PDF 접근법:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Actions;
using Xfinium.Pdf.FlowDocument;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfFlowDocument flowDocument = new PdfFlowDocument();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
PdfFlowContent content = new PdfFlowContent();
content.AppendHtml(html);
flowDocument.AddContent(content);
flowDocument.RenderDocument(document);
document.Save("output.pdf");
}
}
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Actions;
using Xfinium.Pdf.FlowDocument;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfFlowDocument flowDocument = new PdfFlowDocument();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
PdfFlowContent content = new PdfFlowContent();
content.AppendHtml(html);
flowDocument.AddContent(content);
flowDocument.RenderDocument(document);
document.Save("output.pdf");
}
}
Imports Xfinium.Pdf
Imports Xfinium.Pdf.Actions
Imports Xfinium.Pdf.FlowDocument
Imports System.IO
Module Program
Sub Main()
Dim document As New PdfFixedDocument()
Dim flowDocument As New PdfFlowDocument()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"
Dim content As New PdfFlowContent()
content.AppendHtml(html)
flowDocument.AddContent(content)
flowDocument.RenderDocument(document)
document.Save("output.pdf")
End Sub
End Module
IronPDF 접근법:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
XFINIUM.PDF는 PdfFixedDocument, PdfFlowDocument, PdfFlowContent 객체를 생성하고, AppendHtml()을 호출하며, 흐름 문서에 콘텐츠를 추가하고, 고정 문서로 렌더링한 후 저장해야 합니다. IronPDF는 이를 세 줄로 단순화합니다: 렌더러 생성, HTML 렌더링, 저장.
고급 HTML에서 PDF로의 시나리오는 HTML to PDF 변환 가이드를 참조하십시오.
여러 PDF 병합
PDF 병합은 API 복잡성의 차이를 명확히 보여줍니다.
XFINIUM.PDF 접근법:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument output = new PdfFixedDocument();
FileStream file1 = File.OpenRead("document1.pdf");
PdfFixedDocument pdf1 = new PdfFixedDocument(file1);
FileStream file2 = File.OpenRead("document2.pdf");
PdfFixedDocument pdf2 = new PdfFixedDocument(file2);
for (int i = 0; i < pdf1.Pages.Count; i++)
{
output.Pages.Add(pdf1.Pages[i]);
}
for (int i = 0; i < pdf2.Pages.Count; i++)
{
output.Pages.Add(pdf2.Pages[i]);
}
output.Save("merged.pdf");
file1.Close();
file2.Close();
}
}
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument output = new PdfFixedDocument();
FileStream file1 = File.OpenRead("document1.pdf");
PdfFixedDocument pdf1 = new PdfFixedDocument(file1);
FileStream file2 = File.OpenRead("document2.pdf");
PdfFixedDocument pdf2 = new PdfFixedDocument(file2);
for (int i = 0; i < pdf1.Pages.Count; i++)
{
output.Pages.Add(pdf1.Pages[i]);
}
for (int i = 0; i < pdf2.Pages.Count; i++)
{
output.Pages.Add(pdf2.Pages[i]);
}
output.Save("merged.pdf");
file1.Close();
file2.Close();
}
}
Imports Xfinium.Pdf
Imports System.IO
Module Program
Sub Main()
Dim output As New PdfFixedDocument()
Dim file1 As FileStream = File.OpenRead("document1.pdf")
Dim pdf1 As New PdfFixedDocument(file1)
Dim file2 As FileStream = File.OpenRead("document2.pdf")
Dim pdf2 As New PdfFixedDocument(file2)
For i As Integer = 0 To pdf1.Pages.Count - 1
output.Pages.Add(pdf1.Pages(i))
Next
For i As Integer = 0 To pdf2.Pages.Count - 1
output.Pages.Add(pdf2.Pages(i))
Next
output.Save("merged.pdf")
file1.Close()
file2.Close()
End Sub
End Module
IronPDF 접근법:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
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");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
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");
}
}
Imports IronPdf
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Class
XFINIUM.PDF는 출력 문서 생성, 파일 스트림 열기, 각 문서 로드, 페이지를 하나씩 수동으로 순회 및 추가, 저장, 그리고 스트림 닫기를 필요로 합니다. IronPDF는 모든 복잡성을 내부에서 처리하는 단일 PdfDocument.Merge() 메서드를 제공합니다.
추가 병합 옵션을 위해 PDF 병합 문서를 탐색하십시오.
텍스트 및 이미지로 PDF 생성하기
혼합 콘텐츠가 포함된 문서는 기본 패러다임의 차이를 보여줍니다.
XFINIUM.PDF 접근법:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Core;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();
PdfStandardFont font = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
PdfBrush brush = new PdfBrush(PdfRgbColor.Black);
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);
FileStream imageStream = File.OpenRead("image.jpg");
PdfJpegImage image = new PdfJpegImage(imageStream);
page.Graphics.DrawImage(image, 50, 100, 200, 150);
imageStream.Close();
document.Save("output.pdf");
}
}
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Core;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();
PdfStandardFont font = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
PdfBrush brush = new PdfBrush(PdfRgbColor.Black);
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);
FileStream imageStream = File.OpenRead("image.jpg");
PdfJpegImage image = new PdfJpegImage(imageStream);
page.Graphics.DrawImage(image, 50, 100, 200, 150);
imageStream.Close();
document.Save("output.pdf");
}
}
Imports Xfinium.Pdf
Imports Xfinium.Pdf.Graphics
Imports Xfinium.Pdf.Core
Imports System.IO
Class Program
Shared Sub Main()
Dim document As New PdfFixedDocument()
Dim page As PdfPage = document.Pages.Add()
Dim font As New PdfStandardFont(PdfStandardFontFace.Helvetica, 24)
Dim brush As New PdfBrush(PdfRgbColor.Black)
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50)
Dim imageStream As FileStream = File.OpenRead("image.jpg")
Dim image As New PdfJpegImage(imageStream)
page.Graphics.DrawImage(image, 50, 100, 200, 150)
imageStream.Close()
document.Save("output.pdf")
End Sub
End Class
IronPDF 접근법:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string imageBase64 = Convert.ToBase64String(File.ReadAllBytes("image.jpg"));
string html = $@"
<html>
<body>
<h1>Sample PDF Document</h1>
<img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string imageBase64 = Convert.ToBase64String(File.ReadAllBytes("image.jpg"));
string html = $@"
<html>
<body>
<h1>Sample PDF Document</h1>
<img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim imageBase64 As String = Convert.ToBase64String(File.ReadAllBytes("image.jpg"))
Dim html As String = $"
<html>
<body>
<h1>Sample PDF Document</h1>
<img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
XFINIUM.PDF는 문서를 생성하고, 페이지를 추가하고, 글꼴 및 브러시 객체를 생성하며, 특정 좌표에 텍스트를 그린 후 이미지 스트림을 열고, PdfJpegImage을 생성하여 이미지의 좌표와 크기로 이미지를 그린 후 스트림을 닫고 저장해야 합니다. IronPDF는 내장된 base64 이미지를 포함한 표준 HTML을 사용하며, 이는 웹 개발자가 매일 사용하는 방식입니다.
XFINIUM.PDF API를 IronPDF로 매핑한 참고자료
이 매핑은 직접적인 API 대응을 보여주어 마이그레이션을 가속화합니다:
| XFINIUM.PDF | IronPDF |
|---|---|
PdfFixedDocument |
ChromePdfRenderer |
PdfPage |
자동 |
page.Graphics.DrawString() |
HTML 텍스트 요소 |
page.Graphics.DrawImage() |
<img> 태그 |
page.Graphics.DrawLine() |
CSS border 또는 <hr> |
page.Graphics.DrawRectangle() |
CSS border on <div> |
PdfStandardFont |
CSS font-family |
PdfRgbColor |
CSS color |
PdfBrush |
CSS 속성 |
PdfJpegImage |
<img> 태그 with base64 |
document.Save(stream) |
pdf.SaveAs() 또는 pdf.BinaryData |
PdfFlowDocument |
RenderHtmlAsPdf() |
PdfFlowContent.AppendHtml() |
RenderHtmlAsPdf() |
일반적인 마이그레이션 문제와 해결책
문제 1: 좌표 기반 레이아웃
XFINIUM.PDF: 모든 것은 수동 위치 지정으로 정확한 X,Y 좌표를 요구합니다.
해결책: HTML/CSS 흐름 레이아웃을 사용하세요. 필요할 때 절대 위치를 위해 CSS를 사용하세요:
.positioned-element {
position: absolute;
top: 100px;
left: 50px;
}
문제 2: 폰트 객체 관리
XFINIUM.PDF: 각 글꼴에 대해 PdfStandardFont 또는 PdfUnicodeTrueTypeFont 객체를 생성합니다.
해결책: CSS 폰트 패밀리를 사용하세요—폰트는 자동으로 처리됩니다:
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; }
</style>
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; }
</style>
문제 3: 색상 처리
XFINIUM.PDF: 색상에 대해 PdfRgbColor 및 PdfBrush 객체를 생성합니다.
해결책: 표준 CSS 색상을 사용하세요:
.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }
.info { color: rgba(0, 0, 255, 0.8); }
문제 4: 수동 페이지 나누기
XFINIUM.PDF: Y 위치를 추적하고 컨텐츠가 넘치면 새 페이지를 수동으로 만듭니다.
해결책: IronPDF가 자동 페이지 나누기를 처리합니다. 명시적인 제어를 위해 CSS를 사용하세요:
.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }
문제 5: 이미지 로딩
XFINIUM.PDF: 파일 스트림을 열고, PdfJpegImage 객체를 생성하여 좌표에 그린 후 스트림을 닫습니다.
해결책: HTML <img> 태그를 파일 경로나 base64 데이터로 사용합니다:
<img src="image.jpg" width="200" height="150" />
<img src="data:image/jpeg;base64,..." />
<img src="image.jpg" width="200" height="150" />
<img src="data:image/jpeg;base64,..." />
XFINIUM.PDF 마이그레이션 체크리스트
이동 전 작업
XFINIUM.PDF 사용을 식별하기 위해 코드베이스를 감사하세요:
grep -r "using Xfinium.Pdf" --include="*.cs" .
grep -r "Graphics.DrawString\|Graphics.DrawImage\|Graphics.DrawLine" --include="*.cs" .
grep -r "using Xfinium.Pdf" --include="*.cs" .
grep -r "Graphics.DrawString\|Graphics.DrawImage\|Graphics.DrawLine" --include="*.cs" .
좌표 기반 레이아웃을 문서화하고 모든 X,Y 위치 값을 기록하세요. 글꼴 및 색상 객체 확인 (PdfStandardFont, PdfRgbColor, PdfBrush). 병합된 PDF 워크플로를 PdfFixedDocument.Pages.Add()을 사용하여 매핑합니다.
코드 업데이트 작업
- Xfinium.Pdf NuGet 패키지를 제거하세요
- IronPdf NuGet 패키지를 설치하세요
- 네임스페이스 가져오기를
Xfinium.Pdf에서IronPdf로 업데이트 DrawString()호출을 HTML 텍스트 요소로 변환DrawImage()호출을 HTML<img>태그로 변환DrawRectangle()및DrawLine()을 CSS 테두리로 변환PdfStandardFont을 CSSfont-family로 교체PdfRgbColor및PdfBrush을 CSS 색상으로 교체- 페이지 루프 병합을
PdfDocument.Merge()로 교체 - 시작 시IronPDF라이선스 초기화를 추가하십시오
마이그레이션 후 테스트
마이그레이션 후 다음 측면을 검증:
- 시각적 출력이 예상과 일치하는지 비교하세요
- 새 HTML/CSS 접근 방식으로 텍스트 렌더링을 확인하세요
- CSS를 사용하여 이미지 위치를 확인하세요
- 페이지 나누기가 예상대로 발생하는지 테스트하세요
- PDF 보안 설정이 올바르게 적용되었는지 확인하세요
- 모든 대상 플랫폼에서 테스트
IronPDF로 마이그레이션할 때의 주요 이점
XFINIUM.PDF에서 IronPDF로 이동하면 몇 가지 중요한 이점을 제공합니다:
HTML 기반 컨텐츠 생성: 웹 개발자는 기존의 HTML 및 CSS 기술을 활용할 수 있습니다. 좌표 기반 드로잉 API를 배우거나 폰트와 브러시 객체를 관리할 필요가 없습니다.
자동 레이아웃: 텍스트 감싸기, 페이지 화, 플로우 레이아웃은 자동으로 수행됩니다. 요소 위치나 페이지 나누기의 수동 계산이 필요하지 않습니다.
현대적인 CSS 지원: Flexbox와 Grid 레이아웃을 포함한 전체 CSS3 지원. 반응형 디자인은 PDF로 직접 변환됩니다.
단순화된 PDF 작업: 일반 작업에 대한 단일 메서드 호출이 PdfDocument.Merge()와 같은 복잡한 페이지 반복 루프를 대체합니다.
활발한 개발: .NET 10 및 C# 14의 채택이 2026년까지 증가함에 따라 IronPDF의 정기 업데이트는 현재 및 미래의 .NET 버전과의 호환성을 보장합니다.
풍부한 문서화: XFINIUM.PDF의 소규모 생태계와 비교하여 종합적인 문서화, 튜토리얼, 지원 리소스를 갖춘 대규모 커뮤니티.

