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

C#에서 VectSharp에서 IronPDF로 마이그레이션하는 방법

VectSharp는 .NET 생태계에서 과학적 시각화와 기술 일러스트레이션에 특히 가치 있는 벡터 그래픽 라이브러리로 자리 잡았습니다. 그러나 개발 팀이 비즈니스 문서, 보고서, 송장 또는 HTML 기반 콘텐츠를 생성해야 할 때, VectSharp의 그래픽 중심 패러다임은 상당한 마찰을 만듭니다. 라이브러리는 그림과 플롯을 만드는 과학자들을 위해 설계되었으며, 문서를 생성하는 개발자를 위한 것이 아닙니다.

이 가이드는 VectSharp에서 IronPDF로의 완전한 마이그레이션 경로를 제공하며, 전문 .NET 개발자가 이 전환을 평가할 수 있도록 단계별 지침, 코드 비교, 실용적인 예제를 포함합니다.

왜 VectSharp에서 마이그레이션 해야 하는가

VectSharp는 다이어그램, 차트 및 기술 일러스트레이션을 만들기 위해 설계된 과학적 시각화 및 벡터 그래픽 라이브러리입니다. 문서 생성을 위해 설계되지 않았으며, PDF를 출력하는 드로잉 라이브러리입니다. 개발 팀이 마이그레이션을 고려하는 주요 이유는 다음과 같습니다:

과학집중 전용: VectSharp는 데이터 시각화 및 플롯팅을 위해 설계되었으며, 송장, 보고서, 증명서와 같은 비즈니스 문서를 위해 설계되지 않았습니다.

HTML 지원 없음: VectSharp는 HTML 또는 CSS를 PDF로 변환할 수 없습니다. 모든 요소는 벡터 그래픽 명령을 사용하여 수동으로 그려야 합니다.

좌표 기반 API: 모든 요소는 정확한 X,Y 좌표로 배치해야 합니다. 자동 레이아웃, 흐름 또는 텍스트 래핑이 없습니다.

CSS 스타일링 없음: 모든 스타일링은 메서드 호출을 통해 프로그래매틱하게 이루어집니다. 웹 개발자는 기존 CSS 지식 활용이 불가능합니다.

JavaScript 없음: VectSharp는 동적 웹 콘텐츠, 인터랙티브 차트 또는 JavaScript 기반 시각화를 렌더링할 수 없습니다.

텍스트 레이아웃 없음: 자동 텍스트 래핑, 페이지 나누기, 흐름 레이아웃이 제공되지 않습니다. 개발자는 수동으로 텍스트 위치와 페이지 구분을 계산해야 합니다.

그래픽 우선 패러다임: 이 라이브러리는 다이어그램을 위해 설계되었으며, 보고서나 송장을 위해 설계되지 않았습니다. 문서 생성은 광범위한 수작업을 요구합니다.

핵심 문제: 그래픽 라이브러리 vs 문서 생성기

VectSharp는 모든 요소를 수동으로 벡터 그림을 그려야 합니다:

// VectSharp:수동vector drawing for every element
Page page = new Page(595, 842);
Graphics graphics = page.Graphics;
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));
graphics.FillText(60, 70, "Invoice", new Font(new FontFamily("Arial"), 20), Colours.White);
// ... continue drawing every single element manually
// VectSharp:수동vector drawing for every element
Page page = new Page(595, 842);
Graphics graphics = page.Graphics;
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));
graphics.FillText(60, 70, "Invoice", new Font(new FontFamily("Arial"), 20), Colours.White);
// ... continue drawing every single element manually
' VectSharp:수동vector drawing for every element
Dim page As New Page(595, 842)
Dim graphics As Graphics = page.Graphics
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255))
graphics.FillText(60, 70, "Invoice", New Font(New FontFamily("Arial"), 20), Colours.White)
' ... continue drawing every single element manually
$vbLabelText   $csharpLabel

IronPDF는 HTML—범용 문서 형식을 사용합니다:

// IronPDF: Declarative HTML for document creation
var html = "<h1>Invoice</h1><p>Customer: Acme Corp</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Declarative HTML for document creation
var html = "<h1>Invoice</h1><p>Customer: Acme Corp</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF: Declarative HTML for document creation
Dim html As String = "<h1>Invoice</h1><p>Customer: Acme Corp</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

IronPDF대 VectSharp: 기능 비교

구조적 차이를 이해하면 기술 결정을 내리는데 이주 투자를 평가하는데 도움이 됩니다:

기능 VectSharp IronPDF
주요 사용 벡터 그래픽 문서 생성
PDF 출력
HTML 지원 아니요
라이선스 LGPL 상업적
오픈 소스 부분적으로 (상업적 기능)
최적의 용도 과학적 시각화 일반 PDF 문서
커스터마이제이션 그래픽에 제한 광범위, 문서 관련
HTML to PDF 아니요 전체 Chromium
URL을 PDF로 아니요
CSS 지원 아니요 전체 CSS3
JavaScript 아니요 전체 ES2024
자동 레이아웃 아니요
자동 페이지 매김 아니요
텍스트 줄바꿈 수동 자동
PDF 병합 아니요
PDF 분할 아니요
비밀번호 보호 아니요
디지털 서명 아니요
학습 곡선 높음 (좌표) 낮음 (HTML/CSS)
코드 다양성 매우 높음 낮음

빠른 시작: VectSharp에서 IronPDF로의 마이그레이션

이러한 기본 단계를 통해 즉시 이주를 시작할 수 있습니다.

단계 1: NuGet 패키지 교체

모든VectSharp패키지를 제거합니다:

# RemoveVectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
# RemoveVectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
SHELL

IronPDF 설치하세요:

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

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

VectSharp 네임스페이스를 IronPdf 네임스페이스로 교체합니다:

// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;

// After (IronPDF)
using IronPdf;
// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;

// 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로 변환

VectSharp는 HTML에서 PDF로 변환을 지원하지 않습니다. 이 기본 역량 차이가 많은 마이그레이션 결정을 주도합니다.

VectSharp 접근 방식:

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;
using System.IO;

class Program
{
    static void Main()
    {
        //VectSharpdoesn't directly support HTML to PDF
        // It requires manual creation of graphics objects
        Document doc = new Document();
        Page page = new Page(595, 842); // A4 size
        Graphics graphics = page.Graphics;

        graphics.FillText(100, 100, "Hello from VectSharp", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));

        doc.Pages.Add(page);
        doc.SaveAsPDF("output.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;
using System.IO;

class Program
{
    static void Main()
    {
        //VectSharpdoesn't directly support HTML to PDF
        // It requires manual creation of graphics objects
        Document doc = new Document();
        Page page = new Page(595, 842); // A4 size
        Graphics graphics = page.Graphics;

        graphics.FillText(100, 100, "Hello from VectSharp", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));

        doc.Pages.Add(page);
        doc.SaveAsPDF("output.pdf");
    }
}
Imports VectSharp
Imports VectSharp.PDF
Imports VectSharp.SVG
Imports System.IO

Module Program
    Sub Main()
        ' VectSharp doesn't directly support HTML to PDF
        ' It requires manual creation of graphics objects
        Dim doc As New Document()
        Dim page As New Page(595, 842) ' A4 size
        Dim graphics As Graphics = page.Graphics

