Migrieren von Foxit PDF SDK zu IronPDF: (.NET-Anleitung)
Die Migration vom Foxit PDF SDK zuIronPDF vereinfacht Ihren .NET -Workflow zur PDF-Generierung, indem komplexe, unternehmensorientierte APIs durch moderne, entwicklerfreundliche Muster ersetzt werden. Dieser Leitfaden bietet einen vollständigen, schrittweisen Migrationspfad, der unnötigen Code entfernt und PDF-Operationen in Ihrer gesamten Codebasis vereinfacht.
Warum von Foxit PDF SDK zuIronPDF migrieren
Die Foxit PDF-Herausforderungen
Das Foxit PDF SDK ist eine leistungsstarke Bibliothek für Unternehmen, bringt aber eine erhebliche Komplexität mit sich, die die Entwicklung verlangsamen kann:
-
Komplexes Lizenzsystem: Mehrere Produkte, SKUs und Lizenztypen (pro Entwickler, pro Server, OEM usw.) erschweren die Auswahl der richtigen Option für Ihr Projekt.
-
Enterprise Preisgestaltung: Die Preisgestaltung ist auf große Organisationen zugeschnitten und kann für kleinere Teams oder einzelne Entwickler unerschwinglich sein.
-
Manuelle Installation: Für das Foxit PDF SDK sind manuelle DLL-Referenzen oder private NuGet Feeds erforderlich – es gibt kein einfaches öffentliches NuGet Paket.
-
Verbose API: Die Initialisierung der Bibliothek mit
Library.Initialize(), die Überprüfung von Fehlercodes und expliziteLibrary.Release()-Aufrufe fügen jeder Operation erheblichen Boilerplate-Code hinzu. -
Separates HTML-Konvertierungs-Add-on: Für die Konvertierung von HTML in PDF ist ein zusätzlicher Kauf eines Add-ons erforderlich – es ist nicht im Basis-SDK enthalten.
-
Komplexe Konfiguration: Einstellungen erfordern eine detaillierte Objektkonfiguration (z. B.
HTML2PDFSettingData) mit mehreren Eigenschaften. - C++-Erbe: API-Muster spiegeln die C++-Ursprünge wider und fühlen sich in modernen C#-Anwendungen weniger natürlich an.
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 Release() |
IDisposable/automatisch |
| Dokumentation | Portal für Unternehmensdokumente | Öffentliche Tutorials |
Kosten-Nutzen-Analyse
Der Wechsel von Foxit PDF zuIronPDF bietet konkrete Vorteile für Entwickler: 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 umfassende Funktionen ohne separate Add-on-Käufe.IronPDF bietet 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
- .NET Umgebung:IronPDF unterstützt .NET Framework 4.6.2+, .NET Core 3.1+, .NET 5/6/7/8/9+
- NuGet -Zugriff: Stellen Sie sicher, dass Sie Pakete von NuGet installieren können.
- Lizenzschlüssel: IhrenIronPDF Lizenzschlüssel für die produktive Nutzung erhalten Sie unter IronPDF.
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"
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"
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
Wenn Sie Foxit PDF-Referenzen in .csproj haben, entfernen Sie diese manuell:
<Reference Include="fsdk_dotnet">
<HintPath>..\libs\Foxit\fsdk_dotnet.dll</HintPath>
</Reference>
<Reference Include="fsdk_dotnet">
<HintPath>..\libs\Foxit\fsdk_dotnet.dll</HintPath>
</Reference>
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;
Imports IronPdf
Imports IronPdf.Rendering
Imports IronPdf.Editing
Schritt 3:IronPDF initialisieren
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
' Before (Foxit PDF)
Dim sn As String = "YOUR_SERIAL_NUMBER"
Dim key As String = "YOUR_LICENSE_KEY"
Dim error_code As ErrorCode = Library.Initialize(sn, key)
If error_code <> ErrorCode.e_ErrSuccess Then
Throw New Exception("Failed to initialize Foxit PDF SDK")
End If
' ... your code ...
Library.Release() ' Don't forget this!
' After (IronPDF)
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
' That's it! No Release() needed
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");
Imports FoxitPDF
Imports IronPdf
' Before (Foxit PDF)
Library.Initialize(sn, key)
Dim settings As New HTML2PDFSettingData()
settings.page_width = 612.0F
settings.page_height = 792.0F
Using html2pdf As New HTML2PDF(settings)
html2pdf.Convert(htmlContent, "output.pdf")
End Using
Library.Release()
' After (IronPDF)
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Komplette API-Referenz
Namensraum-Zuordnung
| Foxit PDF-Namensraum | IronPDF-Äquivalent |
|---|---|
foxit |
IronPdf |
foxit.common |
IronPdf |
foxit.common.fxcrt |
Nicht anwendbar |
foxit.pdf |
IronPdf |
foxit.pdf.annots |
IronPdf.Editing |
foxit.addon.conversion |
IronPdf.Rendering |
Kernklassen-Zuordnung
| Foxit PDF SDK-Klasse | IronPDF-Äquivalent |
|---|---|
Library |
Nicht anwendbar |
PDFDoc |
PdfDocument |
PDFPage |
PdfDocument.Pages[i] |
HTML2PDF |
ChromePdfRenderer |
TextPage |
pdf.ExtractTextFromPage(i) |
Watermark |
TextStamper / ImageStamper |
Security |
SecuritySettings |
Form |
pdf.Form |
Metadata |
pdf.MetaData |
PDFDoc-Methoden
| Foxit PDFDoc | IronPDF PdfDocument |
|---|---|
new PDFDoc(path) |
PdfDocument.FromFile(path) |
doc.LoadW(password) |
PdfDocument.FromFile(path, password) |
doc.GetPageCount() |
pdf.PageCount |
doc.GetPage(index) |
pdf.Pages[index] |
doc.SaveAs(path, flags) |
pdf.SaveAs(path) |
doc.Close() |
pdf.Dispose() oder using-Anweisung |
doc.InsertDocument() |
PdfDocument.Merge() |
HTML2PDF / Konvertierung
| Foxit HTML2PDF | IronPDF-Äquivalent |
|---|---|
new HTML2PDFSettingData() |
new ChromePdfRenderer() |
settings.page_width |
RenderingOptions.PaperSize |
settings.page_height |
RenderingOptions.SetCustomPaperSize() |
html2pdf.Convert(html, path) |
renderer.RenderHtmlAsPdf(html) |
html2pdf.ConvertFromURL(url, path) |
renderer.RenderUrlAsPdf(url) |
Wasserzeichen-Einstellungen
| Foxit Wasserzeichen | IronPDF-Äquivalent |
|---|---|
new Watermark(doc, text, font, size, color) |
new TextStamper() |
WatermarkSettings.position |
VerticalAlignment + HorizontalAlignment |
WatermarkSettings.rotation |
Rotation |
WatermarkSettings.opacity |
Opacity |
watermark.InsertToAllPages() |
pdf.ApplyStamp(stamper) |
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();
}
}
Imports Foxit.SDK
Imports Foxit.SDK.Common
Imports Foxit.SDK.PDFConversion
Imports System
Class Program
Shared Sub Main()
Library.Initialize("sn", "key")
Dim settingData As New HTML2PDFSettingData()
settingData.page_width = 612.0F
settingData.page_height = 792.0F
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage
Using html2pdf As New HTML2PDF(settingData)
html2pdf.Convert("<html><body><h1>Hello World</h1></body></html>", "output.pdf")
End Using
Library.Release()
End Sub
End Class
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");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>")
pdf.SaveAs("output.pdf")
End Sub
End Class
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();
}
}
Imports Foxit.SDK
Imports Foxit.SDK.Common
Imports Foxit.SDK.PDFConversion
Imports System
Class Program
Shared Sub Main()
Library.Initialize("sn", "key")
Dim settingData As New HTML2PDFSettingData()
settingData.page_width = 612.0F
settingData.page_height = 792.0F
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage
Using html2pdf As New HTML2PDF(settingData)
html2pdf.ConvertFromURL("https://www.example.com", "output.pdf")
End Using
Library.Release()
End Sub
End Class
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");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("output.pdf")
End Sub
End Class
Die inIronPDF integrierte 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();
}
}
Imports Foxit.SDK
Imports Foxit.SDK.Common
Imports Foxit.SDK.PDFDoc
Imports System
Class Program
Shared Sub Main()
Library.Initialize("sn", "key")
Using doc As New PDFDoc("input.pdf")
doc.Load("")
Dim watermark As New Watermark(doc, "Confidential",
New Font(Font.StandardID.e_StdIDHelvetica), 48.0F, &HFF0000FF)
Dim settings As 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)
End Using
Library.Release()
End Sub
End Class
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");
}
}
Imports IronPdf
Imports IronPdf.Editing
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
pdf.ApplyWatermark(New TextStamper() With {
.Text = "Confidential",
.FontSize = 48,
.Opacity = 50,
.Rotation = -45,
.VerticalAlignment = VerticalAlignment.Middle,
.HorizontalAlignment = HorizontalAlignment.Center
})
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDF bietet mit TextStamper eine intuitive, eigenschaftsbasierte Konfiguration anstelle separater Einstellungsobjekte 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();
}
}
}
Imports foxit
Imports foxit.addon.conversion
Class Program
Shared Sub Main()
Library.Initialize("sn", "key")
Try
Dim settings As 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 SDK has limited header/footer support
' Often requires post-processing or additional code
Using html2pdf As New HTML2PDF(settings)
html2pdf.ConvertFromURL("https://www.example.com", "webpage.pdf")
End Using
Finally
Library.Release()
End Try
End Sub
End Class
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");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim 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() With {
.HtmlFragment = "<div style='text-align:center; font-size:12pt;'>Company Report</div>",
.DrawDividerLine = True
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:right; font-size:10pt;'>Page {page} of {total-pages}</div>",
.DrawDividerLine = True
}
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
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();
}
}
}
Imports foxit
Imports foxit.pdf
Class Program
Shared Sub Main()
Library.Initialize("sn", "key")
Try
Using doc As New PDFDoc("input.pdf")
doc.LoadW("")
Dim securityHandler As New StdSecurityHandler()
securityHandler.Initialize(StdSecurityHandler.EncryptAlgorithm.e_CipherAES,
"user_password",
"owner_password",
PDFDoc.Permission.e_PermPrint Or PDFDoc.Permission.e_PermModify,
128)
doc.SetSecurityHandler(securityHandler)
doc.SaveAs("encrypted.pdf", CInt(PDFDoc.SaveFlags.e_SaveFlagNoOriginal))
End Using
Finally
Library.Release()
End Try
End Sub
End Class
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");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim 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")
End Sub
End Class
Erwägungen zur Leistung
Wiederverwendung von ChromePdfRenderer
Für eine optimale Leistung während Ihrer Foxit PDF-Migration verwenden Sie die ChromePdfRenderer-Instanz wieder – sie ist threadsicher:
// 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;
}
Imports System
Public Class PdfService
Private Shared ReadOnly _renderer As New ChromePdfRenderer()
Public Function Generate(html As String) As Byte()
Return _renderer.RenderHtmlAsPdf(html).BinaryData
End Function
' BAD - Creates new instance each time
Public Function GenerateBad(html As String) As Byte()
Dim renderer As New ChromePdfRenderer() ' Wasteful
Return renderer.RenderHtmlAsPdf(html).BinaryData
End Function
End Class
Helfer bei der Einheitenumwandlung
Foxit PDF SDK verwendet Punkte;IronPDF arbeitet 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
Public Module UnitConverter
Public Function PointsToMm(points As Double) As Double
Return points * 0.352778
End Function
Public Function MmToPoints(mm As Double) As Double
Return mm / 0.352778
End Function
Public Function InchesToMm(inches As Double) As Double
Return inches * 25.4
End Function
End Module
' Usage: Convert Foxit's 72 points (1 inch) to IronPDF millimeters
renderer.RenderingOptions.MarginTop = UnitConverter.PointsToMm(72) ' ~25.4mm
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
Imports PdfDocument
' GOOD - Using block for automatic cleanup
Using pdf = PdfDocument.FromFile("large.pdf")
Dim text As String = pdf.ExtractAllText()
End Using ' pdf is disposed automatically
Fehlerbehebung
Problem 1: Library.Initialize() nicht gefunden
Problem: Library.Initialize() existiert nicht in IronPDF.
Lösung:IronPDF verwendet 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";
Ausgabe 2: Behandlung von Fehlercodes
Problem: Der Code prüft ErrorCode.e_ErrSuccess, aberIronPDF hat das nicht.
Lösung: Verwenden Sie die standardmäßige .NET Ausnahmebehandlung:
// 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}");
}
Imports System
Imports System.IO
' Foxit PDF
Dim err As ErrorCode = doc.LoadW("")
If err <> ErrorCode.e_ErrSuccess Then
' handle error
End If
' IronPDF
Try
Dim pdf = PdfDocument.FromFile("input.pdf")
Catch ex As IOException
Console.WriteLine($"Failed to load PDF: {ex.Message}")
End Try
Ausgabe 3: PDFDoc.Close() nicht gefunden
Problem: Die Methode doc.Close() existiert nicht in IronPDF.
Lösung: Verwenden Sie die Anweisungen Dispose() oder using:
// 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
Migrations-Checkliste
Vor der Migration
- Inventarisierung aller verwendeten Foxit PDF SDK-Funktionen
- Speicherorte der Dokumentenlizenzschlüssel
- Beachten Sie alle
Library.Initialize()- undLibrary.Release()-Anrufe - Benutzerdefinierte Einstellungen auflisten (Seitengrößen, Ränder usw.)
- Fehlerbehandlungsmuster mithilfe von ErrorCode identifizieren
- Projekt in der Versionskontrolle sichern -IronPDF-Lizenzschlüssel erhalten
Paket-Migration
- Entfernen Sie die Verweise auf die Foxit PDF SDK DLL aus der .csproj-Datei.
- Entfernen Sie alle privaten NuGet Feed-Konfigurationen
- Installieren Sie dasIronPDF NuGet Paket:
dotnet add package IronPdf - Namespace-Importe aktualisieren -IronPDF-Lizenzschlüssel beim Start festlegen
Code-Migration
- Entfernen Sie die Aufrufe
Library.Initialize()undLibrary.Release() - Ersetzen Sie die
ErrorCode-Prüfungen durch try/catch - Ersetzen Sie
PDFDocdurchPdfDocument - Ersetzen Sie
HTML2PDFdurchChromePdfRenderer - Aktualisierung des Seitenzugriffs von
GetPage(i)aufPages[i] - Ersetzen Sie
SaveAs(path, flags)durchSaveAs(path) - Ersetzen Sie
Close()durchDispose()oder verwenden Sie Anweisungen - Aktualisieren Sie den Wasserzeichencode, sodass er
TextStamperverwendet. - Einheiten von Punkten in Millimeter umrechnen
Testen
- Überprüfen Sie, ob die HTML-zu-PDF-Ausgabe den Erwartungen entspricht.
- Test des PDF-Ladens und der Textextraktion
- Überprüfung der Zusammenführungsfunktionalität
- Wasserzeichendarstellung prüfen
- Sicherheits-/Verschlüsselungsfunktionen testen
- Formularfeldoperationen validieren
- Leistungstests
Nach der Migration
- Löschen Sie die Foxit PDF SDK DLLs
- Entfernen Sie die Foxit-bezogenen Konfigurationsdateien
- Dokumentation aktualisieren
- Nicht verwendeten Hilfscode bereinigen

