Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Wie man von EO.Pdf zu IronPDF in C# migriert

Migrieren Sie von EO.Pdf zu IronPDF: Vollständiger C#-Migrationsleitfaden

EO.Pdf ist eine kommerzielle .NET-PDF-Bibliothek, die das Chromium-basierte Rendering für die Konvertierung von HTML in PDF nutzt. EO.Pdf bietet zwar ein W3C-konformes Rendering, seine Architektur bringt jedoch erhebliche Herausforderungen mit sich: eine enorme Paketgröße von 126 MB, die Docker-Images aufbläht und die Bereitstellung verlangsamt, Altlasten aus der ursprünglichen, auf dem Internet Explorer basierenden Engine, statische globale Optionen, die für mandantenfähige Anwendungen nicht thread-sicher sind, und ein Windows-zentriertes Design trotz plattformübergreifender Ansprüche. Dieses umfassende Handbuch bietet einen schrittweisen Migrationspfad von EO.Pdf zuIronPDF- einer modernen .NET-PDF-Bibliothek mit optimierter Chromium-Paketierung, instanzbasierter thread-sicherer Konfiguration und echter plattformübergreifender Unterstützung.

Warum von EO.Pdf zuIronPDFmigrieren?

EO.Pdf stellt mehrere architektonische Herausforderungen dar, die Entwicklungsteams dazu veranlassen, Alternativen zu bewerten. Das Verständnis dieser Aspekte ist für die Planung Ihrer Migrationsstrategie unerlässlich.

Die EO.Pdf-Probleme

  1. Massive Paketgröße von 126 MB: EO.Pdf bündelt seine eigene Chromium-Engine, was zu einer Paketgröße von 126 MB führt. Dies bläht Docker-Images auf, verlangsamt CI/CD-Pipelines und erhöht die Infrastrukturkosten.

  2. Legacy Architecture Baggage: EO.Pdf wurde ursprünglich auf der Rendering-Engine von Internet Explorer aufgebaut, bevor es auf Chromium migriert wurde. Dieses Erbe bringt Kompatibilitätsprobleme aus der IE-Ära, technische Schulden im API-Design und inkonsistentes Verhalten zwischen den Versionen mit sich.

  3. Windows-zentriertes Design: Obwohl EO.Pdf als "plattformübergreifend" vermarktet wird, ist die Unterstützung von Linux und macOS begrenzt. Viele Entwickler berichten über Probleme mit Nicht-Windows-Implementierungen.

  4. Statische globale Optionen: EO.Pdf verwendet statische HtmlToPdf.Options für die Konfiguration, was nicht thread-sicher und problematisch in Multi-Tenant-Webanwendungen ist.

  5. $799 pro Lizenz: Mit 799 $ pro Entwicklerlizenz ist EO.Pdf im Vergleich zu Alternativen, die ähnliche oder bessere Funktionen bieten, teuer.

Architektur-Vergleich

Aspekt EO.Pdf IronPDF
Paketgröße 126MB Optimiert (~50MB)
Legacy-Probleme IE-Migrationsgepäck Saubere, moderne Codebasis
Windows, Linux, macOS, Docker, Azure, AWS. Windows-orientiert Echt plattformübergreifend
Konfiguration Statisch/global (nicht thread-sicher) Instanzbasiert, thread-sicher
API-Entwurf Gemischt (HtmlToPdf + ACM) Einheitlich, konsistent
Dokumentation Beschränkt Umfassende Tutorials
Modernes .NET .NET Standard .NET 6/7/8/9+ nativ
Async-Unterstützung Beschränkt Vollständig async/await

Wichtige Vorteile der Migration

  1. 50% kleinerer Footprint: IronPDFs optimierte Chromium-Paketierung
  2. True Cross-Platform: Funktioniert identisch auf Windows, Linux, macOS, Docker
  3. Thread-Safe Configuration: Instanzbasierte Renderer-Optionen
  4. Modernes API: Konsistente, intuitive Methodennamen
  5. Bessere Dokumentation: Ausführliche Tutorials und Beispiele

Vorbereitung auf die Migration

Voraussetzungen

Stellen Sie sicher, dass Ihre Umgebung diese Anforderungen erfüllt:

  • .NET Framework 4.6.2+ oder .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ oder VS Code mit C#-Erweiterung
  • NuGet Package Manager Zugang
  • IronPDF-Lizenzschlüssel (kostenlose Testversion erhältlich unter ironpdf.com)

Audit EO.Pdf Verwendung

Führen Sie diese Befehle in Ihrem Lösungsverzeichnis aus, um alle EO.Pdf-Referenzen zu identifizieren:

# Find all EO.Pdf references
grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" .

# Check NuGet packages
dotnet list package | grep -i "EO.Pdf"
# Find all EO.Pdf references
grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" .

# Check NuGet packages
dotnet list package | grep -i "EO.Pdf"
SHELL

Häufige EO.Pdf-Namensräume, nach denen Sie suchen sollten:

  • EO.Pdf - Kern HTML zu PDF
  • EO.Pdf.Acm - Erweitertes Inhaltsmodell (ACM)
  • EO.Pdf.Contents - Inhaltsmanipulation auf niedriger Ebene
  • EO.Pdf.Drawing - Grafikoperationen

Verständnis der Core Pattern Änderung

Der wichtigste architektonische Unterschied zwischen EO.Pdf undIronPDFist der Konfigurationsumfang. EO.Pdf verwendet statische Methoden mit globalen Optionen, die sich auf alle Konvertierungen auswirken - ein Muster, das in Webanwendungen Probleme mit der Thread-Sicherheit verursacht.IronPDFverwendet instanzbasierte Renderer mit lokalen Optionen, um sicherzustellen, dass jede Konvertierung isoliert ist.

Schritt-für-Schritt-Migrationsprozess

Schritt 1: NuGet-Pakete aktualisieren

Entfernen Sie EO.Pdf und installieren Sie IronPDF:

# Remove EO.Pdf
dotnet remove package EO.Pdf

# Install IronPDF
dotnet add package IronPdf
# Remove EO.Pdf
dotnet remove package EO.Pdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Schritt 2: Namensraumreferenzen aktualisieren

Ersetzen Sie die Namensräume von EO.Pdf durch IronPDF:

// Remove these
using EO.Pdf;
using EO.Pdf.Acm;

// Add this
using IronPdf;
// Remove these
using EO.Pdf;
using EO.Pdf.Acm;

// Add this
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Schritt 3: Lizenz konfigurieren

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Komplette API-Migrationsreferenz

Kernklassen-Zuordnung

EO.Pdf-Klasse IronPDF-Äquivalent Notizen
HtmlToPdf ChromePdfRenderer Instanzbasiert
PdfDocument PdfDocument Ähnliche, aber unterschiedliche Methoden
HtmlToPdfOptions ChromePdfRenderOptions Über RenderingOptions
AcmRender Nicht erforderlich Verwenden Sie stattdessen HTML/CSS
AcmText HTML <span>, <p>
AcmBlock HTML <div>

Methoden-Mapping

EO.Pdf-Methode IronPDF-Methode Notizen
HtmlToPdf.ConvertHtml(html, path) renderer.RenderHtmlAsPdf(html) then SaveAs(path) Zwei Schritte in IronPDF
HtmlToPdf.ConvertUrl(url, path) renderer.RenderUrlAsPdf(url) then SaveAs(path)
PdfDocument.Save(Pfad) pdf.SaveAs(Pfad)
new PdfDocument(Pfad) PdfDocument.FromFile(path) Statische Fabrik
doc.Append(other) PdfDocument.Merge(doc1, doc2) Statische Merge-Methode

Optionen-Zuordnung

EO.Pdf-Option IronPDFRenderingOptionen Notizen
Options.PageSize = PdfPageSizes.A4 PaperSize = PdfPaperSize.A4
Options.OutputArea (RectangleF) MarginTop, MarginBottom, etc. Einzelne Eigenschaften in mm

Beispiele für die Code-Migration

HTML-zu-PDF-Konvertierung

Die grundlegende HTML-zu-PDF-Konvertierung demonstriert den Wechsel von statischen Methoden zum instanzbasierten Rendering.

EO.Pdf Implementierung:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        HtmlToPdf.ConvertHtml(html, "output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        HtmlToPdf.ConvertHtml(html, "output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Das zweistufige Muster vonIronPDF(erst rendern, dann speichern) ermöglicht den Zugriff auf das PdfDocument-Objekt für zusätzliche Manipulationen vor dem Speichern. Weitere Optionen finden Sie in der HTML zu PDF Dokumentation.

URL zu PDF-Konvertierung

EO.Pdf Implementierung:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        HtmlToPdf.ConvertUrl(url, "webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        HtmlToPdf.ConvertUrl(url, "webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFs RenderUrlAsPdf bietet vollständige JavaScript-Ausführung und moderne CSS-Unterstützung. Weitere Optionen finden Sie in der URL zur PDF-Dokumentation.

HTML-Datei mit benutzerdefinierten Einstellungen

Dieses Beispiel zeigt den entscheidenden Unterschied in den Konfigurationsmustern - EO.Pdfs OutputArea mit Zoll im Vergleich zu IronPDFs individuellen Randeigenschaften in Millimetern.

EO.Pdf Implementierung:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfOptions options = new HtmlToPdfOptions();
        options.PageSize = PdfPageSizes.A4;
        options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

        HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options);
        Console.WriteLine("PDF with custom settings created.");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfOptions options = new HtmlToPdfOptions();
        options.PageSize = PdfPageSizes.A4;
        options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

        HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options);
        Console.WriteLine("PDF with custom settings created.");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF with custom settings created.");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF with custom settings created.");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Beachten Sie die Einheitenumrechnung: EO.Pdf verwendet Zoll in OutputArea, währendIronPDFMillimeter verwendet. Konvertieren Sie mit: Zoll × 25,4 = mm. Weitere Optionen finden Sie in der Dokumentation der Rendering-Optionen.

Mehrere PDFs zusammenführen

Das Zusammenführen von PDF-Dateien zeigt den Unterschied zwischen dem Schleifenmuster Append von EO.Pdf und der statischen Methode Merge von IronPDF.

EO.Pdf Implementierung:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument doc1 = new PdfDocument("file1.pdf");
        PdfDocument doc2 = new PdfDocument("file2.pdf");

        PdfDocument mergedDoc = new PdfDocument();
        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument doc1 = new PdfDocument("file1.pdf");
        PdfDocument doc2 = new PdfDocument("file2.pdf");

        PdfDocument mergedDoc = new PdfDocument();
        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF-Implementierung:

// 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");

        Console.WriteLine("PDFs merged successfully!");
    }
}
// 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");

        Console.WriteLine("PDFs merged successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Die statische Methode Merge vonIronPDFakzeptiert eine Sammlung von Dokumenten und vereinfacht so das Zusammenführen mehrerer Dokumente. Beachten Sie den Wechsel vom Konstruktor (new PdfDocument(path)) zur statischen Fabrik (PdfDocument.FromFile(path)). Weitere Optionen finden Sie in der PDF-Merge-Dokumentation.

Kritische Hinweise zur Migration

Umrechnung von Maßeinheiten

EO.Pdf verwendet Zoll in OutputArea.IronPDFarbeitet mit Millimetern. Konvertieren Sie mit: Zoll × 25,4 = mm

// EO.Pdf - 0.5 inch margins
options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

//IronPDF- equivalent in millimeters (0.5" = 12.7mm)
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
// EO.Pdf - 0.5 inch margins
options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

//IronPDF- equivalent in millimeters (0.5" = 12.7mm)
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Statische zu instanzbasierter Konfiguration

Ersetzen Sie alle HtmlToPdf.Options.X mit renderer.RenderingOptions.X:

// EO.Pdf - static options (NOT thread-safe!)
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;

//IronPDF- instance options (thread-safe)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// EO.Pdf - static options (NOT thread-safe!)
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;

//IronPDF- instance options (thread-safe)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ACM zu HTML Migration

Wenn Sie das erweiterte Inhaltsmodell von EO.Pdf verwenden (AcmRender, AcmText, AcmBlock), migrieren Sie zu Standard-HTML/CSS:

// EO.Pdf ACM approach
var acmContent = new AcmContent();
acmContent.Add(new AcmText("Sample Text"));

//IronPDFHTML approach
var html = "<div>Sample Text</div>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// EO.Pdf ACM approach
var acmContent = new AcmContent();
acmContent.Add(new AcmText("Sample Text"));

//IronPDFHTML approach
var html = "<div>Sample Text</div>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Zweistufiges Speichermuster

EO.Pdf speichert direkt in ConvertHtml().IronPDFgibt ein PdfDocument-Objekt zurück, dann ruft man SaveAs() auf:

// EO.Pdf - one step
HtmlToPdf.ConvertHtml(html, "output.pdf");

//IronPDF- two steps (enables manipulation before save)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// EO.Pdf - one step
HtmlToPdf.ConvertHtml(html, "output.pdf");

//IronPDF- two steps (enables manipulation before save)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Konstruktor zu statischer Fabrik

Ersetzen Sie new PdfDocument(Pfad)durch PdfDocument.FromFile(path):

// EO.Pdf
var doc = new PdfDocument("file.pdf");

// IronPDF
var doc = PdfDocument.FromFile("file.pdf");
// EO.Pdf
var doc = new PdfDocument("file.pdf");

// IronPDF
var doc = PdfDocument.FromFile("file.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Post-Migrations-Checkliste

Überprüfen Sie nach Abschluss der Codemigration Folgendes:

  • [Visueller Vergleich der generierten PDFs
  • [Überprüfen der korrekten Darstellung von Kopf- und Fußzeilen
  • [Test der Sicherheits-/Verschlüsselungseinstellungen
  • [Validieren von Zusammenführungsvorgängen
  • [Leistungs-Benchmarking
  • [Plattformübergreifende Tests (Windows, Linux, macOS)
  • [EO.Pdf-Lizenzdateien entfernen
  • [Dokumentation aktualisieren

Zukunftssicherheit für Ihre PDF-Infrastruktur

Mit .NET 10 am Horizont und C# 14, das neue Sprachfunktionen einführt, stellt die Wahl einer PDF-Bibliothek mit moderner nativer .NET-Unterstützung die langfristige Kompatibilität sicher. Die instanzbasierte, thread-sichere Architektur vonIronPDFentspricht modernen Webanwendungsmustern - besonders wichtig für mandantenfähige SaaS-Anwendungen, bei denen die statischen globalen Optionen von EO.Pdf zu Gleichzeitigkeitsproblemen führen.

Zusätzliche Ressourcen


Durch die Migration von EO.Pdf zuIronPDFwerden die 126 MB großen Pakete, die Altlasten aus der IE-Ära und die Bedenken hinsichtlich der Thread-Sicherheit durch statische globale Optionen beseitigt. Der Übergang zur instanzbasierten Konfiguration stellt sicher, dass Ihr PDF-Generierungscode in Webanwendungen mit mehreren Threads zuverlässig funktioniert und gleichzeitig eine echte plattformübergreifende Bereitstellung unterstützt.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen