Passer au contenu du pied de page
GUIDES DE MIGRATION

Migrer de Foxit PDF SDK à IronPDF : (Guide .NET)

Migrer de Foxit PDF SDKàIronPDF: Guide de migration complet en C

La migration de Foxit PDF SDKversIronPDFrationalise votre flux de travail de génération de PDF .NET en remplaçant les API complexes axées sur l'entreprise par des modèles modernes et conviviaux pour les développeurs. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine le code standard et simplifie les opérations PDF dans votre base de code.

Pourquoi migrer de Foxit PDF SDKà IronPDF

Les défis PDF de Foxit

Foxit PDF SDK est une puissante bibliothèque d'entreprise, mais elle s'accompagne d'une complexité importante qui peut ralentir le développement :

  1. Système de licence complexe : La multiplicité des produits, des UGS et des types de licences (par développeur, par serveur, OEM, etc.) complique le choix de la bonne option pour votre projet.

  2. Tarification entreprise : Les tarifs sont adaptés aux grandes organisations et peuvent être prohibitifs pour les petites équipes ou les développeurs individuels.

  3. Installation manuelle : Foxit PDF SDKnécessite des références DLL manuelles ou des flux NuGet privés - il n'existe pas de package NuGet public simple.

  4. Verbose API : L'initialisation de la bibliothèque avec Library.Initialize(), la vérification des codes d'erreur et les appels explicites à Library.Release() ajoutent une lourde documentation à chaque opération.

  5. Complément de conversion HTML séparé : la conversion HTML vers PDF nécessite l'achat d'un complément supplémentaire - elle n'est pas incluse dans le SDK de base.

  6. Configuration complexe : les paramètres nécessitent une configuration détaillée de l'objet (par exemple, HTML2PDFSettingData) avec de multiples propriétés.

  7. Héritage C++ : Les modèles d'API reflètent les origines du C++, se sentant moins naturels dans les applications C# modernes.

Comparaison Foxit PDF vs IronPDF

Aspect Foxit PDF SDK IronPDF
Installation DLLs manuelles / flux privés Paquet NuGet simple
Licence d'utilisation Complexe, axé sur l'entreprise Transparent, adapté à toutes les tailles
Initialisation Library.Initialize(sn, key) Définir la clé de licence une seule fois
Gestion des erreurs Ensembles ErrorCode Exceptions .NET Standard
HTML vers PDF Achat séparé d'un module complémentaire Moteur Chromium intégré
Style API Héritage du C#, verbeux Modèles .NET modernes
Nettoyage des ressources Manuel Close()/Release() IDisposable/automatic
Documentation Portail documentaire d'entreprise Tutoriels publics

Analyse coûts-avantages

Passer de Foxit PDF àIronPDFoffre des avantages tangibles en matière de développement : une complexité réduite grâce à des API plus simples, un développement plus rapide grâce à des méthodes intuitives, une compatibilité moderne avec .NET, notamment la prise en charge des fonctions async/await et LINQ, une approche HTML-first qui tire parti des compétences web existantes, et des fonctionnalités tout compris sans achat de modules complémentaires distincts. Alors que vous planifiez l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFconstitue une base pérenne pour la génération de PDF.


Avant de commencer

Prérequis

  1. Environnement .NET :IronPDFprend en charge .NET Framework 4.6.2+, .NET Core 3.1+, .NET 5/6/7/8/9+
  2. NuGet Access : s'assurer que vous pouvez installer des paquets à partir de NuGet
  3. <Clé de licence : Obtenez votre clé de licenceIronPDFpour une utilisation en production sur ironpdf.com

Sauvegarde de votre projet

# 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

Identifier tous les usages de Foxit PDF

# 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

Documenter les fonctionnalités actuelles

Avant la migration, catalogue :

  • Quelles sont les fonctionnalités de Foxit PDF que vous utilisez (conversion HTML, annotations, formulaires, sécurité) ?
  • Emplacement des clés de licence et code d'initialisation
  • Configurations et paramètres personnalisés
  • Modèles de gestion des erreurs utilisant les enums ErrorCode

Migration rapide

Étape 1 : Mise à jour des paquets NuGet

# 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

Si vous avez des références Foxit PDF dans .csproj, supprimez-les manuellement:

<!-- 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

Étape 2 : Mise à jour des espaces de noms

// 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

Étape 3 : Initialisation d'IronPDF

L'une des améliorations les plus significatives de cette migration Foxit PDF est l'élimination du modèle complexe d'initialisation et de nettoyage :

// 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

Étape 4 : Modèle de conversion de base

// 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

Référence API complète

Cartographie des espaces de noms

Espace de noms Foxit PDF Équivalent d'IronPDF Notes
foxit IronPDF Espace de noms principal
foxit.common IronPDF Types courants
foxit.common.fxcrt N/A Bas niveau (non nécessaire)
foxit.pdf IronPDF Fonctionnement du document PDF
foxit.pdf.annots IronPdf.Edition Annotations
foxit.addon.conversion IronPdf.Rendering Conversion HTML/image

Mappage des classes de base

Classe Foxit PDF SDK Équivalent d'IronPDF Notes
Bibliothèque N/A IronPDFgère automatiquement
PDFDoc Document PDF Classe du document principal
PDFPage PdfDocument.Pages[i] Accès à la page
HTML2PDF ChromePdfRenderer Conversion HTML
TextPage pdf.ExtractTextFromPage(i) Extraction de texte
Watermark TextStamper / ImageStamper Watermarks
Sécurité Paramètres de sécurité Sécurité PDF
Formulaire pdf.Form Champs de formulaire
Métadonnées pdf.MetaData Métadonnées du document

Méthodes PDFDoc

Foxit PDFDoc IronPDFPdfDocument Notes
new PDFDoc(path) PdfDocument.FromFile(path) Charger à partir d'un fichier
doc.LoadW(password) PdfDocument.FromFile(path, password) Protégé par mot de passe
doc.GetPageCount() pdf.PageCount Propriété du nombre de pages
doc.GetPage(index) pdf.Pages[index] Accéder à la page par l'index
doc.SaveAs(path, flags) pdf.SaveAs(path) Enregistrer le document
doc.Close() pdf.Dispose() ou déclaration d'utilisation Nettoyage
doc.InsertDocument() PdfDocument.Merge() Fusionner des documents

HTML2PDF / Conversion

Foxit HTML2PDF Équivalent d'IronPDF Notes
new HTML2PDFSettingData() new ChromePdfRenderer() Créer un moteur de rendu
settings.page_width RenderingOptions.PaperSize Tailles standard
settings.page_height RenderingOptions.SetCustomPaperSize() Taille personnalisée
html2pdf.Convert(html, path) renderer.RenderHtmlAsPdf(html) Chaîne HTML
html2pdf.ConvertFromURL(url, path) renderer.RenderUrlAsPdf(url) Conversion d'URL

Paramètres de filigrane

Filigrane Foxit Équivalent d'IronPDF Notes
new Watermark(doc, text, font, size, color) new TextStamper() Texte en filigrane
WatermarkSettings.position Alignement vertical + Alignement horizontal Poste à pourvoir
WatermarkSettings.rotation Rotation Angle de rotation
WatermarkSettings.opacity Opacité pourcentage de 0 à 100
watermark.InsertToAllPages() pdf.ApplyStamp(stamper) Postuler à tous

Exemples de code

Exemple 1 : Conversion HTML vers PDF

Avant (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

Après (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

L'approche d'IronPDF permet de réduire 15+ lignes de code de configuration à seulement 4 lignes. Pas d'initialisation de bibliothèque, pas de nettoyage explicite, pas d'objets de configuration complexes. Pour plus d'options de rendu HTML, consultez la documentation HTML vers PDF.

Exemple 2 : Conversion d'une URL en PDF

Avant (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

Après (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

Le moteur Chromium intégré d'IronPDF gère automatiquement l'exécution de JavaScript, le rendu CSS et le contenu dynamique. En savoir plus sur la conversion d'URL en PDF.

Exemple 3 : Ajout de filigranes

Avant (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

Après (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

Le TextStamper d'IronPDF offre une configuration intuitive basée sur les propriétés au lieu d'objets de paramètres distincts et d'une itération manuelle des pages. Consultez la documentation complète watermarking pour des options supplémentaires.

Exemple 4 : URL vers PDF avec en-têtes et pieds de page

Avant (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

Après (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 offre une prise en charge native des en-têtes et pieds de page avec un style HTML et des espaces réservés dynamiques pour les numéros de page.

Exemple 5 : Sécurité et chiffrement des PDF

Avant (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

Après (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

Considérations de Performance

Réutiliser ChromePdfRenderer

Pour des performances optimales lors de votre migration Foxit PDF, réutilisez l'instance ChromePdfRenderer- elle est à l'abri des threads :

// 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

Aide à la conversion d'unités

Foxit PDF SDK utilise des points ;IronPDFutilise des millimètres. Utilisez cette aide lors de la 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

Élimination correcte des ressources

// 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

Dépannage

Sujet 1 : Library.Initialize() introuvable

Problème : Library.Initialize() n'existe pas dans IronPDF.

Solution :IronPDFutilise un modèle d'initialisation plus simple :

// 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

Edition 2 : Traitement des codes d'erreur

Problème : Le code vérifie ErrorCode.e_ErrSuccess maisIronPDFn'en dispose pas.

Solution : Utilisez la gestion des exceptions standard de .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

Sujet 3 : PDFDoc.Close() introuvable

Problème : la méthode doc.Close()n'existe pas dans IronPDF.

Solution : Utilisez les déclarations Dispose() ou utilisant :

// 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

Liste de contrôle de la migration

Pré-migration

  • [Inventorier toutes les fonctionnalités de Foxit PDF SDKutilisées
  • [Emplacements des clés de licence de document
  • [Notez tous les appels à Library.Initialize() et Library.Release()
  • [La traduction doit rester professionnelle et préserver l'exactitude technique tout en expliquant les caractéristiques et les avantages de ces outils de développement
  • [Identifier les modèles de traitement des erreurs à l'aide d'ErrorCode
  • [Sauvegarde du projet dans le contrôle de version
  • [Obtenir la clé de licence IronPDF

Migration de paquets

  • [Supprimer les références Foxit PDF SDKDLL de .csproj
  • [Supprimer les configurations privées des flux NuGet
  • [Installer le paquet NuGet IronPdf : dotnet add package IronPdf
  • [Mise à jour des importations d'espaces de noms
  • [Définir la clé de licenceIronPDFau démarrage

Migration de code

  • [Supprimer les appels à Library.Initialize() et Library.Release()
  • [Remplacer les vérifications ErrorCode par des try/catch
  • [Remplacer PDFDocpar PdfDocument
  • [Remplacer HTML2PDFpar ChromePdfRenderer
  • [Mise à jour de l'accès aux pages de GetPage(i) à Pages[i]
  • [Remplacer SaveAs(path, flags) par SaveAs(path)
  • [Remplacer Close() par Dispose() ou par des instructions d'utilisation
  • [Mise à jour du code du filigrane pour utiliser TextStamper
  • [ ] Convertir les unités de points en millimètres

Testing

  • [Vérifier que la sortie HTML vers PDF correspond aux attentes
  • [Test de chargement de PDF et d'extraction de texte
  • [Vérifier la fonctionnalité de la fusion
  • [Vérifier l'apparence du filigrane
  • [Tester les fonctions de sécurité/chiffrement
  • [Valider les opérations sur les champs de formulaire
  • [Test de performance

Post-Migration

  • [Supprimer les DLL de Foxit PDF SDK
  • [Supprimer les fichiers de configuration liés à Foxit
  • [Mise à jour de la documentation
  • [Nettoyer le code d'aide inutilisé

Conclusion

La migration de Foxit PDF SDKversIronPDFélimine les schémas d'initialisation complexes, les objets de configuration verbeux et le nettoyage manuel des ressources. Il en résulte un code plus propre et plus facile à maintenir, qui exploite les modèles .NET modernes et les capacités de rendu HTML/CSS intégrées.

L'API simplifiée d'IronPDF réduit le temps de développement tout en offrant des fonctionnalités PDF complètes, le tout accessible via un seul package NuGet sans achat de modules complémentaires séparés. Pour les équipes qui prévoient des migrations vers .NET 10 et au-delà,IronPDFoffre une base pérenne pour la génération de PDF.

Explorez la documentation complète IronPDF, tutoriel, et référence API pour accélérer votre migration vers Foxit PDF.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite