Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von BitMiracle Docotic PDF zu IronPDF in C#

Migrieren Sie von BitMiracle Docotic PDFzu IronPDF: Vollständiger C#-Migrationsleitfaden

BitMiracle Docotic PDF ist eine angesehene .NET-PDF-Bibliothek, die für ihre 100%ige Managed-Code-Architektur und ihre umfangreichen programmatischen PDF-Manipulationsmöglichkeiten bekannt ist. Die modulare Add-on-Struktur, die separate Pakete für die HTML-zu-PDF-Konvertierung, Layout-Funktionen und andere Funktionen erfordert, erhöht jedoch die Komplexität des Projektmanagements und der Lizenzierung. Dieser umfassende Leitfaden bietet einen schrittweisen Migrationspfad von BitMiracle Docotic PDFzuIronPDF- einer einheitlichen .NET-PDF-Bibliothek mit integriertem Chromium-basiertem HTML-Rendering und allen Funktionen, die in einem einzigen NuGet-Paket enthalten sind.

Warum von BitMiracle Docotic PDFzuIronPDFmigrieren?

Obwohl BitMiracle Docotic PDFrobuste Funktionen zur PDF-Bearbeitung bietet, suchen Entwicklungsteams aufgrund verschiedener Faktoren nach Alternativen mit einer schlankeren Architektur.

Vergleich der Paketarchitektur

BitMiracle Docotic PDF verwendet einen modularen Add-on-Ansatz, der mehrere Pakete für die volle Funktionalität erfordert:

Aspekt BitMiracle Docotic PDF IronPDF
HTML-zu-PDF Erfordert separates Add-on (HtmlToPdf) Eingebaute Kernfunktion
Paketstruktur Kern + mehrere Add-ons Einzelnes NuGet-Paket
Lizenzierungsmodell Pro-Add-on-Lizenzierung Alle Funktionen enthalten
API-Komplexität Separate Namensräume pro Add-on Vereinheitlichte API
HTML Engine Chromium (über ein Add-on) Chromium (eingebaut)
Gemeinschaftsgröße Kleiner Größer, mehr Ressourcen
Dokumentation Technische Referenz Ausführliche Tutorials

Funktionsparität

Beide Bibliotheken unterstützen umfassende PDF-Funktionen:

Feature BitMiracle Docotic PDF IronPDF
PDF von Grund auf neu erstellen
HTML zu PDF ✅(Add-on erforderlich) ✅(eingebaut)
URL zu PDF ✅(Add-on erforderlich) ✅(eingebaut)
PDF-Manipulation
Textextraktion
Zusammenführen/Spalten
Digitale Signaturen
Verschlüsselung
Ausfüllen von Formularen
PDF/A-Konformität

Schlüsselunterschiede im Ansatz

BitMiracle Docotic PDF verwendet Canvas-basiertes Zeichnen mit Koordinatenpositionierung (canvas.DrawString(x, y, text)), währendIronPDFHTML/CSS für Layout und Positionierung nutzt. Dies stellt einen Paradigmenwechsel dar, der die Erstellung von Inhalten für Entwickler, die mit Webtechnologien vertraut sind, vereinfacht.

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)

Prüfung der BitMiracle Docotic PDF-Nutzung

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

# Find all Docotic.Pdf usages in your codebase
grep -r "using BitMiracle.Docotic" --include="*.cs" .
grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" .

# Find NuGet package references
grep -r "Docotic.Pdf" --include="*.csproj" .
# Find all Docotic.Pdf usages in your codebase
grep -r "using BitMiracle.Docotic" --include="*.cs" .
grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" .

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

Bahnbrechende Änderungen, die zu erwarten sind

Ändern Sie BitMiracle Docotic PDF IronPDF Auswirkungen
HTML-Rendering Erfordert das Add-on HtmlToPdf Eingebaut Add-on-Paket entfernen
Seitenindizierung 0-basiert (Seiten[0]) 0-basiert (Seiten[0]) Keine Änderung erforderlich
Koordinatensystem Ursprung unten links HTML/CSS-Fluss CSS für die Positionierung verwenden
Leinwandzeichnung PdfCanvas.DrawText() HTML-Auszeichnung Paradigmenwechsel
Textextraktion Seite.GetText() pdf.ExtractAllText() Änderung des Methodennamens
Dokument laden new PdfDocument(Pfad) PdfDocument.FromFile(path) Konstruktor → statische Methode
Sparen document.Save(Pfad) pdf.SaveAs(Pfad) Änderung des Methodennamens
Entsorgung IDisposable-Muster Nicht erforderlich Einfachere Ressourcenverwaltung

Schritt-für-Schritt-Migrationsprozess

Schritt 1: NuGet-Pakete aktualisieren

Entfernen Sie BitMiracle Docotic PDF-Pakete und installieren Sie IronPDF:

# Remove Docotic.Pdf packages
dotnet remove package BitMiracle.Docotic.Pdf
dotnet remove package BitMiracle.Docotic.Pdf.HtmlToPdf
dotnet remove package BitMiracle.Docotic.Pdf.Layout

# Install IronPDF
dotnet add package IronPdf
# Remove Docotic.Pdf packages
dotnet remove package BitMiracle.Docotic.Pdf
dotnet remove package BitMiracle.Docotic.Pdf.HtmlToPdf
dotnet remove package BitMiracle.Docotic.Pdf.Layout

# Install IronPDF
dotnet add package IronPdf
SHELL

Schritt 2: Namensraumreferenzen aktualisieren

Ersetzen Sie BitMiracle Docotic PDF-Namensräume durch IronPDF:

// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
using BitMiracle.Docotic.Pdf.HtmlToPdf;

// Add this
using IronPdf;
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
using BitMiracle.Docotic.Pdf.HtmlToPdf;

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

Schritt 3: Lizenz konfigurieren

// 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";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Komplette API-Migrationsreferenz

Dokumentenoperationen

Aufgabe BitMiracle Docotic PDF IronPDF
Leeres Dokument erstellen new PdfDocument() new PdfDocument()
Aus Datei laden new PdfDocument(Pfad) PdfDocument.FromFile(path)
Vom Stream laden PdfDocument.Load(stream) PdfDocument.FromStream(stream)
Aus Bytes laden PdfDocument.Load(bytes) PdfDocument.FromBinaryData(bytes)
In Datei speichern document.Save(Pfad) pdf.SaveAs(Pfad)
Seitenzahl abrufen document.PageCount pdf.PageCount
Schließen/Entsorgen document.Dispose() Nicht erforderlich

HTML-zu-PDF-Konvertierung

Aufgabe BitMiracle Docotic PDF(HtmlToPdf Add-on) IronPDF
HTML-String in PDF HtmlConverter.Create(html).ToPdf() renderer.RenderHtmlAsPdf(html)
HTML-Datei in PDF HtmlConverter.Create(new Uri(filePath)).ToPdf() renderer.RenderHtmlFileAsPdf(path)
URL zu PDF HtmlConverter.Create(new Uri(url)).ToPdf() renderer.RenderUrlAsPdf(url)
Seitengröße festlegen options.PageSize = PageSize.A4 renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Ränder setzen options.PageMargins = new Margins(20) renderer.RenderingOptions.MarginTop = 20

Merge- und Split-Operationen

Aufgabe BitMiracle Docotic PDF IronPDF
Dokumente zusammenführen doc1.Append(doc2) PdfDocument.Merge(pdf1, pdf2)
Dokument teilen document.CopyPage(index) in neues Dokument pdf.CopyPages(start, end)

Beispiele für die Code-Migration

HTML-zu-PDF-Konvertierung

Der häufigste Vorgang verdeutlicht die erhebliche Vereinfachung, dieIronPDFbietet.

BitMiracle Docotic PDF-Implementierung:

// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;

class Program
{
    static void Main()
    {
        using (var pdf = new PdfDocument())
        {
            string html = "<html><body><h1>Hello World</h1><p>This is HTML zu PDFconversion.</p></body></html>";

            pdf.CreatePage(html);
            pdf.Save("output.pdf");
        }

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

class Program
{
    static void Main()
    {
        using (var pdf = new PdfDocument())
        {
            string html = "<html><body><h1>Hello World</h1><p>This is HTML zu PDFconversion.</p></body></html>";

            pdf.CreatePage(html);
            pdf.Save("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()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1><p>This is HTML zu PDFconversion.</p></body></html>";

        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()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1><p>This is HTML zu PDFconversion.</p></body></html>";

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

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

IronPDF macht die benutzende Anweisung überflüssig und stellt eine eigene ChromePdfRenderer Klasse zur Verfügung, die die Chromium-basierte Rendering-Fähigkeit deutlich macht. Weitere Optionen zur HTML-Konvertierung finden Sie in der HTML to PDF-Dokumentation.

Mehrere PDFs zusammenführen

BitMiracle Docotic PDF-Implementierung:

// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;

class Program
{
    static void Main()
    {
        using (var pdf1 = new PdfDocument("document1.pdf"))
        using (var pdf2 = new PdfDocument("document2.pdf"))
        {
            pdf1.Append(pdf2);
            pdf1.Save("merged.pdf");
        }

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

class Program
{
    static void Main()
    {
        using (var pdf1 = new PdfDocument("document1.pdf"))
        using (var pdf2 = new PdfDocument("document2.pdf"))
        {
            pdf1.Append(pdf2);
            pdf1.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("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.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("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.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 Merge-Methode vonIronPDFakzeptiert mehrere Dokumente direkt und bietet eine sauberere API als das iterative Append-Muster. Weitere Optionen finden Sie in der PDF-Merge-Dokumentation.

Textextraktion

BitMiracle Docotic PDF-Implementierung:

// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;

class Program
{
    static void Main()
    {
        using (var pdf = new PdfDocument("document.pdf"))
        {
            string allText = "";

            foreach (var page in pdf.Pages)
            {
                allText += page.GetText();
            }

            Console.WriteLine("Extracted text:");
            Console.WriteLine(allText);
        }
    }
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;

class Program
{
    static void Main()
    {
        using (var pdf = new PdfDocument("document.pdf"))
        {
            string allText = "";

            foreach (var page in pdf.Pages)
            {
                allText += page.GetText();
            }

            Console.WriteLine("Extracted text:");
            Console.WriteLine(allText);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        string allText = pdf.ExtractAllText();

        Console.WriteLine("Extracted text:");
        Console.WriteLine(allText);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        string allText = pdf.ExtractAllText();

        Console.WriteLine("Extracted text:");
        Console.WriteLine(allText);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF reduziert die Textextraktion von einer mehrzeiligen Schleife auf einen einzigen Methodenaufruf. Weitere Extraktionsmöglichkeiten finden Sie in der Textextraktionsdokumentation.

Passwortschutz und Verschlüsselung

IronPDF-Implementierung:

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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Umfassende Sicherheitsoptionen finden Sie in der Verschlüsselungsdokumentation.

Kopf- und Fußzeilen

IronPDF-Implementierung:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:12px;'>
            Company Header - Confidential
        </div>",
    DrawDividerLine = true,
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true,
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
pdf.SaveAs("with_headers.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:12px;'>
            Company Header - Confidential
        </div>",
    DrawDividerLine = true,
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true,
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
pdf.SaveAs("with_headers.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF unterstützt Platzhalter-Token wie {page} und {total-pages} für die dynamische Seitennummerierung. Weitere Optionen finden Sie in der Kopf- und Fußzeilen-Dokumentation.

Kritische Hinweise zur Migration

Paradigmenwechsel von Canvas zu HTML

Der auf Leinwand basierende Zeichenansatz von BitMiracle Docotic PDFmuss in HTML mit CSS-Positionierung umgewandelt werden:

BitMiracle Docotic PDF-Muster:

var canvas = pdfPage.Canvas;
canvas.DrawString(50, 50, "Hello, World!");
var canvas = pdfPage.Canvas;
canvas.DrawString(50, 50, "Hello, World!");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF-Muster:

var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Gleiche Seite indexieren

Beide Bibliotheken verwenden eine 0-basierte Indizierung (Pages[0] ist die erste Seite) - keine Änderungen am Code für den Seitenzugriff erforderlich.

Entsorgung nicht erforderlich

IronPDF benötigt keine using-Anweisungen für die Speicherverwaltung, was die Codestruktur vereinfacht:

// BitMiracle Docotic PDF- disposal required
using (var pdf = new PdfDocument("input.pdf"))
{
    // operations
}

//IronPDF- disposal optional
var pdf = PdfDocument.FromFile("input.pdf");
// operations - no using statement needed
// BitMiracle Docotic PDF- disposal required
using (var pdf = new PdfDocument("input.pdf"))
{
    // operations
}

//IronPDF- disposal optional
var pdf = PdfDocument.FromFile("input.pdf");
// operations - no using statement needed
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Async-Unterstützung

Das HtmlToPdf-Add-on von BitMiracle Docotic PDFerfordert überall asynchrone Muster.IronPDFunterstützt sowohl synchrone als auch asynchrone Methoden:

// Synchronous
var pdf = renderer.RenderHtmlAsPdf(html);

// Asynchronous
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Synchronous
var pdf = renderer.RenderHtmlAsPdf(html);

// Asynchronous
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ASP.NET Core Integration

IronPDF-Muster:

[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate")]
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");

        return File(pdf.BinaryData, "application/pdf", "report.pdf");
    }

    [HttpGet("generate-async")]
    public async Task<IActionResult> GeneratePdfAsync()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");

        return File(pdf.Stream, "application/pdf", "report.pdf");
    }
}
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate")]
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");

        return File(pdf.BinaryData, "application/pdf", "report.pdf");
    }

    [HttpGet("generate-async")]
    public async Task<IActionResult> GeneratePdfAsync()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");

        return File(pdf.Stream, "application/pdf", "report.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Post-Migrations-Checkliste

Überprüfen Sie nach Abschluss der Codemigration Folgendes:

  • [Führen Sie alle Unit-Tests aus, um zu überprüfen, ob die PDF-Erzeugung korrekt funktioniert
  • [Vergleichen Sie die Qualität der PDF-Ausgabe (die Chromium-Engine vonIronPDFkann geringfügig abweichen - in der Regel ist sie besser)
  • [Überprüfen Sie die Genauigkeit der Textextraktion
  • [Testen Sie die Funktionalität des Ausfüllens von Formularen
  • [Validierung digitaler Signaturen (falls zutreffend)
  • [Leistungstest Batch-Operationen
  • [Testen in allen Zielumgebungen
  • [CI/CD-Pipelines aktualisieren
  • [Docotic.Pdf-Lizenzdateien entfernen

Zukunftssicherheit für Ihre PDF-Infrastruktur

Mit .NET 10 am Horizont und C# 14, das neue Sprachfunktionen einführt, vereinfacht die Wahl einer PDF-Bibliothek mit einer einheitlichen Architektur die Verwaltung von Abhängigkeiten und gewährleistet die konsistente Verfügbarkeit von Funktionen. DaIronPDFnur ein einziges Paket anbietet, müssen Sie sich nicht um die Kompatibilität mehrerer Add-on-Versionen kümmern, wenn sich Ihre Projekte bis ins Jahr 2025 oder 2026 erstrecken.

Zusätzliche Ressourcen


Durch die Migration von BitMiracle Docotic PDFzuIronPDFentfällt die Komplexität der Verwaltung mehrerer Zusatzpakete, während die gleichen Chromium-basierten HTML-Rendering-Funktionen zur Verfügung stehen. Der Übergang vom Canvas-basierten Zeichnen zur HTML/CSS-Positionierung nutzt die Webentwicklungskenntnisse, über die die meisten .NET-Entwickler bereits verfügen, und führt zu einem besser wartbaren Code für die PDF-Erstellung.

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