Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von SelectPdf zu IronPDF in C#

Die Migration von SelectPdfzuIronPDFverwandelt Ihren PDF-Generierungs-Workflow von einer reinen Windows-Lösung mit einer veralteten Rendering-Engine in eine moderne, plattformübergreifende Bibliothek mit vollständiger CSS3- und JavaScript-Unterstützung. Dieser Leitfaden bietet einen vollständigen, schrittweisen Migrationspfad, der die Bereitstellung auf Linux, Docker, Azure-Funktionenund anderen Cloud-Plattformen ermöglicht, die SelectPdfnicht unterstützen kann.

Warum von SelectPdfzuIronPDFmigrieren

SelectPdfverstehen

SelectPdf ist eine kommerzielle Bibliothek, die für die Konvertierung von HTML-Inhalten in PDF-Dateien mit C# entwickelt wurde. Die Bibliothek ist auf Entwickler zugeschnitten, die eine nahtlose Integration von PDF-Generierungsfunktionen in ihre Anwendungen benötigen. Die Stärke von SelectPdfliegt in seiner einfachen API, was es zu einer attraktiven Option für diejenigen macht, die neu in der PDF-Erstellung sind.

Potenzielle Benutzer müssen sich jedoch der kritischen Grenzen der Übersetzung bewusst sein. Obwohl SelectPdfals plattformübergreifend beworben wird, funktioniert es nur in Windows-Umgebungen. Dies stellt eine erhebliche Hürde dar, wenn es um Cloud-basierte Bereitstellungslösungen wie Azure-Funktionenoder Container wie Docker geht. Außerdem ist die kostenlose Version stark eingeschränkt und erlaubt nur bis zu fünf Seiten, bevor sie mit einem aggressiven Wasserzeichen versehen wird. SelectPdfnutzt einen veralteten Blink-Fork und eine WebKit-basierte Architektur, die Kompatibilitätsprobleme mit modernen Webtechnologien wie CSS-Rasterund Advanced Flexbox verursacht.

Kritische Beschränkungen von SelectPdf

Problem Auswirkungen IronPDFLösung
Nur für Windows Kann nicht auf Linux, Docker, Azure-Funktionenbereitgestellt werden Vollständige plattformübergreifende Unterstützung
Veraltete Rendering-Engine Modernes CSS versagt, Layouts brechen Aktuelles Chromium
Beschränkung der kostenlosen Version auf 5 Seiten Aggressives Wasserzeichen nach 5 Seiten Großzügige Probezeit
Keine Unterstützung von .NET 10 Zukunftssichere Probleme Vollständige Unterstützung von .NET 10
Cloud-Bereitstellung blockiert Kann AWS Lambda, Azure-Funktionennicht verwenden Cloud-nativ

Vergleich zwischen SelectPdfund IronPDF

Feature SelectPdf IronPDF
Windows, Linux, macOS, Docker, Azure, AWS. Nur Windows Vollständig plattformübergreifend, 10+ Distros
Unterstützung moderner Webstandards Begrenzt (veraltetes Blink) Vollständiges CSS3, modernes Chromium
Maximale Seitenzahl der kostenlosen Version 5 Seiten Flexibel, keine feste Grenze
Preisgestaltung Beginnt bei $499 Transparente und flexible Preisgestaltung
.NET 10 Unterstützung Keine Volle Unterstützung
Bereitstellung in Cloud-Umgebungen Nicht unterstützt Vollständig unterstützt
CSS Grid Beschränkt Volle Unterstützung
Flexbox Beschränkt Volle Unterstützung
CSS-Variablen Nicht unterstützt Volle Unterstützung
Docker NICHT UNTERSTÜTZT Offizielle Bilder
Azure-Funktionen NICHT UNTERSTÜTZT Volle Unterstützung
AWS Lambda NICHT UNTERSTÜTZT Volle Unterstützung

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, unterstützt SelectPdfausdrücklich nicht .NET 10, was zu Problemen bei der Zukunftssicherheit führt.IronPDFbietet volle Unterstützung für alle modernen .NET-Versionen.


Bevor Sie beginnen

Voraussetzungen

  1. .NET-Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9/10+
  2. NuGet-Zugriff: Möglichkeit zur Installation von NuGet-Paketen
  3. IronPDF-Lizenz: Ihren Lizenzschlüssel erhalten Sie auf ironpdf.com.

NuGet-Paketänderungen

# Remove SelectPdf
dotnet remove package Select.HtmlToPdf

# Install IronPDF
dotnet add package IronPdf
# Remove SelectPdf
dotnet remove package Select.HtmlToPdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Komplette API-Referenz

Namensraumänderungen

// Before: SelectPdf
using SelectPdf;

// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
// Before: SelectPdf
using SelectPdf;

// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
$vbLabelText   $csharpLabel

Kern-API-Zuordnungen

SelectPdf IronPDF Notizen
HtmlToPdf ChromePdfRenderer Core-Konverter-Klasse
converter.ConvertHtmlString(html) renderer.RenderHtmlAsPdf(html) HTML-String-Konvertierung
converter.ConvertUrl(url) renderer.RenderUrlAsPdf(url) URL-Konvertierung
doc.Save(Pfad) pdf.SaveAs(Pfad) In Datei speichern
doc.Close() Nicht erforderlich IronPDFübernimmt die Bereinigung
converter.Options.PdfPageSize renderer.RenderingOptions.PaperSize Papierformat
converter.Options.PdfPageOrientation renderer.RenderingOptions.PaperOrientation Orientierung
converter.Options.MarginTop renderer.RenderingOptions.MarginTop Oberer Rand
converter.Options.MarginBottom renderer.RenderingOptions.MarginBottom Unterer Rand
converter.Options.MarginLeft renderer.RenderingOptions.MarginLeft Linker Rand
converter.Options.MarginRight renderer.RenderingOptions.MarginRight Rechter Rand
PdfSeiteGröße.A4 PdfPaperSize.A4 A4-Format enum
PdfPageOrientation.Portrait PdfPaperOrientation.Portrait Porträt enum
PdfPageOrientation.Landscape PdfPaperOrientation.Landscape Landscape enum
{Seitennummer} {Seite} Platzhalter für die Seitenzahl
{Gesamtseiten} {Gesamtseiten} Gesamtseiten Platzhalter

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML-Strings in PDF

Vor (SelectPdf):

// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

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

        HtmlToPdf converter = new HtmlToPdf();
        PdfDocument doc = converter.ConvertHtmlString(htmlContent);
        doc.Save("document.pdf");
        doc.Close();

        Console.WriteLine("PDF generated from HTML string");
    }
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

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

        HtmlToPdf converter = new HtmlToPdf();
        PdfDocument doc = converter.ConvertHtmlString(htmlContent);
        doc.Save("document.pdf");
        doc.Close();

        Console.WriteLine("PDF generated from HTML string");
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

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

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");

        Console.WriteLine("PDF generated from HTML string");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");

        Console.WriteLine("PDF generated from HTML string");
    }
}
$vbLabelText   $csharpLabel

Dieses Beispiel veranschaulicht die wichtigsten API-Unterschiede. SelectPdfverwendet HtmlToPdfals Konverterklasse und ruft ConvertHtmlString() auf, um ein PdfDocument zu erstellen, dann Save() und Close(), um es zu speichern und zu bereinigen.

IronPDF verwendet ChromePdfRenderermit RenderHtmlAsPdf() und gibt ein PdfDocument zurück, das mit SaveAs() gespeichert wird. Der Close()-Aufruf entfällt -IronPDFübernimmt die Ressourcenverwaltung automatisch. Umfassende Beispiele finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: Konvertierung von URL in PDF

Vor (SelectPdf):

// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf converter = new HtmlToPdf();
        PdfDocument doc = converter.ConvertUrl("https://www.example.com");
        doc.Save("output.pdf");
        doc.Close();

        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf converter = new HtmlToPdf();
        PdfDocument doc = converter.ConvertUrl("https://www.example.com");
        doc.Save("output.pdf");
        doc.Close();

        Console.WriteLine("PDF created successfully");
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        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();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
$vbLabelText   $csharpLabel

Die Methode ConvertUrl() von SelectPdfentspricht direkt der Methode RenderUrlAsPdf() von IronPDF. Der entscheidende Unterschied liegt in der Rendering-Engine: SelectPdfverwendet einen veralteten Blink/WebKit-Fork, der mit modernem CSS zu kämpfen hat, währendIronPDFdie neueste stabile Chromium-Version mit voller CSS3- und JavaScript-Unterstützung verwendet. Erfahren Sie mehr in unseren Tutorials.

Beispiel 3: Benutzerdefinierte Seiteneinstellungen und Ränder

Vor (SelectPdf):

// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf converter = new HtmlToPdf();

        converter.Options.PdfPageSize = PdfPageSize.A4;
        converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
        converter.Options.MarginTop = 20;
        converter.Options.MarginBottom = 20;
        converter.Options.MarginLeft = 20;
        converter.Options.MarginRight = 20;

        string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
        PdfDocument doc = converter.ConvertHtmlString(html);
        doc.Save("custom-settings.pdf");
        doc.Close();

        Console.WriteLine("PDF with custom settings created");
    }
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdf converter = new HtmlToPdf();

        converter.Options.PdfPageSize = PdfPageSize.A4;
        converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
        converter.Options.MarginTop = 20;
        converter.Options.MarginBottom = 20;
        converter.Options.MarginLeft = 20;
        converter.Options.MarginRight = 20;

        string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
        PdfDocument doc = converter.ConvertHtmlString(html);
        doc.Save("custom-settings.pdf");
        doc.Close();

        Console.WriteLine("PDF with custom settings created");
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;

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

        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom-settings.pdf");

        Console.WriteLine("PDF with custom settings created");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;

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

        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom-settings.pdf");

        Console.WriteLine("PDF with custom settings created");
    }
}
$vbLabelText   $csharpLabel

