Saltar al pie de página
GUíAS DE MIGRACIóN

Cómo migrar de ComPDFKit a IronPDF en C#

Aunque ComPDFKitofrece sólidas funciones de manipulación de PDF, varios factores llevan a los equipos de desarrollo a considerar alternativas más consolidadas.

Comparación de la madurez del mercado y el ecosistema

ComPDFKit se enfrenta a retos comunes a los nuevos participantes en el mercado: lagunas en la documentación, una comunidad más pequeña y una cobertura limitada de Stack Overflow. La década de perfeccionamiento deIronPDFproporciona la estabilidad y los recursos que requieren los proyectos empresariales.

Aspecto ComPDFKit IronPDF
HTML a PDF Requiere análisis sintáctico manual de HTML Renderizado nativo en Chromium
Madurez de mercado Nuevo participante más de 10 años de experiencia
Tamaño de la comunidad Stack Overflow más pequeño y limitado Comunidad grande y activa
Documentación Algunas lagunas Amplios tutoriales y guías
Descargas En crecimiento más de 10 millones de descargas de NuGet
Estilo API C++ influenciado, verboso API moderna y fluida de .NET
Gestión de memoria Llamadas manuales Release() Gestión automática de GC

Paridad de características

Ambas bibliotecas son compatibles con una amplia funcionalidad PDF:

Característica ComPDFKit IronPDF
HTML a PDF Básico/Manual cromo nativo
URL a PDF Implementación manual integrado
Crear PDF desde cero
Edición de PDF
Extracción de texto
Fusionar/Dividir
Firmas digitales
Relleno de formularios
Marcas de agua
Plataforma cruzada Windows, Linux, macOS Windows, Linux, macOS

Beneficios clave de la migración

  1. Representación HTML superior: el motor Chromium deIronPDFmaneja CSS3 moderno, JavaScript y diseños responsivos de forma nativa.
  2. Ecosistema maduro: más de 10 años de refinamiento, amplia documentación y estabilidad comprobada
  3. API más sencilla: menos código repetitivo, sin gestión manual de memoria con llamadas Release()
  4. Mejor integración con .NET : async/await nativo, compatibilidad con LINQ, interfaces fluidas
  5. Amplios recursos: miles de respuestas de Stack Overflow y ejemplos de la comunidad.

Preparación de la migración

Prerrequisitos

Asegúrese de que su entorno cumple estos requisitos:

  • .NET Framework 4.6.2+ o .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ o VS Code con extensión de C#
  • Acceso al gestor de paquetes NuGet
  • Clave de licencia deIronPDF(prueba gratuita disponible en ironpdf.com)

Aprobar el uso de ComPDFKit

Ejecute estos comandos en su directorio de soluciones para identificar todas las referencias a ComPDFKit:

# Find all ComPDFKitusages in your codebase
grep -r "using ComPDFKit" --include="*.cs" .
grep -r "CPDFDocument\|CPDFPage\|CPDFAnnotation" --include="*.cs" .

# Find NuGet package references
grep -r "ComPDFKit" --include="*.csproj" .
# Find all ComPDFKitusages in your codebase
grep -r "using ComPDFKit" --include="*.cs" .
grep -r "CPDFDocument\|CPDFPage\|CPDFAnnotation" --include="*.cs" .

# Find NuGet package references
grep -r "ComPDFKit" --include="*.csproj" .
SHELL

Cambios importantes que hay que anticipar

Cambiar ComPDFKit IronPDF Impacto
Carga de documentos CPDFDocument.InitWithFilePath() PdfDocument.FromFile() Cambio de nombre del método
Ahorro document.WriteToFilePath() pdf.SaveAs() Cambio de nombre del método
Limpieza de memoria document.Release() requerido Automático (GC) Eliminar la limpieza manual
Acceso a la página document.PageAtIndex(i) pdf.Pages[i] Acceso tipo array
Indización de páginas basado en 0 basado en 0 No se necesitan cambios
Representación HTML Implementación manual RenderHtmlAsPdf() Simplificación importante
Extracción de texto textPage.GetText() pdf.ExtractAllText() API simplificada

Proceso de migración paso a paso

Paso 1: Actualizar paquetes NuGet

Elimine los paquetes ComPDFKite instale IronPDF:

# Remove ComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework

# Install IronPDF
dotnet add package IronPdf
# Remove ComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework

# Install IronPDF
dotnet add package IronPdf
SHELL

Paso 2: Actualizar referencias de espacios de nombres

Sustituya los espacios de nombres de ComPDFKitpor IronPDF:

// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;

// Add this
using IronPdf;
// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;

// Add this
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Paso 3: Configurar la licencia

// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Referencia completa de migración de API

Operaciones de documentos

Tarea ComPDFKit IronPDF
Crear documento vacío CPDFDocument.CreateDocument() new PdfDocument()
Cargar desde archivo CPDFDocument.InitWithFilePath(path) PdfDocument.FromFile(path)
Cargar desde stream CPDFDocument.InitWithStream(stream) PdfDocument.FromStream(stream)
Guardar en archivo document.WriteToFilePath(path) pdf.SaveAs(path)
Obtener recuento de páginas document.PageCount pdf.PageCount
Publicar/Disponer document.Release() No es necesario

Conversión de HTML a PDF

Tarea ComPDFKit IronPDF
Cadena HTML a PDF Se requiere ejecución manual renderer.RenderHtmlAsPdf(html)
Archivo HTML a PDF Se requiere ejecución manual renderer.RenderHtmlFileAsPdf(path)
URL a PDF Se requiere ejecución manual renderer.RenderUrlAsPdf(url)
Establecer tamaño de página A través de los parámetros de creación de páginas renderer.RenderingOptions.PaperSize
Establecer márgenes Mediante la configuración del editor renderer.RenderingOptions.MarginTop etc.

Operaciones de fusión y división

Tarea ComPDFKit IronPDF
Fusionar documentos doc1.ImportPagesAtIndex(doc2, range, index) PdfDocument.Merge(pdf1, pdf2)
Documento dividido Extraer páginas a un nuevo documento pdf.CopyPages(start, end)

Ejemplos de migración de código

Conversión de HTML a PDF

La diferencia más significativa entre ComPDFKiteIronPDFes el renderizado HTML. ComPDFKitrequiere la colocación manual del texto, mientras queIronPDFrenderiza HTML de forma nativa con su motor Chromium.

Implementación de ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using System;

class Program
{
    static void Main()
    {
        var document = CPDFDocument.CreateDocument();
        var page = document.InsertPage(0, 595, 842, "");

        // ComPDFKitrequires manual HTML rendering
        // Native HTML a PDFnot directly supported
        var editor = page.GetEditor();
        editor.BeginEdit(CPDFEditType.EditText);
        editor.CreateTextWidget(new System.Drawing.RectangleF(50, 50, 500, 700), "HTML content here");
        editor.EndEdit();

        document.WriteToFilePath("output.pdf");
        document.Release();
    }
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using System;

class Program
{
    static void Main()
    {
        var document = CPDFDocument.CreateDocument();
        var page = document.InsertPage(0, 595, 842, "");

        // ComPDFKitrequires manual HTML rendering
        // Native HTML a PDFnot directly supported
        var editor = page.GetEditor();
        editor.BeginEdit(CPDFEditType.EditText);
        editor.CreateTextWidget(new System.Drawing.RectangleF(50, 50, 500, 700), "HTML content here");
        editor.EndEdit();

        document.WriteToFilePath("output.pdf");
        document.Release();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Implementación de IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

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

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

ChromePdfRenderer deIronPDFelimina la necesidad de posicionamiento manual de texto y gestión del editor. Para más opciones de conversión de HTML, consulte la documentación HTML a PDF.

Fusión de varios PDF

Implementación de ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.Import;
using System;

class Program
{
    static void Main()
    {
        var document1 = CPDFDocument.InitWithFilePath("file1.pdf");
        var document2 = CPDFDocument.InitWithFilePath("file2.pdf");

        // Import pages from document2 into document1
        document1.ImportPagesAtIndex(document2, "0-" + (document2.PageCount - 1), document1.PageCount);

        document1.WriteToFilePath("merged.pdf");
        document1.Release();
        document2.Release();
    }
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.Import;
using System;

class Program
{
    static void Main()
    {
        var document1 = CPDFDocument.InitWithFilePath("file1.pdf");
        var document2 = CPDFDocument.InitWithFilePath("file2.pdf");

        // Import pages from document2 into document1
        document1.ImportPagesAtIndex(document2, "0-" + (document2.PageCount - 1), document1.PageCount);

        document1.WriteToFilePath("merged.pdf");
        document1.Release();
        document2.Release();
    }
}
Imports ComPDFKit.PDFDocument
Imports ComPDFKit.Import
Imports System

Module Program
    Sub Main()
        Dim document1 = CPDFDocument.InitWithFilePath("file1.pdf")
        Dim document2 = CPDFDocument.InitWithFilePath("file2.pdf")

        ' Import pages from document2 into document1
        document1.ImportPagesAtIndex(document2, "0-" & (document2.PageCount - 1), document1.PageCount)

        document1.WriteToFilePath("merged.pdf")
        document1.Release()
        document2.Release()
    End Sub
End Module
$vbLabelText   $csharpLabel

Implementación de IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdf1 = PdfDocument.FromFile("file1.pdf")
        Dim pdf2 = PdfDocument.FromFile("file2.pdf")

        Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
        merged.SaveAs("merged.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

El método estático Merge deIronPDFelimina el patrón detallado ImportPagesAtIndex con cadenas de rango de páginas. Para obtener más opciones, consulte la documentación de fusión de PDF .

Añadir marcas de agua

La marca de agua demuestra el cambio de paradigma del enfoque basado en el editor de ComPDFKital estilo basado en HTML de IronPDF.

Implementación de ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        var document = CPDFDocument.InitWithFilePath("input.pdf");

        for (int i = 0; i < document.PageCount; i++)
        {
            var page = document.PageAtIndex(i);
            var editor = page.GetEditor();
            editor.BeginEdit(CPDFEditType.EditText);

            var textArea = editor.CreateTextArea();
            textArea.SetText("CONFIDENTIAL");
            textArea.SetFontSize(48);
            textArea.SetTransparency(128);

            editor.EndEdit();
            page.Release();
        }

        document.WriteToFilePath("watermarked.pdf");
        document.Release();
    }
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        var document = CPDFDocument.InitWithFilePath("input.pdf");

        for (int i = 0; i < document.PageCount; i++)
        {
            var page = document.PageAtIndex(i);
            var editor = page.GetEditor();
            editor.BeginEdit(CPDFEditType.EditText);

            var textArea = editor.CreateTextArea();
            textArea.SetText("CONFIDENTIAL");
            textArea.SetFontSize(48);
            textArea.SetTransparency(128);

            editor.EndEdit();
            page.Release();
        }

        document.WriteToFilePath("watermarked.pdf");
        document.Release();
    }
}
Imports ComPDFKit.PDFDocument
Imports ComPDFKit.PDFPage
Imports System
Imports System.Drawing

Module Program
    Sub Main()
        Dim document = CPDFDocument.InitWithFilePath("input.pdf")

