Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von Foxit PDF SDK zu IronPDF: (.NET-Anleitung)

Migrieren Sie von Foxit PDF SDKzu IronPDF: Vollständige C#-Migrationsanleitung

Die Migration von Foxit PDF SDKzuIronPDFrationalisiert Ihren .NET-PDF-Erzeugungsworkflow, indem komplexe, auf Unternehmen ausgerichtete APIs durch moderne, entwicklerfreundliche Muster ersetzt werden. Dieser Leitfaden bietet einen umfassenden, schrittweisen Migrationspfad, der Standardcode eliminiert und PDF-Vorgänge in Ihrer Codebasis vereinfacht.

Warum von Foxit PDF SDKzuIronPDFmigrieren

Die Foxit PDF-Herausforderungen

Foxit PDF SDK ist eine leistungsstarke Bibliothek auf Unternehmensebene, die jedoch eine erhebliche Komplexität mit sich bringt, die die Entwicklung verlangsamen kann:

  1. Komplexes Lizenzierungssystem: Mehrere Produkte, SKUs und Lizenztypen (pro Entwickler, pro Server, OEM usw.) machen es schwierig, die richtige Option für Ihr Projekt zu wählen.

  2. Enterprise-Preise: Die Preisgestaltung ist auf große Unternehmen zugeschnitten und kann für kleinere Teams oder einzelne Entwickler unerschwinglich sein.

  3. Manuelle Installation: Foxit PDF SDKerfordert manuelle DLL-Referenzen oder private NuGet-Feeds - es ist kein einfaches öffentliches NuGet-Paket verfügbar.

  4. Verbale API: Die Initialisierung von Bibliotheken mit Library.Initialize(), die Überprüfung von Fehlercodes und die expliziten Library.Release()-Aufrufe fügen jedem Vorgang einen umfangreichen Textbaustein hinzu.

  5. Separates HTML-Konvertierungs-Add-on: Die Konvertierung von HTML in PDF erfordert den Kauf eines zusätzlichen Add-ons, das nicht im Basis-SDK enthalten ist.

  6. Komplexe Konfiguration: Einstellungen erfordern eine detaillierte Objektkonfiguration (z.B. HTML2PDFSettingData) mit mehreren Eigenschaften.

  7. C++-Erbe: Die API-Muster spiegeln die Ursprünge von C++ wider und wirken in modernen C#-Anwendungen weniger natürlich.

Vergleich zwischen Foxit PDF und IronPDF

Aspekt Foxit PDF SDK IronPDF
Installation Manuelle DLLs/private Feeds Einfaches NuGet-Paket
Lizenzierung Komplexe, auf Unternehmen ausgerichtete Transparent, für alle Größen geeignet
Initialisierung Library.Initialize(sn, key) Lizenzschlüssel einmalig festlegen
Fehlerbehandlung ErrorCode Aufzählungen Standard .NET Ausnahmen
HTML zu PDF Separater Kauf eines Add-ons Eingebaute Chromium-Engine
API-Stil C++-Erbe, wortreich Moderne .NET-Muster
Bereinigung von Ressourcen Handbuch Close()/Release() IDisposable/automatisch
Dokumentation Portal für Unternehmensdokumente Öffentliche Tutorials

Kosten-Nutzen-Analyse

Der Wechsel von Foxit PDF zuIronPDFbietet greifbare Entwicklungsvorteile: geringere Komplexität durch einfachere APIs, schnellere Entwicklung mit intuitiven Methoden, moderne .NET-Kompatibilität einschließlich async/await- und LINQ-Unterstützung, ein HTML-first-Ansatz, der vorhandene Webkenntnisse nutzt, und All-inclusive-Funktionen ohne separate Add-on-Käufe.IronPDFbietet bei der Planung der Einführung von .NET 10 und C# 14 bis 2025 und 2026 eine zukunftssichere Grundlage für die PDF-Erstellung.


Bevor Sie beginnen

Voraussetzungen

  1. .NET-Umgebung:IronPDFunterstützt .NET Framework 4.6.2+, .NET Core 3.1+, .NET 5/6/7/8/9+
  2. NuGet Access: Sicherstellen, dass Sie Pakete von NuGet installieren können
  3. Lizenzschlüssel: Beziehen Sie Ihren IronPDF-Lizenzschlüssel für den Produktionseinsatz von ironpdf.com

Sichern Sie Ihr Projekt

# Create a backup branch
git checkout -b pre-ironpdf-migration
git add .
git commit -m "Backup before Foxit PDF SDKtoIronPDFmigration"
# Create a backup branch
git checkout -b pre-ironpdf-migration
git add .
git commit -m "Backup before Foxit PDF SDKtoIronPDFmigration"
SHELL

Alle Foxit PDF-Verwendung identifizieren

# Find all Foxit PDF SDKreferences
grep -r "foxit\|PDFDoc\|PDFPage\|Library.Initialize\|Library.Release" --include="*.cs" --include="*.csproj" .

# Find Foxit DLL references
find . -name "*.csproj" | xargs grep -l "Foxit\|fsdk"
# Find all Foxit PDF SDKreferences
grep -r "foxit\|PDFDoc\|PDFPage\|Library.Initialize\|Library.Release" --include="*.cs" --include="*.csproj" .

# Find Foxit DLL references
find . -name "*.csproj" | xargs grep -l "Foxit\|fsdk"
SHELL

Dokumentieren Sie die aktuelle Funktionalität

Vor der Migration, Katalog:

  • Welche Funktionen von Foxit PDF Sie nutzen (HTML-Konvertierung, Anmerkungen, Formulare, Sicherheit)
  • Standorte der Lizenzschlüssel und Initialisierungscode
  • Benutzerdefinierte Konfigurationen und Einstellungen
  • Fehlerbehandlungsmuster mit ErrorCode-Enums

Schnellstart Migration

Schritt 1: NuGet-Pakete aktualisieren

# Foxit PDF SDKtypically requires manual removal of DLL references
# Check your .csproj for Foxit references and remove them

# Install IronPDF
dotnet add package IronPdf
# Foxit PDF SDKtypically requires manual removal of DLL references
# Check your .csproj for Foxit references and remove them

# Install IronPDF
dotnet add package IronPdf
SHELL

Wenn Sie Foxit PDF-Referenzen in .csproj haben, entfernen Sie diese manuell:

<!-- Remove these manually -->
<Reference Include="fsdk_dotnet">
    <HintPath>..\libs\Foxit\fsdk_dotnet.dll</HintPath>
</Reference>
<!-- Remove these manually -->
<Reference Include="fsdk_dotnet">
    <HintPath>..\libs\Foxit\fsdk_dotnet.dll</HintPath>
</Reference>
XML

Schritt 2: Namespaces aktualisieren

// Before (Foxit PDF)
using foxit;
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
using foxit.pdf.annots;
using foxit.addon.conversion;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// Before (Foxit PDF)
using foxit;
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
using foxit.pdf.annots;
using foxit.addon.conversion;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Schritt 3:IronPDFinitialisieren

Eine der wichtigsten Verbesserungen bei dieser Foxit-PDF-Migration ist die Abschaffung des komplexen Initialisierungs- und Bereinigungsmusters:

// Before (Foxit PDF)
string sn = "YOUR_SERIAL_NUMBER";
string key = "YOUR_LICENSE_KEY";
ErrorCode error_code = Library.Initialize(sn, key);
if (error_code != ErrorCode.e_ErrSuccess)
{
    throw new Exception("Failed to initialize Foxit PDF SDK");
}
// ... your code ...
Library.Release();  // Don't forget this!

// After (IronPDF)
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// That's it! No Release() needed
// Before (Foxit PDF)
string sn = "YOUR_SERIAL_NUMBER";
string key = "YOUR_LICENSE_KEY";
ErrorCode error_code = Library.Initialize(sn, key);
if (error_code != ErrorCode.e_ErrSuccess)
{
    throw new Exception("Failed to initialize Foxit PDF SDK");
}
// ... your code ...
Library.Release();  // Don't forget this!

// After (IronPDF)
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// That's it! No Release() needed
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Schritt 4: Grundlegendes Konvertierungsmuster

// Before (Foxit PDF)
Library.Initialize(sn, key);
HTML2PDFSettingData settings = new HTML2PDFSettingData();
settings.page_width = 612.0f;
settings.page_height = 792.0f;
using (HTML2PDF html2pdf = new HTML2PDF(settings))
{
    html2pdf.Convert(htmlContent, "output.pdf");
}
Library.Release();

// After (IronPDF)
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
// Before (Foxit PDF)
Library.Initialize(sn, key);
HTML2PDFSettingData settings = new HTML2PDFSettingData();
settings.page_width = 612.0f;
settings.page_height = 792.0f;
using (HTML2PDF html2pdf = new HTML2PDF(settings))
{
    html2pdf.Convert(htmlContent, "output.pdf");
}
Library.Release();

// After (IronPDF)
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Komplette API-Referenz

Namensraum-Zuordnung

Foxit PDF-Namensraum IronPDF-Äquivalent Notizen
foxit IronPdf Haupt-Namensraum
foxit.common IronPdf Gängige Typen
foxit.common.fxcrt Nicht anwendbar Low-Level (nicht erforderlich)
foxit.pdf IronPdf Arbeitsweise des PDF-Dokuments
foxit.pdf.annots IronPdf.Editing Anmerkungen
foxit.addon.conversion IronPdf.Rendering HTML/Bild-Konvertierung

Kernklassen-Zuordnung

Foxit PDF SDK-Klasse IronPDF-Äquivalent Notizen
Bibliothek Nicht anwendbar IronPDFverwaltet automatisch
PDFDoc PdfDocument Klasse des Hauptdokuments
PDFSeite PdfDocument.Pages[i] Zugriff auf die Seite
HTML2PDF ChromePdfRenderer HTML-Konvertierung
TextSeite pdf.ExtractTextFromPage(i) Textextraktion
Wasserzeichen TextStamper / ImageStamper Wasserzeichen
Sicherheit Sicherheitseinstellungen PDF-Sicherheit
Formular pdf.Form Formularfelder
Metadaten pdf.MetaData Metadaten des Dokuments

PDFDoc-Methoden

Foxit PDFDoc IronPDFPdfDocument Notizen
neues PDFDoc(Pfad) PdfDocument.FromFile(path) Aus Datei laden
doc.LoadW(Passwort) PdfDocument.FromFile(Pfad, Passwort) Passwortgeschützt
doc.GetPageCount() pdf.PageCount Eigenschaft Seitenzahl
doc.GetPage(index) pdf.Seiten[index] Seite per Index aufrufen
doc.SaveAs(path, flags) pdf.SaveAs(Pfad) Dokument speichern
doc.Close() pdf.Dispose() oder using-Anweisung Bereinigung
doc.InsertDocument() PdfDocument.Merge() Dokumente zusammenführen

HTML2PDF / Konvertierung

Foxit HTML2PDF IronPDF-Äquivalent Notizen
new HTML2PDFSettingData() new ChromePdfRenderer() Renderer erstellen
Einstellungen.Seite_Breite RenderingOptions.PaperSize Standardgrößen
Einstellungen.Seitenhöhe RenderingOptions.SetCustomPaperSize() Benutzerdefinierte Größe
html2pdf.Convert(html, path) renderer.RenderHtmlAsPdf(html) HTML-Zeichenkette
html2pdf.ConvertFromURL(url, path) renderer.RenderUrlAsPdf(url) URL-Konvertierung

Wasserzeichen-Einstellungen

Foxit Wasserzeichen IronPDF-Äquivalent Notizen
new Watermark(doc, text, font, size, color) new TextStamper() Text-Wasserzeichen
WasserzeichenEinstellungen.Position VertikalesAlignment + HorizontalesAlignment Stelle
WasserzeichenEinstellungen.Rotation Rotation Rotationswinkel
WasserzeichenEinstellungen.Deckkraft Durchsetzungsvermögen 0-100 Prozent
watermark.InsertToAllPages() pdf.ApplyStamp(Stamper) Bewerben Sie sich für alle

Beispiele für Code

Beispiel 1: Konvertierung von HTML in PDF

Vor (Foxit PDF SDK):

// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        HTML2PDFSettingData settingData = new HTML2PDFSettingData();
        settingData.page_width = 612.0f;
        settingData.page_height = 792.0f;
        settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;

        using (HTML2PDF html2pdf = new HTML2PDF(settingData))
        {
            html2pdf.Convert("<html><body><h1>Hello World</h1></body></html>", "output.pdf");
        }

        Library.Release();
    }
}
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        HTML2PDFSettingData settingData = new HTML2PDFSettingData();
        settingData.page_width = 612.0f;
        settingData.page_height = 792.0f;
        settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;

        using (HTML2PDF html2pdf = new HTML2PDF(settingData))
        {
            html2pdf.Convert("<html><body><h1>Hello World</h1></body></html>", "output.pdf");
        }

        Library.Release();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        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("<html><body><h1>Hello World</h1></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Der IronPDF-Ansatz reduziert 15+ Zeilen Konfigurationscode auf nur 4 Zeilen. Keine Bibliotheksinitialisierung, keine expliziten Bereinigungen, keine komplexen Einstellungsobjekte. Weitere HTML-Rendering-Optionen finden Sie in der HTML to PDF-Dokumentation.

Beispiel 2: Konvertierung von URL in PDF

Vor (Foxit PDF SDK):

// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        HTML2PDFSettingData settingData = new HTML2PDFSettingData();
        settingData.page_width = 612.0f;
        settingData.page_height = 792.0f;
        settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;

        using (HTML2PDF html2pdf = new HTML2PDF(settingData))
        {
            html2pdf.ConvertFromURL("https://www.example.com", "output.pdf");
        }

        Library.Release();
    }
}
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        HTML2PDFSettingData settingData = new HTML2PDFSettingData();
        settingData.page_width = 612.0f;
        settingData.page_height = 792.0f;
        settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;

        using (HTML2PDF html2pdf = new HTML2PDF(settingData))
        {
            html2pdf.ConvertFromURL("https://www.example.com", "output.pdf");
        }

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

Die inIronPDFintegrierte Chromium-Engine kümmert sich automatisch um die Ausführung von JavaScript, CSS-Rendering und dynamische Inhalte. Erfahren Sie mehr über die URL in PDF Konvertierung.

Beispiel 3: Hinzufügen von Wasserzeichen

Vor (Foxit PDF SDK):

// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFDoc;
using System;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        using (PDFDoc doc = new PDFDoc("input.pdf"))
        {
            doc.Load("");

            Watermark watermark = new Watermark(doc, "Confidential", 
                new Font(Font.StandardID.e_StdIDHelvetica), 48.0f, 0xFF0000FF);

            WatermarkSettings settings = new WatermarkSettings();
            settings.flags = Watermark.e_WatermarkFlagASPageContents;
            settings.position = Watermark.Position.e_PosCenter;
            settings.rotation = -45.0f;
            settings.opacity = 0.5f;

            watermark.SetSettings(settings);
            watermark.InsertToAllPages();

            doc.SaveAs("output.pdf", PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
        }

        Library.Release();
    }
}
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFDoc;
using System;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        using (PDFDoc doc = new PDFDoc("input.pdf"))
        {
            doc.Load("");

            Watermark watermark = new Watermark(doc, "Confidential", 
                new Font(Font.StandardID.e_StdIDHelvetica), 48.0f, 0xFF0000FF);

            WatermarkSettings settings = new WatermarkSettings();
            settings.flags = Watermark.e_WatermarkFlagASPageContents;
            settings.position = Watermark.Position.e_PosCenter;
            settings.rotation = -45.0f;
            settings.opacity = 0.5f;

            watermark.SetSettings(settings);
            watermark.InsertToAllPages();

            doc.SaveAs("output.pdf", PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
        }

        Library.Release();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (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(new TextStamper()
        {
            Text = "Confidential",
            FontSize = 48,
            Opacity = 50,
            Rotation = -45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        });
        pdf.SaveAs("output.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(new TextStamper()
        {
            Text = "Confidential",
            FontSize = 48,
            Opacity = 50,
            Rotation = -45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        });
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFs TextStamper bietet eine intuitive, eigenschaftsbasierte Konfiguration anstelle von separaten Einstellungsobjekten und manueller Seiteniteration. Weitere Optionen finden Sie in der vollständigen Wasserzeichen-Dokumentation.

Beispiel 4: URL zu PDF mit Kopf- und Fußzeilen

Vor (Foxit PDF SDK):

using foxit;
using foxit.addon.conversion;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        try
        {
            HTML2PDFSettingData settings = new HTML2PDFSettingData();
            settings.page_width = 595.0f;  // A4
            settings.page_height = 842.0f;
            settings.page_margin_top = 100.0f;
            settings.page_margin_bottom = 100.0f;

            // Foxit PDF SDKhas limited header/footer support
            // Often requires post-processing or additional code

            using (HTML2PDF html2pdf = new HTML2PDF(settings))
            {
                html2pdf.ConvertFromURL("https://www.example.com", "webpage.pdf");
            }
        }
        finally
        {
            Library.Release();
        }
    }
}
using foxit;
using foxit.addon.conversion;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        try
        {
            HTML2PDFSettingData settings = new HTML2PDFSettingData();
            settings.page_width = 595.0f;  // A4
            settings.page_height = 842.0f;
            settings.page_margin_top = 100.0f;
            settings.page_margin_bottom = 100.0f;

            // Foxit PDF SDKhas limited header/footer support
            // Often requires post-processing or additional code

            using (HTML2PDF html2pdf = new HTML2PDF(settings))
            {
                html2pdf.ConvertFromURL("https://www.example.com", "webpage.pdf");
            }
        }
        finally
        {
            Library.Release();
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        renderer.RenderingOptions.WaitFor.RenderDelay(3000);  // Wait for JS

        // Built-in header/footer support
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center; font-size:12pt;'>Company Report</div>",
            DrawDividerLine = true
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:right; font-size:10pt;'>Page {page} of {total-pages}</div>",
            DrawDividerLine = true
        };

        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        renderer.RenderingOptions.WaitFor.RenderDelay(3000);  // Wait for JS

        // Built-in header/footer support
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center; font-size:12pt;'>Company Report</div>",
            DrawDividerLine = true
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:right; font-size:10pt;'>Page {page} of {total-pages}</div>",
            DrawDividerLine = true
        };

        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF bietet native Kopf- und Fußzeilen-Unterstützung mit HTML-Styling und dynamischen Seitenzahl-Platzhaltern.

Beispiel 5: PDF-Sicherheit und Verschlüsselung

Vor (Foxit PDF SDK):

using foxit;
using foxit.pdf;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        try
        {
            using (PDFDoc doc = new PDFDoc("input.pdf"))
            {
                doc.LoadW("");

                StdSecurityHandler securityHandler = new StdSecurityHandler();
                securityHandler.Initialize(
                    StdSecurityHandler.EncryptAlgorithm.e_CipherAES,
                    "user_password",
                    "owner_password",
                    PDFDoc.Permission.e_PermPrint | PDFDoc.Permission.e_PermModify,
                    128);

                doc.SetSecurityHandler(securityHandler);
                doc.SaveAs("encrypted.pdf", (int)PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
            }
        }
        finally
        {
            Library.Release();
        }
    }
}
using foxit;
using foxit.pdf;

class Program
{
    static void Main()
    {
        Library.Initialize("sn", "key");

        try
        {
            using (PDFDoc doc = new PDFDoc("input.pdf"))
            {
                doc.LoadW("");

                StdSecurityHandler securityHandler = new StdSecurityHandler();
                securityHandler.Initialize(
                    StdSecurityHandler.EncryptAlgorithm.e_CipherAES,
                    "user_password",
                    "owner_password",
                    PDFDoc.Permission.e_PermPrint | PDFDoc.Permission.e_PermModify,
                    128);

                doc.SetSecurityHandler(securityHandler);
                doc.SaveAs("encrypted.pdf", (int)PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
            }
        }
        finally
        {
            Library.Release();
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

using IronPdf;

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

        // Set passwords
        pdf.SecuritySettings.OwnerPassword = "owner_password";
        pdf.SecuritySettings.UserPassword = "user_password";

        // Set permissions
        pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
        pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.EditAll;
        pdf.SecuritySettings.AllowUserCopyPasteContent = true;
        pdf.SecuritySettings.AllowUserAnnotations = true;

        pdf.SaveAs("encrypted.pdf");
    }
}
using IronPdf;

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

        // Set passwords
        pdf.SecuritySettings.OwnerPassword = "owner_password";
        pdf.SecuritySettings.UserPassword = "user_password";

        // Set permissions
        pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
        pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.EditAll;
        pdf.SecuritySettings.AllowUserCopyPasteContent = true;
        pdf.SecuritySettings.AllowUserAnnotations = true;

        pdf.SaveAs("encrypted.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erwägungen zur Leistung

Wiederverwendung von ChromePdfRenderer

Für eine optimale Leistung während der Foxit-PDF-Migration sollten Sie die ChromePdfRenderer-Instanz wiederverwenden - sie ist thread-sicher:

// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
    private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}

// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
    var renderer = new ChromePdfRenderer();  // Wasteful
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}
// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
    private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}

// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
    var renderer = new ChromePdfRenderer();  // Wasteful
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Helfer bei der Einheitenumwandlung

Foxit PDF SDK verwendet Punkte;IronPDFarbeitet mit Millimetern. Verwenden Sie dieses Hilfsmittel während der Migration:

public static class UnitConverter
{
    public static double PointsToMm(double points) => points * 0.352778;
    public static double MmToPoints(double mm) => mm / 0.352778;
    public static double InchesToMm(double inches) => inches * 25.4;
}

// Usage: Convert Foxit's 72 points (1 inch) toIronPDFmillimeters
renderer.RenderingOptions.MarginTop = UnitConverter.PointsToMm(72); // ~25.4mm
public static class UnitConverter
{
    public static double PointsToMm(double points) => points * 0.352778;
    public static double MmToPoints(double mm) => mm / 0.352778;
    public static double InchesToMm(double inches) => inches * 25.4;
}

// Usage: Convert Foxit's 72 points (1 inch) toIronPDFmillimeters
renderer.RenderingOptions.MarginTop = UnitConverter.PointsToMm(72); // ~25.4mm
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ressourcen richtig entsorgen

// GOOD - Using statement for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically
// GOOD - Using statement for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Fehlerbehebung

Problem 1: Library.Initialize() nicht gefunden

Problem: Library.Initialize() existiert nicht in IronPDF.

Lösung:IronPDFverwendet ein einfacheres Initialisierungsmuster:

// Foxit PDF
Library.Initialize(sn, key);

//IronPDF- just set license key once at startup
IronPdf.License.LicenseKey = "YOUR-KEY";
// Foxit PDF
Library.Initialize(sn, key);

//IronPDF- just set license key once at startup
IronPdf.License.LicenseKey = "YOUR-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ausgabe 2: Behandlung von Fehlercodes

Problem: Code prüft ErrorCode.e_ErrSuccess, aberIronPDFhat das nicht.

Lösung: Verwenden Sie die Standardausnahmebehandlung von .NET:

// Foxit PDF
ErrorCode err = doc.LoadW("");
if (err != ErrorCode.e_ErrSuccess) { /* handle error */ }

// IronPDF
try
{
    var pdf = PdfDocument.FromFile("input.pdf");
}
catch (IOException ex)
{
    Console.WriteLine($"Failed to load PDF: {ex.Message}");
}
// Foxit PDF
ErrorCode err = doc.LoadW("");
if (err != ErrorCode.e_ErrSuccess) { /* handle error */ }

// IronPDF
try
{
    var pdf = PdfDocument.FromFile("input.pdf");
}
catch (IOException ex)
{
    Console.WriteLine($"Failed to load PDF: {ex.Message}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ausgabe 3: PDFDoc.Close() nicht gefunden

Problem: die Methode doc.Close()gibt es inIronPDFnicht.

Lösung: Verwenden Sie Dispose() oder using Anweisungen:

// Foxit PDF
doc.Close();

// IronPDF
pdf.Dispose();
// or better: wrap in using statement
// Foxit PDF
doc.Close();

// IronPDF
pdf.Dispose();
// or better: wrap in using statement
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Migrations-Checkliste

Vor der Migration

  • [Inventarisierung aller verwendeten Foxit PDF SDK-Funktionen
  • [Standorte der Lizenzschlüssel dokumentieren
  • [Beachten Sie alle Library.Initialize() und Library.Release() Aufrufe
  • [Benutzerdefinierte Einstellungen auflisten (Seitengrößen, Ränder, etc.)
  • [Identifizierung von Fehlerbehandlungsmustern mit ErrorCode
  • [Projekt in der Versionskontrolle sichern
  • [IronPDF-Lizenzschlüssel erhalten

Paket-Migration

  • [Foxit PDF SDK DLL-Referenzen aus .csproj entfernen
  • [Entfernen Sie alle privaten NuGet-Feed-Konfigurationen
  • [IronPdf NuGet-Paket installieren: dotnet add package IronPdf
  • [Namespace-Importe aktualisieren
  • [IronPDF-Lizenzschlüssel beim Starten festlegen

Code-Migration

  • [Entfernen Sie Library.Initialize() und Library.Release() Aufrufe
  • [Ersetzen Sie ErrorCode-Prüfungen durch try/catch
  • [Ersetzen Sie PDFDocdurch PdfDocument
  • [Ersetzen Sie HTML2PDFdurch ChromePdfRenderer
  • [Aktualisieren Sie den Seitenzugriff von GetPage(i) auf Pages[i]
  • [Ersetzen Sie SaveAs(path, flags) durch SaveAs(path)
  • [Ersetzen Sie Close() durch Dispose() oder mit Anweisungen
  • [Aktualisierung des Wasserzeichen-Codes zur Verwendung von TextStamper
  • [Einheiten von Punkt in Millimeter umrechnen

Testing

  • [Überprüfen Sie, ob die HTML-zu-PDF-Ausgabe den Erwartungen entspricht
  • [PDF-Laden und Textextraktion testen
  • [Überprüfen der Merge-Funktionalität
  • [Aussehen des Wasserzeichens prüfen
  • [Test von Sicherheits-/Verschlüsselungsfunktionen
  • [Validierung von Formularfeldoperationen
  • [Leistungstests

Post-Migration

  • [Foxit PDF SDK DLLs löschen
  • [Foxit-bezogene Konfigurationsdateien entfernen
  • [Dokumentation aktualisieren
  • [Bereinigung von ungenutztem Helper-Code

Abschluss

Durch die Migration von Foxit PDF SDKzuIronPDFwerden komplexe Initialisierungsmuster, ausführliche Konfigurationsobjekte und die manuelle Bereinigung von Ressourcen überflüssig. Das Ergebnis ist ein sauberer, besser wartbarer Code, der moderne .NET-Muster und integrierte HTML/CSS-Rendering-Funktionen nutzt.

Die vereinfachte API vonIronPDFverkürzt die Entwicklungszeit und bietet gleichzeitig umfassende PDF-Funktionen - und das alles über ein einziges NuGet-Paket, ohne dass separate Add-ons erworben werden müssen. Für Teams, die Migrationen auf .NET 10 und darüber hinaus planen, bietetIronPDFeine zukunftssichere Grundlage für die PDF-Erstellung.

Entdecken Sie die vollständige IronPDF-Dokumentation, Tutorials und API-Referenz, um Ihre Foxit PDF-Migration zu beschleunigen.

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