        graphics.FillText(100, 100, "Hello from VectSharp", 
            New Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24))

        doc.Pages.Add(page)
        doc.SaveAsPDF("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF 접근법:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

VectSharp는 Document, Page, Graphics 객체를 생성해야 하며, 정확한 좌표와 글꼴 객체를 사용하여 텍스트를 수동으로 배치합니다. IronPDF는 전체 CSS 스타일 지원과 함께 HTML을 직접 렌더링합니다.

고급 HTML에서 PDF로의 시나리오는 HTML to PDF 변환 가이드를 참조하십시오.

다중 페이지 문서 생성

다중 페이지 문서는 이 .NET PDF 라이브러리들 간의 구조적 차이를 드러냅니다.

VectSharp 접근 방식:

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();

        // Page 1
        Page page1 = new Page(595, 842);
        Graphics g1 = page1.Graphics;
        g1.FillText(50, 50, "Page 1", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g1.FillText(50, 100, "First page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page1);

        // Page 2
        Page page2 = new Page(595, 842);
        Graphics g2 = page2.Graphics;
        g2.FillText(50, 50, "Page 2", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g2.FillText(50, 100, "Second page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page2);

        doc.SaveAsPDF("multipage.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();

        // Page 1
        Page page1 = new Page(595, 842);
        Graphics g1 = page1.Graphics;
        g1.FillText(50, 50, "Page 1", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g1.FillText(50, 100, "First page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page1);

        // Page 2
        Page page2 = new Page(595, 842);
        Graphics g2 = page2.Graphics;
        g2.FillText(50, 50, "Page 2", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g2.FillText(50, 100, "Second page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page2);

        doc.SaveAsPDF("multipage.pdf");
    }
}
Imports VectSharp
Imports VectSharp.PDF
Imports System

Class Program
    Shared Sub Main()
        Dim doc As New Document()

        ' Page 1
        Dim page1 As New Page(595, 842)
        Dim g1 As Graphics = page1.Graphics
        g1.FillText(50, 50, "Page 1", New Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24))
        g1.FillText(50, 100, "First page content", New Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14))
        doc.Pages.Add(page1)

        ' Page 2
        Dim page2 As New Page(595, 842)
        Dim g2 As Graphics = page2.Graphics
        g2.FillText(50, 50, "Page 2", New Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24))
        g2.FillText(50, 100, "Second page content", New Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14))
        doc.Pages.Add(page2)

        doc.SaveAsPDF("multipage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 접근법:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Page 1</h1>
            <p>First page content</p>
            <div style='page-break-after: always;'></div>
            <h1>Page 2</h1>
            <p>Second page content</p>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("multipage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Page 1</h1>
            <p>First page content</p>
            <div style='page-break-after: always;'></div>
            <h1>Page 2</h1>
            <p>Second page content</p>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("multipage.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "
            <h1>Page 1</h1>
            <p>First page content</p>
            <div style='page-break-after: always;'></div>
            <h1>Page 2</h1>
            <p>Second page content</p>
        "

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("multipage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

VectSharp는 별도의 Page 객체와 별도의 Graphics 컨텍스트를 생성해야 하며, 각 페이지에 대한 모든 텍스트 요소를 좌표와 글꼴 객체로 수동으로 배치해야 합니다. IronPDF는 CSS page-break-after: always가 포함된 단일 HTML 문자열을 사용하여 자동으로 여러 페이지 문서를 생성합니다.

도형 및 텍스트 그리기

그래픽 기능은 VectSharp의 우수성을 보여주지만 웹 표준이 더 적은 코드로 동등한 기능성을 제공하는 경우를 보여줍니다.

VectSharp 접근 방식:

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();
        Page page = new Page(595, 842);
        Graphics graphics = page.Graphics;

        // Draw rectangle
        graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));

        // Draw circle
        GraphicsPath circle = new GraphicsPath();
        circle.Arc(400, 100, 50, 0, 2 * Math.PI);
        graphics.FillPath(circle, Colour.FromRgb(255, 0, 0));

        // Add text
        graphics.FillText(50, 200, "VectSharp Graphics", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20));

        doc.Pages.Add(page);
        doc.SaveAsPDF("shapes.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();
        Page page = new Page(595, 842);
        Graphics graphics = page.Graphics;

        // Draw rectangle
        graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));

        // Draw circle
        GraphicsPath circle = new GraphicsPath();
        circle.Arc(400, 100, 50, 0, 2 * Math.PI);
        graphics.FillPath(circle, Colour.FromRgb(255, 0, 0));

        // Add text
        graphics.FillText(50, 200, "VectSharp Graphics", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20));

        doc.Pages.Add(page);
        doc.SaveAsPDF("shapes.pdf");
    }
}
Imports VectSharp
Imports VectSharp.PDF
Imports System

Module Program
    Sub Main()
        Dim doc As New Document()
        Dim page As New Page(595, 842)
        Dim graphics As Graphics = page.Graphics

        ' Draw rectangle
        graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255))

        ' Draw circle
        Dim circle As New GraphicsPath()
        circle.Arc(400, 100, 50, 0, 2 * Math.PI)
        graphics.FillPath(circle, Colour.FromRgb(255, 0, 0))

        ' Add text
        graphics.FillText(50, 200, "VectSharp Graphics", 
            New Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20))

        doc.Pages.Add(page)
        doc.SaveAsPDF("shapes.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF 접근법:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
            <div style='width: 100px; height: 100px; background-color: red; 
                        border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
            <h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("shapes.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
            <div style='width: 100px; height: 100px; background-color: red; 
                        border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
            <h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("shapes.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()

        Dim html As String = "
            <div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
            <div style='width: 100px; height: 100px; background-color: red; 
                        border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
            <h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
        "

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("shapes.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

VectSharp는 GraphicsPath 객체를 생성하고, 정확한 수학적 매개 변수를 사용하여 Arc()를 호출하며, Colour.FromRgb()를 통해 색상을 관리해야 합니다. IronPDF는 친숙한 CSS 속성을 사용합니다: background-color, 원형을 위한 border-radius: 50%, 그리고 표준 여백을 사용합니다.

VectSharpAPI에서 IronPDF로 매핑 참조

이 매핑은 직접적인 API 대응을 보여주어 마이그레이션을 가속화합니다:

VectSharp IronPDF
Document ChromePdfRenderer
Page 자동
Graphics HTML/CSS
graphics.FillRectangle() CSS가 background-color<div>
graphics.StrokeRectangle() CSS가 border<div>
graphics.FillText() HTML 텍스트 요소
graphics.StrokePath() SVG 또는 CSS 테두리
GraphicsPath SVG <path> 요소
Colour.FromRgb() CSS 색상 값
Font / FontFamily CSS font-family
doc.SaveAsPDF() pdf.SaveAs()
수동 페이지 크기 조정 RenderingOptions.PaperSize

마이그레이션 전략

전략 1: 그리기 코드를 HTML/CSS로 변환

좌표 기반 그리기를 HTML 요소로 교체합니다:

// VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204));
graphics.FillText(110, 80, "Header", font, Colours.White);

//IronPDFHTML equivalent
<div style="
    position: absolute;
    left: 100px;
    top: 50px;
    width: 300px;
    height: 80px;
    background: rgb(0, 102, 204);
    color: white;
    padding: 10px;
">Header</div>
// VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204));
graphics.FillText(110, 80, "Header", font, Colours.White);

//IronPDFHTML equivalent
<div style="
    position: absolute;
    left: 100px;
    top: 50px;
    width: 300px;
    height: 80px;
    background: rgb(0, 102, 204);
    color: white;
    padding: 10px;
">Header</div>
' VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204))
graphics.FillText(110, 80, "Header", font, Colours.White)

' IronPDFHTML equivalent
'<div style="
'    position: absolute;
'    left: 100px;
'    top: 50px;
'    width: 300px;
'    height: 80px;
'    background: rgb(0, 102, 204);
'    color: white;
'    padding: 10px;
'">Header</div>
$vbLabelText   $csharpLabel

전략 2: 벡터 그래픽에 SVG 사용

복잡한 도형의 경우 HTML 내에 인라인 SVG를 사용합니다:

//VectSharppath
GraphicsPath path = new GraphicsPath();
path.MoveTo(100, 100);
path.LineTo(200, 50);
path.LineTo(300, 100);
path.Close();
graphics.FillPath(path, Colours.Blue);

//IronPDFSVG equivalent
<svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
//VectSharppath
GraphicsPath path = new GraphicsPath();
path.MoveTo(100, 100);
path.LineTo(200, 50);
path.LineTo(300, 100);
path.Close();
graphics.FillPath(path, Colours.Blue);

//IronPDFSVG equivalent
<svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
Imports System.Drawing.Drawing2D

'VectSharppath
Dim path As New GraphicsPath()
path.StartFigure()
path.AddLine(100, 100, 200, 50)
path.AddLine(200, 50, 300, 100)
path.CloseFigure()
graphics.FillPath(Brushes.Blue, path)

'IronPDFSVG equivalent
'<svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
$vbLabelText   $csharpLabel

전략 3: JavaScript 차트 라이브러리 사용

과학적 시각화를 위해, IronPDF는 Chart.js, D3.js, 또는 Plotly와 같은 강력한 JavaScript 라이브러리를 활용할 수 있습니다:

var html = @"
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<div id='chart'></div>
<script>
    Plotly.newPlot('chart', [{
        x: [1, 2, 3, 4],
        y: [10, 15, 13, 17],
        type: 'scatter'
    }]);
</script>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
var html = @"
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<div id='chart'></div>
<script>
    Plotly.newPlot('chart', [{
        x: [1, 2, 3, 4],
        y: [10, 15, 13, 17],
        type: 'scatter'
    }]);
</script>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
Dim html As String = "
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<div id='chart'></div>
<script>
    Plotly.newPlot('chart', [{
        x: [1, 2, 3, 4],
        y: [10, 15, 13, 17],
        type: 'scatter'
    }]);
</script>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

일반적인 마이그레이션 문제와 해결책

문제 1: 좌표 시스템 차이

VectSharp는 좌상단 기원에서 포인트를 사용하여 수동으로 배치합니다.

해결책: CSS 위치지정을 사용합니다:

.element {
    position: absolute;
    top: 50px;
    left: 100px;
}

문제 2: 폰트 객체

VectSharpFontFontFamily 객체를 프로그래밍 방식으로 생성합니다.

해결책: CSS font-family를 사용합니다:

<style>
    body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
<style>
    body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
HTML

문제 3: 색상 처리

VectSharpColour.FromRgb() 메서드 호출을 사용합니다.

해결책: CSS 색상을 사용합니다:

.header { color: rgb(0, 102, 204); background-color: #f0f0f0; }

문제 4: 그래픽 경로

VectSharpMoveTo, LineTo, Arc 메서드가 포함된 복잡한 GraphicsPath API를 사용합니다.

해결책: 벡터 그래픽에 SVG를 사용합니다:

<svg>
    <path d="M 100 100 L 200 50 L 300 100 Z" fill="blue"/>
</svg>
<svg>
    <path d="M 100 100 L 200 50 L 300 100 Z" fill="blue"/>
</svg>
HTML

VectSharp마이그레이션 체크리스트

이동 전 작업

모든VectSharp사용을 식별하기 위해 코드베이스를 감사하세요:

grep -r "using VectSharp" --include="*.cs" .
grep -r "Graphics\|FillRectangle\|FillText" --include="*.cs" .
grep -r "using VectSharp" --include="*.cs" .
grep -r "Graphics\|FillRectangle\|FillText" --include="*.cs" .
SHELL

문서 페이지 크기 ( new Page(595, 842) 패턴들 ). Colour.FromRgb()를 사용하는 색상 스킴을 주목하세요. 폰트 구성을 식별합니다. GraphicsPath을 사용하여 SVG 변환을 위한 복잡한 벡터 그래픽을 매핑하세요.

코드 업데이트 작업

1.VectSharpNuGet 패키지 제거

  1. IronPdf NuGet 패키지를 설치하세요
  2. VectSharp에서 IronPdf로 using 문을 업데이트하세요.
  3. FillRectangle 호출을 background-color가 포함된 CSS 박스로 변환하세요.
  4. FillText 호출을 CSS 스타일링이 포함된 HTML 텍스트 요소로 변환하세요.
  5. GraphicsPath 작업을 SVG <path> 요소로 변환하세요.
  6. 수동 페이지 관리를 RenderingOptions.PaperSize로 대체하세요.
  7. 시작 시 라이선스 초기화를 추가

마이그레이션 후 테스트

마이그레이션 후 다음 측면을 검증:

-VectSharp버전과IronPDF버전 간의 시각적 출력 비교

  • Colour.FromRgb() 값의 CSS 동등성을 사용하여 색상이 일치하는지 확인하세요.
  • 좌표 기반의 배치로부터 변환된 요소의 위치 정확도 확인
  • 다중 페이지 문서에 대한 페이지 나누기 테스트
  • SVG를 통해 벡터 그래픽이 올바르게 렌더링되는지 확인

IronPDF로 마이그레이션할 때의 주요 이점

VectSharp에서 IronPDF로 이동하는 것은 문서 생성에 몇 가지 이점을 제공합니다:

HTML 기반 콘텐츠: 웹 개발자는 기존의 HTML 및 CSS 기술을 활용할 수 있습니다. 좌표 기반의 그리기 API를 배울 필요가 없습니다.

자동 레이아웃: 텍스트 감싸기, 페이지 화, 플로우 레이아웃은 자동으로 수행됩니다. 요소 위치의 수동 계산이 필요하지 않습니다.

현대적인 CSS 지원: Flexbox와 Grid 레이아웃을 포함한 전체 CSS3 지원. 반응형 디자인은 PDF로 직접 변환됩니다.

JavaScript 실행: Chart.js, D3.js, Plotly와 같은 대화형 차트가 올바르게 렌더링됩니다. 동적 콘텐츠가 예상대로 작동합니다.

URL-to-PDF: VectSharp로는 불가능한 기능으로, 어떤 웹 페이지든 PDF로 캡처.

PDF 작업: 병합, 분할, 워터마크 추가, 비밀번호 보호, 디지털 서명이 내장 기능입니다.

코드 가독성 향상: HTML/CSS는 선언적이며 읽기 쉽습니다. 같은 문서가 VectSharp의 명령적 그리기 방식보다 훨씬 적은 코드가 필요합니다.

활발한 개발: .NET 10 및 C# 14의 채택이 2026년까지 증가함에 따라 IronPDF의 정기 업데이트는 현재 및 미래의 .NET 버전과의 호환성을 보장합니다.

커티스 차우
기술 문서 작성자

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

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

아이언 서포트 팀

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