        For i As Integer = 0 To document.PageCount - 1
            Dim page = document.PageAtIndex(i)
            Dim editor = page.GetEditor()
            editor.BeginEdit(CPDFEditType.EditText)

            Dim textArea = editor.CreateTextArea()
            textArea.SetText("CONFIDENTIAL")
            textArea.SetFontSize(48)
            textArea.SetTransparency(128)

            editor.EndEdit()
            page.Release()
        Next

        document.WriteToFilePath("watermarked.pdf")
        document.Release()
    End Sub
End Module
$vbLabelText   $csharpLabel

Implementación de IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
            rotation: 45,
            verticalAlignment: VerticalAlignment.Middle,
            horizontalAlignment: HorizontalAlignment.Center);

        pdf.SaveAs("watermarked.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
            rotation: 45,
            verticalAlignment: VerticalAlignment.Middle,
            horizontalAlignment: HorizontalAlignment.Center);

        pdf.SaveAs("watermarked.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing
Imports System

Module Program
    Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")

        pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>", 
                           rotation:=45, 
                           verticalAlignment:=VerticalAlignment.Middle, 
                           horizontalAlignment:=HorizontalAlignment.Center)

        pdf.SaveAs("watermarked.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF reduce la implementación de una marca de agua de más de 20 líneas a una única llamada a un método con estilo HTML/CSS. Para obtener más opciones, consulte la documentación de la marca de agua .

Extracción de texto

Implementación de ComPDFKit:

using ComPDFKit.PDFDocument;
using System.Text;

var document = CPDFDocument.InitWithFilePath("document.pdf");

// Extract text (verbose)
var allText = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
    var page = document.PageAtIndex(i);
    var textPage = page.GetTextPage();
    allText.AppendLine(textPage.GetText(0, textPage.CountChars()));
    textPage.Release();
    page.Release();
}

document.WriteToFilePath("output.pdf");
document.Release(); // Must remember to release!
using ComPDFKit.PDFDocument;
using System.Text;

var document = CPDFDocument.InitWithFilePath("document.pdf");

// Extract text (verbose)
var allText = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
    var page = document.PageAtIndex(i);
    var textPage = page.GetTextPage();
    allText.AppendLine(textPage.GetText(0, textPage.CountChars()));
    textPage.Release();
    page.Release();
}

document.WriteToFilePath("output.pdf");
document.Release(); // Must remember to release!
Imports ComPDFKit.PDFDocument
Imports System.Text