Das Muster der Seiteneinstellungen ist nahezu identisch, mit einfachen Änderungen der Eigenschaftsnamen:

  • converter.Options.PdfPageSizerenderer.RenderingOptions.PaperSize
  • converter.Options.PdfPageOrientationrenderer.RenderingOptions.PaperOrientation
  • PdfSeiteGröße.A4PdfPaperSize.A4
  • PdfPageOrientation.PortraitPdfPaperOrientation.Portrait

Die Randeigenschaften behalten dieselben Namen und Einheiten bei.


Das Nur-Windows-Problem

Einschränkung der Plattform von SelectPdf

Ungeachtet aller Marketingaussagen unterstützt SelectPdfausdrücklich Folgendes nicht:

  • Linux (jede Distribution)
  • macOS
  • Docker-Container
  • Azure-Funktionen
  • AWS Lambda
  • Google Cloud-Funktionen
  • Alle ARM-basierten Systeme

Dies ist eine grundlegende architektonische Einschränkung - SelectPdfhängt von Windows-spezifischen Bibliotheken ab und kann nicht portiert werden.

Vergleich der Plattformunterstützung

Plattform SelectPdf IronPDF
Windows Server 2019+
Windows 10/11
Ubuntu 20.04+
Debian 10+
CentOS 7+
Alpen-Linux
Amazon Linux 2
macOS 10.15+
Azure App Service (Linux)
Azure-Funktionen
AWS Lambda
Docker (Linux)
Kubernetes

Die veraltete Rendering-Engine

CSS-Funktionsunterstützung im Vergleich

SelectPdf verwendet einen veralteten Blink/WebKit-Fork, der nicht mit den modernen Webstandards Schritt gehalten hat:

CSS-Funktion SelectPdf IronPDF
CSS-Raster ⚠️ Teilweise/gebrochen ✅Vollständig
Flexbox (grundlegend)
Flexbox (Gap-Eigenschaft)
CSS-Variablen
CSS calc() ⚠️ Eingeschränkt
@media print ⚠️ Eingeschränkt
@font-face ⚠️ Eingeschränkt
Web-Schriftarten ⚠️ Eingeschränkt
SVG ⚠️ Basic ✅Vollständig
CSS-Transformationen ⚠️ Eingeschränkt
CSS-Animationen

Neue Funktionen nach der Migration

Nach der Umstellung aufIronPDFerhalten Sie Funktionen, die SelectPdfnicht bieten kann:

Plattformübergreifende Bereitstellung

// ✅IronPDF- Works everywhere
using IronPdf;

// Azure App Service (Linux)- WORKS
// Docker container - WORKS
// AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
// ✅IronPDF- Works everywhere
using IronPdf;

// Azure App Service (Linux)- WORKS
// Docker container - WORKS
// AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Moderne CSS-Unterstützung

// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; --gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; --gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
    <div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
$vbLabelText   $csharpLabel

Kein Close() erforderlich

IronPDF verwaltet die Ressourcen automatisch:

// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed

// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
}
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed

// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
}
$vbLabelText   $csharpLabel

Migrations-Checkliste

Vor der Migration

  • Alle SelectPdf-Verwendungen im Quellcode prüfen
  • Dokumentieren Sie die aktuellen Konverteroptionen für die Zuordnung
  • Header-/Footer-Implementierungen identifizieren
  • Überprüfen Sie die Syntax für den Seitenzahlenplatzhalter ( {Seitennummer}{Seite})
  • Beachten Sie die grundlegenden URL-Verarbeitungsmuster
  • Zielbereitstellungsplattformen überprüfen
  • Besorgen Sie sich den IronPDF-Lizenzschlüssel von ironpdf.com

Code-Aktualisierungen

  • Entfernen Sie das NuGet-Paket Select.HtmlToPdf
  • Installieren Sie IronPdf NuGet-Paket
  • Namespace-Importe aktualisieren ( using SelectPdf;using IronPdf; )
  • Ersetzen Sie HtmlToPdfdurch ChromePdfRenderer
  • Ersetzen Sie ConvertHtmlString() durch RenderHtmlAsPdf()
  • Ersetzen Sie ConvertUrl() durch RenderUrlAsPdf()
  • Aktualisieren der Options-Eigenschaftsnamen ( Options.PdfPageSizeRenderingOptions.PaperSize )
  • PdfPageSize in PdfPaperSize konvertieren
  • Konvertierung PdfPageOrientation in PdfPaperOrientation
  • Ersetzen Sie doc.Save() durch pdf.SaveAs()
  • Entfernen Sie alle Aufrufe doc.Close()
  • Korrigiere die Platzhalter für Seitenzahlen ( {Seitennummer}{Seite}, {Gesamtseiten}{Gesamtseiten})
  • Lizenzinitialisierung beim Anwendungsstart hinzufügen

Nach der Migration

  • Alle Unit-Tests ausführen
  • CSS-Rendering überprüfen (insbesondere Grid/Flexbox)
  • JavaScript-Ausführung testen
  • Überprüfen Sie die Seitenzahlen in Kopf- und Fußzeile.
  • Test auf den Zielplattformen (Linux, Docker usw.)
  • Leistungstest
  • Vergleich der PDF-Ausgabequalität
  • CI/CD-Pipelines aktualisieren
  • Testen von Cloud-Bereitstellungen (falls zutreffend)

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