Cómo migrar de VectSharp a IronPDF en C#
VectSharp se ha consolidado como una potente biblioteca de gráficos vectoriales en el ecosistema .NET, especialmente valorada para la visualización científica y las ilustraciones técnicas. Sin embargo, cuando los equipos de desarrollo necesitan generar documentos comerciales, informes, facturas o cualquier contenido basado en HTML, el paradigma de VectSharp, que da prioridad a los gráficos, crea una fricción significativa. La biblioteca está diseñada para científicos que crean figuras y gráficos, no para desarrolladores que generan documentos.
Esta guía proporciona una ruta de migración completa de VectSharpa IronPDF, con instrucciones paso a paso, comparaciones de código y ejemplos prácticos para desarrolladores .NET profesionales que estén evaluando esta transición.
Por qué migrar de VectSharp
VectSharp es una biblioteca de visualización científica y gráficos vectoriales diseñada para crear diagramas, gráficos e ilustraciones técnicas. No está diseñado para generar documentos, sino que es una biblioteca de dibujo que produce PDF. Entre las principales razones por las que los equipos de desarrollo se plantean la migración se incluyen:
Enfoque científico únicamente: VectSharpestá diseñado para la visualización y el trazado de datos, no para documentos comerciales como facturas, informes o certificados.
Sin soporte HTML: VectSharpno puede convertir HTML o CSS a PDF. Cada elemento debe dibujarse manualmente utilizando comandos de gráficos vectoriales.
API basada en coordenadas: cada elemento debe estar posicionado con coordenadas X,Y exactas. No hay maquetación automática, flujo ni ajuste de texto.
Sin estilo CSS: todo el estilo es programático a través de llamadas a métodos. Los desarrolladores web no pueden aprovechar sus conocimientos de CSS.
Sin JavaScript: VectSharpno puede representar contenido web dinámico, gráficos interactivos o visualizaciones basadas en JavaScript.
Sin diseño de texto: el ajuste automático de texto, la paginación y el diseño de flujo no están disponibles. Los desarrolladores deben calcular manualmente las posiciones del texto y los saltos de página.
Paradigma Graphics-First: La biblioteca está diseñada para diagramas, no para informes o facturas. La generación de documentos requiere mucho trabajo manual.
El problema principal: biblioteca de gráficos frente a generador de documentos
VectSharp requiere el dibujo manual de vectores para cada elemento:
// VectSharp: Manualvector 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: Manualvector 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
Imports VectSharp
' VectSharp: Manual 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
IronPDF utiliza HTML, el formato de documento universal:
// 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)
IronPDFvs VectSharp: Comparación de características
Comprender las diferencias arquitectónicas ayuda a los responsables técnicos a evaluar la inversión en migración:
| Característica | VectSharp | IronPDF |
|---|---|---|
| Uso principal | Gráficos vectoriales | Creación de documentos |
| Resultado PDF | Sí | Sí |
| Soporte HTML | No | Sí |
| Licencias | LGPL | Comercial |
| Código abierto | Sí | Parcialmente (características comerciales) |
| Mejor para | Visualizaciones científicas | Documentos PDF generales |
| Personalización | Limitado a gráficos | Amplia documentación |
| HTML a PDF | No | Chromium completo |
| URL a PDF | No | Sí |
| Soporte CSS | No | CSS3 completo |
| JavaScript | No | ES2024 completo |
| Diseño automático | No | Sí |
| Saltos de página automáticos | No | Sí |
| Envoltura de texto | Manual | Automático |
| Fusionar PDF | No | Sí |
| Dividir PDF | No | Sí |
| Protección de contraseñas | No | Sí |
| Firmas digitales | No | Sí |
| Curva de aprendizaje | Alto (coordenadas) | Bajo (HTML/CSS) |
| Verbosidad del código | Muy alto | Bajo |
Inicio rápido: Migración de VectSharpa IronPDF
La migración puede comenzar inmediatamente con estos pasos básicos.
Paso 1: Sustituir paquetes NuGet
Eliminar todos los paquetes de VectSharp:
# Remove VectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
# Remove VectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
Instalar IronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Paso 2: Actualizar los espacios de nombres
Sustituya los espacios de nombres VectSharppor el espacio de nombres 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
Paso 3: Inicializar licencia
Añadir inicialización de licencia al inicio de la aplicación:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Ejemplos de migración de código
Convertir HTML a PDF
VectSharp no admite la conversión de HTML a PDF. Esta diferencia fundamental de capacidades impulsa muchas decisiones de migración.
Enfoque de 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
Class Program
Shared 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 Class
Enfoque 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
VectSharp requiere crear un objeto Document, Page y Graphics y luego posicionar manualmente el texto con coordenadas exactas y objetos de fuente.IronPDFrenderiza HTML directamente con soporte completo de estilos CSS.
Para situaciones avanzadas de conversión de HTML a PDF, consulte la Guía de conversión de HTML a PDF.
Creación de documentos de varias páginas
Los documentos de varias páginas revelan las diferencias arquitectónicas entre estas bibliotecas .NET PDF.
Enfoque de 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
Enfoque 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
VectSharp requiere crear objetos Page separados, contextos Graphics separados y posicionar manualmente cada elemento de texto con coordenadas y objetos de fuente para cada página.IronPDFutiliza una única cadena HTML con CSS page-break-after: always para crear documentos de varias páginas automáticamente.
Dibujar formas y texto
Las capacidades gráficas muestran dónde sobresale VectSharp, pero también dónde los estándares web proporcionan una funcionalidad equivalente con menos código.
Enfoque de 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
Enfoque 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
VectSharp requiere crear objetos GraphicsPath, llamar a Arc() con parámetros matemáticos precisos y administrar colores a través de Colour.FromRgb().IronPDFutiliza propiedades CSS familiares: background-color, border-radius: 50% para círculos y márgenes estándar.
Referencia de la API de VectSharpa IronPDF
Este mapeo acelera la migración al mostrar los equivalentes directos de las API:
| VectSharp | IronPDF |
|---|---|
Document |
ChromePdfRenderer |
Page |
Automático |
Graphics |
HTML/CSS |
graphics.FillRectangle() |
CSS background-color en <div> |
graphics.StrokeRectangle() |
CSS border en <div> |
graphics.FillText() |
Elementos de texto HTML |
graphics.StrokePath() |
Bordes SVG o CSS |
GraphicsPath |
Elemento SVG <path> |
Colour.FromRgb() |
Valores de color CSS |
Font / FontFamily |
CSS font-family |
doc.SaveAsPDF() |
pdf.SaveAs() |
| Tamaño de página manual | RenderingOptions.PaperSize |
Estrategias de migración
Estrategia 1: Convertir el código de dibujo a HTML/CSS
Sustituir el dibujo basado en coordenadas por elementos 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>
Estrategia 2: Utilizar SVG para gráficos vectoriales
Para formas complejas, utilice SVG en línea en su HTML:
// 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>
Estrategia 3: Utilizar bibliotecas de gráficos JavaScript
Para las visualizaciones científicas, la especialidad de VectSharp,IronPDFpuede aprovechar potentes bibliotecas de JavaScript como Chart.js, D3.js o Plotly:
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)
Problemas comunes de migración y soluciones
Tema 1: Diferencias en los sistemas de coordenadas
VectSharp utiliza puntos desde el origen superior izquierdo con posicionamiento manual.
Solución: Utilizar posicionamiento CSS:
.element {
position: absolute;
top: 50px;
left: 100px;
}
Número 2: Objetos de fuentes
VectSharp crea objetos Font y FontFamily mediante programación.
Solución: Utilizar 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>
Número 3: Manejo del color
VectSharp utiliza llamadas al método Colour.FromRgb().
Solución: Utilizar colores CSS:
.header { color: rgb(0, 102, 204); background-color: #f0f0f0; }
Número 4: Trayectorias gráficas
VectSharp utiliza una API compleja GraphicsPath con métodos MoveTo, LineTo, Arc.
Solución: Utilizar SVG para gráficos vectoriales:
<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>
Lista de comprobación de la migración a VectSharp
Tareas previas a la migración
Audite su código base para identificar todo el uso de 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" .
Tamaños de página del documento (los patrones new Page(595, 842)). Tenga en cuenta los esquemas de color que utilizan Colour.FromRgb(). Identificar las configuraciones de fuentes. Mapee gráficos vectoriales complejos usando GraphicsPath para la conversión SVG.
Tareas de actualización de código
- Eliminar paquetes NuGet de VectSharp
- Instalación del paquete IronPdf NuGet
- Actualizar las declaraciones de uso de
VectSharpaIronPdf - Convierta las llamadas
FillRectangleen cuadros CSS conbackground-color - Convierte las llamadas
FillTexten elementos de texto HTML con estilo CSS - Convertir operaciones
GraphicsPatha elementos SVG<path> - Reemplace la administración de páginas manuales con
RenderingOptions.PaperSize - Añadir inicialización de licencia al inicio
Pruebas posteriores a la migración
Tras la migración, verifique estos aspectos:
- Comparar el resultado visual entre las versiones de VectSharpy IronPDF
- Verifique que los colores coincidan utilizando los equivalentes CSS de los valores
Colour.FromRgb() - Comprobar la precisión de posicionamiento de los elementos convertidos a partir de la colocación basada en coordenadas
- Prueba de saltos de página en documentos de varias páginas
- Verificar que los gráficos vectoriales se renderizan correctamente mediante SVG
Beneficios clave de migrar a IronPDF
El paso de VectSharpaIronPDFofrece varias ventajas para la generación de documentos:
Contenido basado en HTML: los desarrolladores web pueden aprovechar las habilidades existentes en HTML y CSS. No es necesario aprender las API de dibujo basadas en coordenadas.
Diseño automático: el ajuste de texto, la paginación y el diseño de flujo se realizan automáticamente. Sin cálculo manual de las posiciones de los elementos.
Compatibilidad con CSS moderno: CSS3 completo, incluidos diseños Flexbox y Grid. Los diseños responsivos se traducen directamente a PDF.
Ejecución de JavaScript : los gráficos interactivos con Chart.js, D3.js o Plotly se representan correctamente. El contenido dinámico funciona como se espera.
URL a PDF: captura cualquier página web como PDF (funcionalidad que no es posible con VectSharp).
Operaciones PDF: Fusionar, dividir, agregar marcas de agua, protección con contraseña y firmas digitales son funciones integradas.
Menor verbosidad de código: HTML/CSSes declarativo y legible. El mismo documento requiere mucho menos código que el enfoque de dibujo imperativo de VectSharp.
Desarrollo activo: a medida que aumenta la adopción de .NET 10 y C# 14 hasta 2026, las actualizaciones periódicas deIronPDFgarantizan la compatibilidad con las versiones actuales y futuras de .NET .

