C#에서 XFINIUM.PDF에서 IronPDF로 마이그레이션하는 방법
XFINIUM.PDF는 O2 Solutions에 의해 개발된 상업적 크로스 플랫폼 PDF 라이브러리로, C#에서 프로그래밍 방식으로 PDF를 생성하고 편집할 도구를 제공합니다. 이를 두 가지 에디션으로 제공합니다 — Generator (PDF 생성 및 편집)와 Viewer (Generator 기능 플러스 렌더링/디스플레이). 이 라이브러리는 NuGet에서 Xfinium.Pdf.NetStandard 및 Xfinium.Pdf.NetCore로 배포됩니다. 좌표 기반 그래픽 프로그래밍 모델은 문서 중심 어플리케이션을 구축하는 팀에게 마찰을 일으킬 수 있으므로 대부분의 레이아웃 작업은 픽셀 좌표를 사용하여 요소를 수동으로 배치해야 합니다.
이 가이드는 .NET 개발자가 이러한 전환을 평가할 수 있도록 XFINIUM.PDF에서 IronPDF로의 마이그레이션 경로를 단계별 지침, 코드 비교 및 실용적인 예제와 함께 제공합니다.
XFINIUM.PDF에서 마이그레이션해야 하는 이유
XFINIUM.PDF는 좌표 기반 그래픽 프로그래밍에 의존하는 저수준의 PDF 라이브러리로, 즉 개발자는 대부분의 요소를 페이지에 직접 배치해야 함을 의미합니다. 데이터팀이 마이그레이션을 고려하는 일반적인 이유:
네이티브 HTML 엔진 없음: XFINIUM.PDF에는 내장 HTML to PDF 변환기가 없습니다. 공급업체는 제한된 태그 집합(p, font, b, i, u, ul, li)을 지원하는 샘플 XHTML 워커를 제공하지만, 이 기능은 CSS를 파싱하거나 JavaScript를 실행하지 않아 전체 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)
IronPDF vs XFINIUM.PDF: 기능 비교
구조적 차이를 이해하면 기술 결정을 내리는데 이주 투자를 평가하는데 도움이 됩니다:
| 기능 | XFINIUM.PDF | IronPDF |
|---|---|---|
| HTML to PDF | 네이티브 엔진 없음; 샘플 전용 XHTML 변환기 (제한된 태그, CSS/JS 없음) | Chrome (CSS3 + JavaScript)와 함께 전체 HTML to PDF 변환 |
| 커뮤니티 및 지원 | 작은 커뮤니티로 온라인 리소스가 적습니다. | 방대한 문서 및 튜토리얼이 있는 대규모 커뮤니티 |
| 라이선스 | 개발자 기반 라이선스를 통한 상업적 제공 | 상업적 |
| Cross-Platform Support | 강력한 크로스 플랫폼 기능 | 크로스 플랫폼 운영도 지원 |
| CSS 지원 | 아니요 | 전체 CSS3 |
| JavaScript | 아니요 | 전체 ES2024 |
| 플렉스박스/그리드 | 아니요 | 예 |
| 자동 레이아웃 | 아니요 | 예 |
| 자동 페이지 매김 | 아니요 | 예 |
| 수동 배치 | 필요함 | 선택적 (CSS 위치) |
| 학습 곡선 | 높음 (좌표 시스템) | 낮음 (HTML/CSS) |
| 코드 다양성 | 매우 높음 | 낮음 |
빠른 시작: XFINIUM.PDF에서 IronPDF로 마이그레이션
이러한 기본 단계를 통해 즉시 이주를 시작할 수 있습니다.
1단계: NuGet 패키지 교체
XFINIUM.PDF 제거 (실제 NuGet ID는 플랫폼별):
# Remove XFINIUM.PDF
dotnet remove package Xfinium.Pdf.NetStandard
# or: dotnet remove package Xfinium.Pdf.NetCore
# Remove XFINIUM.PDF
dotnet remove package Xfinium.Pdf.NetStandard
# or: dotnet remove package Xfinium.Pdf.NetCore
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.NetStandard (or .NetCore)
// XFINIUM.PDF has no native HTML-to-PDF engine. Flow content accepts
// styled text, headings, tables and images - not HTML. The vendor sample
// converter parses limited XHTML (p, font, b, i, u, ul, li) into
// PdfFormattedContent; full CSS/JS rendering is not supported.
using Xfinium.Pdf;
using Xfinium.Pdf.FlowDocument;
using Xfinium.Pdf.Graphics;
using System.IO;
class Program
{
static void Main()
{
PdfFlowDocument flowDocument = new PdfFlowDocument();
flowDocument.AddContent(new PdfFlowHeadingContent(
"Hello World",
new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 18)));
flowDocument.AddContent(new PdfFlowTextContent(
"This is a PDF generated from text content (not HTML).",
new PdfStandardFont(PdfStandardFontFace.Helvetica, 12)));
using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
{
flowDocument.Save(fs);
}
}
}
// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
// XFINIUM.PDF has no native HTML-to-PDF engine. Flow content accepts
// styled text, headings, tables and images - not HTML. The vendor sample
// converter parses limited XHTML (p, font, b, i, u, ul, li) into
// PdfFormattedContent; full CSS/JS rendering is not supported.
using Xfinium.Pdf;
using Xfinium.Pdf.FlowDocument;
using Xfinium.Pdf.Graphics;
using System.IO;
class Program
{
static void Main()
{
PdfFlowDocument flowDocument = new PdfFlowDocument();
flowDocument.AddContent(new PdfFlowHeadingContent(
"Hello World",
new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 18)));
flowDocument.AddContent(new PdfFlowTextContent(
"This is a PDF generated from text content (not HTML).",
new PdfStandardFont(PdfStandardFontFace.Helvetica, 12)));
using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
{
flowDocument.Save(fs);
}
}
}
Imports Xfinium.Pdf
Imports Xfinium.Pdf.FlowDocument
Imports Xfinium.Pdf.Graphics
Imports System.IO
Module Program
Sub Main()
Dim flowDocument As New PdfFlowDocument()
flowDocument.AddContent(New PdfFlowHeadingContent(
"Hello World",
New PdfStandardFont(PdfStandardFontFace.HelveticaBold, 18)))
flowDocument.AddContent(New PdfFlowTextContent(
"This is a PDF generated from text content (not HTML).",
New PdfStandardFont(PdfStandardFontFace.Helvetica, 12)))
Using fs As New FileStream("output.pdf", FileMode.Create)
flowDocument.Save(fs)
End Using
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는 PdfFlowDocument을 생성하고 각 스타일에 대해 PdfStandardFont 객체를 인스턴스화하며, PdfFlowHeadingContent 또는 PdfFlowTextContent으로 각 콘텐츠 조각을 구축하여 플로우 문서에 추가한 후 FileStream를 통해 저장해야 합니다. 흐름 문서 API는 HTML 마크업이 아닌 형식화된 콘텐츠 객체를 수락합니다. IronPDF는 이를 세 줄로 간소화합니다: 렌더러 생성, HTML 렌더링, 저장.
고급 HTML에서 PDF로의 시나리오는 HTML to PDF 변환 가이드를 참조하십시오.
여러 PDF 병합
PDF 병합은 API 복잡성의 차이를 명확히 보여줍니다.
XFINIUM.PDF 접근법:
// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
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.NetStandard (or .NetCore)
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.NetStandard (or .NetCore)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
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(new PdfRgbColor(0, 0, 0));
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);
using (FileStream imageStream = File.OpenRead("image.jpg"))
{
PdfJpegImage image = new PdfJpegImage(imageStream);
page.Graphics.DrawImage(image, 50, 100, 200, 150);
}
document.Save("output.pdf");
}
}
// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
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(new PdfRgbColor(0, 0, 0));
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);
using (FileStream imageStream = File.OpenRead("image.jpg"))
{
PdfJpegImage image = new PdfJpegImage(imageStream);
page.Graphics.DrawImage(image, 50, 100, 200, 150);
}
document.Save("output.pdf");
}
}
Imports Xfinium.Pdf
Imports Xfinium.Pdf.Graphics
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(New PdfRgbColor(0, 0, 0))
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50)
Using imageStream As FileStream = File.OpenRead("image.jpg")
Dim image As New PdfJpegImage(imageStream)
page.Graphics.DrawImage(image, 50, 100, 200, 150)
End Using
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 |
PdfStandardFont |
CSS font-family |
PdfRgbColor |
CSS color |
PdfBrush |
CSS 속성 |
PdfJpegImage |
베이스64 태그 |
document.Save(stream) |
pdf.SaveAs() 또는 pdf.BinaryData |
PdfFlowDocument |
RenderHtmlAsPdf() |
| 벤더 샘플 XHTML 변환기 | 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 객체를 생성하고, 좌표에 그린 후, 스트림을 닫습니다.
해결책: 파일 경로나 베이스64 데이터가 있는 HTML 태그를 사용하세요:
<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 패키지를 제거하세요 2.IronPDF NuGet Install-Package
- 네임스페이스 가져오기를
Xfinium.Pdf에서IronPdf로 업데이트합니다. DrawString()호출을 HTML 텍스트 요소로 변환합니다.DrawImage()호출을 HTML태그로 변환합니다.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()와 같은 일반 작업에 대한 단일 메소드 호출은 복잡한 페이지 반복 루프를 대체합니다.
활발한 개발: IronPDF의 정기 업데이트는 최신 .NET 버전 및 C# 언어 릴리스와 발맞춰 업데이트됩니다.
풍부한 문서화: XFINIUM.PDF의 소규모 생태계와 비교하여 종합적인 문서화, 튜토리얼, 지원 리소스를 갖춘 대규모 커뮤니티.