Dim document = CPDFDocument.InitWithFilePath("document.pdf")

' Extract text (verbose)
Dim allText As New StringBuilder()
For i As Integer = 0 To document.PageCount - 1
    Dim page = document.PageAtIndex(i)
    Dim textPage = page.GetTextPage()
    allText.AppendLine(textPage.GetText(0, textPage.CountChars()))
    textPage.Release()
    page.Release()
Next

document.WriteToFilePath("output.pdf")
document.Release() ' Must remember to release!
$vbLabelText   $csharpLabel

Implementación de IronPDF:

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Extract text (one-liner)
string allText = pdf.ExtractAllText();

pdf.SaveAs("output.pdf");
// No Release() needed - GC handles cleanup
using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Extract text (one-liner)
string allText = pdf.ExtractAllText();

pdf.SaveAs("output.pdf");
// No Release() needed - GC handles cleanup
Imports IronPdf

Dim pdf = PdfDocument.FromFile("document.pdf")

' Extract text (one-liner)
Dim allText As String = pdf.ExtractAllText()

pdf.SaveAs("output.pdf")
' No Release() needed - GC handles cleanup
$vbLabelText   $csharpLabel

IronPDF reduce la extracción de texto de varias líneas con llamadas manuales Release() a un solo método. Para obtener más opciones de extracción, consulte la documentación de extracción de texto .

Protección con contraseña

Implementación de IronPDF:

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");

// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("protected.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");

// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("protected.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>")

' Set security
pdf.SecuritySettings.UserPassword = "userPassword"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False

pdf.SaveAs("protected.pdf")
$vbLabelText   $csharpLabel

Para conocer opciones de seguridad integrales, consulte la documentación de cifrado .

Notas de migración críticas

Eliminar todas las llamadas a Release()

El cambio más impactante es la eliminación de la gestión manual de la memoria. ComPDFKitrequiere llamadas Release() explícitas en documentos, páginas y páginas de texto.IronPDFse encarga de ello automáticamente mediante la recolección de basura de .NET:

// ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();

//IronPDF- no equivalent needed
// GC handles cleanup automatically
// ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();

//IronPDF- no equivalent needed
// GC handles cleanup automatically
' ComPDFKit- manual cleanup required
document.Release()
page.Release()
textPage.Release()

' IronPDF- no equivalent needed
' GC handles cleanup automatically
$vbLabelText   $csharpLabel

Renderizado HTML nativo

ComPDFKit requiere la colocación manual del texto con las API del editor.IronPDFrenderiza HTML/CSS de forma nativa con su motor Chromium, compatible con CSS3 moderno, JavaScript y diseños adaptables.

Indización de la misma página

Ambas bibliotecas utilizan indexación basada en 0 (Pages[0] es la primera página); no se necesitan cambios en el código de acceso a la página.

Extracción de texto simplificada

Reemplace el patrón multilínea GetTextPage() + GetText() + Release() con una única llamada ExtractAllText().

API de combinación fluida

Reemplace ImportPagesAtIndex(doc2, "0-9", pageCount) con el simple Merge(pdf1, pdf2).

Lista de comprobación posterior a la migración

Después de completar la migración del código, verifique lo siguiente:

  • Ejecute todas las pruebas unitarias para verificar que la generación de PDF funcione correctamente
  • Comparar la calidad de salida del PDF (el motor Chromium deIronPDFpuede renderizar de forma diferente, generalmente mejor)
  • Pruebe la representación HTML con CSS y JavaScript complejos
  • Verificar la precisión de la extracción de texto
  • Funcionalidad del formulario de prueba
  • Operaciones por lotes de pruebas de rendimiento
  • Prueba en todos los entornos de destino
  • Actualizar los pipelines de CI/CD
  • Eliminar archivos de licencia de ComPDFKit

Proteja su infraestructura PDF

Con .NET 10 en el horizonte y C# 14 introduciendo nuevas características del lenguaje, elegir una biblioteca PDF madura y mantenida activamente garantiza la compatibilidad a largo plazo. Los más de 10 años de trayectoria de IronPDF, el amplio apoyo de la comunidad y el moderno diseño de la API hacen que su inversión en migración sea rentable a medida que los proyectos se extienden hasta 2025 y 2026.

Recursos adicionales


La migración de ComPDFKitaIronPDFelimina la administración manual de memoria con llamadas Release() y al mismo tiempo proporciona una representación nativa de HTML a PDF de la que carece ComPDFKit. La transición al ecosistema maduro deIronPDFofrece la profundidad de la documentación, el apoyo de la comunidad y la estabilidad probada que requieren los proyectos empresariales.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame