푸터 콘텐츠로 바로가기
마이그레이션 가이드

C#에서 XFINIUM.PDF에서 IronPDF로 마이그레이션하는 방법

XFINIUM.PDF는 O2 Solutions에 의해 개발된 상업적 크로스 플랫폼 PDF 라이브러리로, C#에서 프로그래밍 방식으로 PDF를 생성하고 편집할 도구를 제공합니다. 이를 두 가지 에디션으로 제공합니다 — Generator (PDF 생성 및 편집)와 Viewer (Generator 기능 플러스 렌더링/디스플레이). 이 라이브러리는 NuGet에서 Xfinium.Pdf.NetStandardXfinium.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)와 같은 픽셀 좌표로 수동 위치 조정을 요구합니다.

수동 글꼴 관리: PdfStandardFontPdfBrush와 같은 클래스를 사용하여 글꼴 객체를 명시적으로 생성하고 관리해야 합니다.

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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
SHELL

IronPDF 설치하세요:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

단계 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
$vbLabelText   $csharpLabel

단계 3: 라이선스 초기화

애플리케이션 시작 시 라이선스 초기화를 추가합니다:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

코드 마이그레이션 예제

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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>
HTML

문제 3: 색상 처리

XFINIUM.PDF: 색상을 위해 PdfRgbColorPdfBrush 객체를 생성합니다.

해결책: 표준 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,..." />
HTML

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" .
SHELL

좌표 기반 레이아웃을 문서화하고 모든 X,Y 위치 값을 기록하세요. 글꼴 및 색상 객체를 식별합니다 ( PdfStandardFont, PdfRgbColor, PdfBrush ). 합쳐진 PDF 워크플로를 PdfFixedDocument.Pages.Add()을 사용하여 매핑합니다.

코드 업데이트 작업

  1. Xfinium.Pdf NuGet 패키지를 제거하세요 2.IronPDF NuGet Install-Package
  2. 네임스페이스 가져오기를 Xfinium.Pdf에서 IronPdf로 업데이트합니다.
  3. DrawString() 호출을 HTML 텍스트 요소로 변환합니다.
  4. DrawImage() 호출을 HTML 태그로 변환합니다.
  5. DrawRectangle()DrawLine()를 CSS 테두리로 변환합니다.
  6. PdfStandardFont를 CSS font-family로 교체합니다.
  7. PdfRgbColorPdfBrush를 CSS 색상으로 교체합니다.
  8. 페이지 루프 병합을 PdfDocument.Merge()로 교체합니다.
  9. 시작 시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의 소규모 생태계와 비교하여 종합적인 문서화, 튜토리얼, 지원 리소스를 갖춘 대규모 커뮤니티.

참고해 주세요Xfinium PDF는 해당 소유자의 등록 상표입니다. 이 사이트는 XFINIUM Software와 관련이 없으며, 그 어떠한 지지나 후원을 받지 않습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

Curtis Chau
기술 문서 작성자

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

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해