Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de Kaizen.io vers IronPDF en C#

La migration de Kaizen.io HTML-to-PDF versIronPDFtransforme votre flux de travail PDF .NET d'un service dépendant du cloud avec des problèmes de latence du réseau et de confidentialité des données vers une bibliothèque locale en cours de processus qui conserve vos données au sein de votre infrastructure. Ce guide propose un chemin de migration complet, étape par étape, qui élimine les dépendances aux API externes et la tarification à la demande pour les développeurs .NET professionnels.

Pourquoi migrer de Kaizen.io vers IronPDF

Les défis de l'API basée sur le cloud

Kaizen.io HTML-to-PDF, comme d'autres services PDF basés sur le cloud, introduit des limitations qui affectent les applications de production :

  1. Dépendance au cloud : Nécessite une connexion internet constante et la disponibilité d'un service externe. Si le service Kaizen.io subit des interruptions, la génération de PDF de votre application cesse de fonctionner.

  2. Problèmes de confidentialité des données : Le contenu HTML sensible — y compris les données clients, les rapports financiers et les documents confidentiels — doit être transmis à des serveurs tiers pour traitement.

  3. Latence du réseau : chaque génération de PDF entraîne des délais d'aller-retour sur le réseau de 100 à 500 ms ou plus, ce qui ajoute une surcharge importante aux temps de réponse de votre application.

  4. Tarification par requête : les coûts augmentent proportionnellement au volume d'utilisation, ce qui rend la génération de PDF en grand volume de plus en plus coûteuse.

  5. Limitation du débit : La limitation du débit de l'API pendant les périodes de forte activité peut entraîner des échecs ou des retards dans la génération de PDF au moment où vous en avez le plus besoin.

  6. Dépendance vis-à-vis du fournisseur : les modifications d'API ou le risque d'interruption de service rendent votre application vulnérable aux décisions commerciales externes.

Comparaison Kaizen.io vs IronPDF

Fonction Kaizen.io IronPDF
Traitement Cloud (serveurs externes) Local (en cours)
Confidentialité des données Données transmises à l'extérieur Les données ne quittent jamais votre infrastructure
Temps de latence Trajet aller-retour sur le réseau (100-500ms+) Traitement local (50-200ms)
Disponibilité Dépend d'un service externe 100% sous votre contrôle
Tarifs À la demande ou par abonnement Licence unique ou annuelle
Mode hors ligne Pas possible Fonctionnalité complète
Limites tarifaires Limitation de l'API Aucune limite
JavaScript Soutien limité Exécution complète de Chromium

Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFconstitue une base pérenne avec un traitement local qui élimine les dépendances de services externes.


Évaluation de la complexité de la migration

Estimation de l'effort par fonctionnalité

Fonction Complexité de la migration Notes
HTML de base vers PDF Très faible Remplacement direct de la méthode
Fichier HTML vers PDF Très faible Remplacement direct de la méthode
URL vers PDF Très faible Remplacement direct de la méthode
En-têtes/Pieds de page Faible Modification de la syntaxe des espaces réservés
Paramètres de la page Très faible Cartographie des propriétés
Gestion des clés API Faible Supprimer entièrement

Changement de paradigme

Le changement fondamental de cette migration Kaizen.io réside dans le passage des appels d'API cloud au rendu local en mémoire :

Kaizen.io :  HtmlToPdfConverter → Convert(html) → byte[] (via le réseau)
IronPDF :    ChromePdfRenderer → RenderHtmlAsPdf(html) → PdfDocument (local)

Avant de commencer

Prérequis

  1. Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Accès à NuGet : possibilité d'installer des packages NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur ironpdf.com

Modifications du paquet NuGet

# Remove Kaizen.io package
dotnet remove package Kaizen.HtmlToPdf
dotnet remove package Kaizen.IO.HtmlToPdf

# Install IronPDF
dotnet add package IronPdf
# Remove Kaizen.io package
dotnet remove package Kaizen.HtmlToPdf
dotnet remove package Kaizen.IO.HtmlToPdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuration de la licence

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Identifier l'utilisation de Kaizen.io

# Find all Kaizen.io references
grep -r "using Kaizen\|HtmlToPdfConverter\|ConversionOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml\|Kaizen" --include="*.cs" .
# Find all Kaizen.io references
grep -r "using Kaizen\|HtmlToPdfConverter\|ConversionOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml\|Kaizen" --include="*.cs" .
SHELL

Référence API complète

Mappages de classes

Classe Kaizen.io Équivalent d'IronPDF Notes
HtmlToPdfConverter ChromePdfRenderer Convertisseur principal
Options de conversion ChromePdfRenderOptions Via RenderingOptions
HeaderOptions HtmlHeaderFooter ou TextHeaderFooter En-têtes HTML/texte
Options de pied de page HtmlHeaderFooter ou TextHeaderFooter Pieds de page HTML/texte
Taille de la page PdfPaperSize Énumération de la taille du papier
Orientation PdfPaperOrientation Énumération des orientations

Mise en correspondance des méthodes

Méthode Kaizen.io Équivalent d'IronPDF Notes
converter.Convert(html) renderer.RenderHtmlAsPdf(html) Retourne le document Pdf
converter.ConvertUrl(url) renderer.RenderUrlAsPdf(url) Prise en charge des URL directes
File.WriteAllBytes(path, bytes) pdf.SaveAs(path) Méthode d'enregistrement direct

Mappages de propriétés des options de conversion

Propriété de Kaizen.io Équivalent d'IronPDF Notes
Taille de la page RenderingOptions.PaperSize Valeur de l'énumération
Orientation RenderingOptions.PaperOrientation Portrait/paysage
MarginTop RenderingOptions.MarginTop En millimètres
MarginBottom RenderingOptions.MarginBottom En millimètres
Header.HtmlContent RenderingOptions.HtmlHeader.HtmlFragment En-tête HTML
Footer.HtmlContent RenderingOptions.HtmlFooter.HtmlFragment Pied de page HTML

Mappages de caractères de substitution

Espace réservé à Kaizen.io IronPDFPlaceholder Notes
{page} {page} Page actuelle (même)
{total} {total-pages} Nombre total de pages (différentes !)
{date} {date} Date actuelle (même)
{titre} {html-title} Titre du document (différent !)

Exemples de migration de code

Exemple 1 : HTML de base vers PDF

Avant (Kaizen.io):

using Kaizen.IO;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdfBytes = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}
using Kaizen.IO;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdfBytes = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

L'approche Kaizen.io crée un HtmlToPdfConverter, appelle Convert() pour obtenir un tableau d'octets, puis écrit manuellement les octets dans un fichier en utilisant File.WriteAllBytes(). Cela implique un aller-retour sur le réseau vers le service Kaizen.io.

Le ChromePdfRendererd'IronPDF traite tout localement. La méthode RenderHtmlAsPdf() renvoie un objet PdfDocument avec une méthode SaveAs() pratique - aucune manipulation manuelle de tableau d'octets n'est requise et aucune latence réseau n'est nécessaire. Voir la documentation HTML vers PDF pour des options de rendu supplémentaires.

Exemple 2 : Fichier HTML vers PDF avec paramètres de page

Avant (Kaizen.io):

using Kaizen.IO;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = File.ReadAllText("input.html");
        var options = new ConversionOptions
        {
            PageSize = PageSize.A4,
            Orientation = Orientation.Portrait
        };
        var pdfBytes = converter.Convert(htmlContent, options);
        File.WriteAllBytes("document.pdf", pdfBytes);
    }
}
using Kaizen.IO;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = File.ReadAllText("input.html");
        var options = new ConversionOptions
        {
            PageSize = PageSize.A4,
            Orientation = Orientation.Portrait
        };
        var pdfBytes = converter.Convert(htmlContent, options);
        File.WriteAllBytes("document.pdf", pdfBytes);
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("document.pdf");
    }
}
$vbLabelText   $csharpLabel

L'approche de Kaizen.io consiste à lire manuellement le contenu du fichier HTML avec File.ReadAllText(), à créer un objet Options de conversionséparé, à passer les deux à la méthode Convert(), puis à écrire manuellement les octets du résultat dans un fichier.

IronPDF fournit une méthode RenderHtmlFileAsPdf() dédiée qui lit directement le fichier - aucune lecture manuelle du fichier n'est nécessaire. La configuration est définie dans la propriété RenderingOptions du moteur de rendu, ce qui permet de conserver tous les paramètres en un seul endroit. Les enums PdfPaperSize.A4 et PdfPaperOrientation.Portrait proviennent directement des équivalents de Kaizen.io.

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

Avant (Kaizen.io):

using Kaizen.IO;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var options = new ConversionOptions
        {
            Header = new HeaderOptions { HtmlContent = "<div style='text-align:center'>Company Header</div>" },
            Footer = new FooterOptions { HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>" },
            MarginTop = 20,
            MarginBottom = 20
        };
        var pdfBytes = converter.ConvertUrl("https://example.com", options);
        File.WriteAllBytes("webpage.pdf", pdfBytes);
    }
}
using Kaizen.IO;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var options = new ConversionOptions
        {
            Header = new HeaderOptions { HtmlContent = "<div style='text-align:center'>Company Header</div>" },
            Footer = new FooterOptions { HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>" },
            MarginTop = 20,
            MarginBottom = 20
        };
        var pdfBytes = converter.ConvertUrl("https://example.com", options);
        File.WriteAllBytes("webpage.pdf", pdfBytes);
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader.CenterText = "Company Header";
        renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader.CenterText = "Company Header";
        renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
$vbLabelText   $csharpLabel

Cet exemple illustre plusieurs différences clés en matière de migration. Kaizen.io nécessite des objets HeaderOptionset Options de pied de pageimbriqués dans ConversionOptions, chacun avec une propriété HtmlContent.IronPDFoffre une configuration TextHeader et TextFooter plus propre avec des propriétés CenterText, LeftText et RightText dédiées.

Note importante : La syntaxe des espaces réservés est différente ! Kaizen.io utilise {total}pour le nombre total de pages, tandis qu'IronPDF utilise {total-pages}. Il s'agit du problème de migration le plus courant : recherchez dans votre base de code {total}et remplacez-la par {total-pages}.

La méthode RenderUrlAsPdf() d'IronPDF rend directement n'importe quelle URL avec une exécution JavaScriptcomplète via le moteur Chromium - aucun contournement n'est nécessaire. En savoir plus sur la conversion d'URL en PDF et les en-têtes et pieds de page.


Notesde migration essentielles

Modification de la syntaxe des espaces réservés

Le changement le plus important lors de la migration des en-têtes et des pieds de page est la syntaxe des espaces réservés :

// Kaizen.io placeholders:
"Page {page} of {total}"

//IronPDFplaceholders:
"Page {page} of {total-pages}"
// Kaizen.io placeholders:
"Page {page} of {total}"

//IronPDFplaceholders:
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

Mappage complet des espaces réservés:

  • {page}{page}(idem)
  • {total}{total-pages}(DIFFÉRENT !)
  • {titre}{html-title}(DIFFERENT !)
  • {date}{date}(idem)
  • {time}{time} (idem)

Changement de type de retour

Kaizen.io renvoie directement byte[].IronPDFrenvoie un objet PdfDocument :

// Kaizen.io returns byte[]
byte[] pdfBytes = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdfBytes);

//IronPDFreturns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");           // Direct save
byte[] bytes = pdf.BinaryData;      // Or get bytes if needed
// Kaizen.io returns byte[]
byte[] pdfBytes = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdfBytes);

//IronPDFreturns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");           // Direct save
byte[] bytes = pdf.BinaryData;      // Or get bytes if needed
$vbLabelText   $csharpLabel

Supprimer la gestion des clés API

Kaizen.io nécessite une authentification de la clé API par demande.IronPDFutilise une clé de licence définie une fois au démarrage de l'application :

// DELETE this Kaizen.io pattern:
var converter = new HtmlToPdfConverter("YOUR_API_KEY");

// IronPDF: Set once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();  // No API key needed
// DELETE this Kaizen.io pattern:
var converter = new HtmlToPdfConverter("YOUR_API_KEY");

// IronPDF: Set once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();  // No API key needed
$vbLabelText   $csharpLabel

Traitement des erreurs de réseau

Supprimez la logique de réessai, la gestion de la limite de débit et le code de temporisation du réseau -IronPDFtraite localement :

// DELETE this Kaizen.io pattern:
int retries = 3;
while (retries > 0)
{
    try
    {
        return converter.Convert(html);
    }
    catch (RateLimitException)
    {
        retries--;
        Thread.Sleep(1000);
    }
}

// IronPDF: Just call the method
return renderer.RenderHtmlAsPdf(html).BinaryData;
// DELETE this Kaizen.io pattern:
int retries = 3;
while (retries > 0)
{
    try
    {
        return converter.Convert(html);
    }
    catch (RateLimitException)
    {
        retries--;
        Thread.Sleep(1000);
    }
}

// IronPDF: Just call the method
return renderer.RenderHtmlAsPdf(html).BinaryData;
$vbLabelText   $csharpLabel

Dépannage

Édition 1 : HtmlToPdfConverter introuvable

Problème : la classe HtmlToPdfConvertern'existe pas dans IronPDF.

Solution : Remplacer par ChromePdfRenderer :

// Kaizen.io
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// Kaizen.io
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

Sujet 2 : ConversionOptions Not Found

Problème : la classe Options de conversionn'existe pas dans IronPDF.

Solution : Utilisez RenderingOptions sur le moteur de rendu :

// Kaizen.io
var options = new ConversionOptions { PageSize = PageSize.A4 };
converter.Convert(html, options);

// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderHtmlAsPdf(html);
// Kaizen.io
var options = new ConversionOptions { PageSize = PageSize.A4 };
converter.Convert(html, options);

// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderHtmlAsPdf(html);
$vbLabelText   $csharpLabel

Sujet 3 : Les numéros de page ne fonctionnent pas

Problème : le pied de page affiche littéralement {total}au lieu du nombre de pages.

Solution : Mettre à jour la syntaxe des espaces réservés :

// Kaizen.io syntax (won't work)
"Page {page} of {total}"

//IronPDFsyntax
"Page {page} of {total-pages}"
// Kaizen.io syntax (won't work)
"Page {page} of {total}"

//IronPDFsyntax
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

Sujet 4 : Méthode de conversion introuvable

Problème : la méthode Convert() n'existe pas sur ChromePdfRenderer.

Solution : Utilisez RenderHtmlAsPdf() :

// Kaizen.io
var pdfBytes = converter.Convert(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var pdfBytes = pdf.BinaryData;
// Kaizen.io
var pdfBytes = converter.Convert(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var pdfBytes = pdf.BinaryData;
$vbLabelText   $csharpLabel

Édition 5 : Premier rendu lent

Problème : La première génération du PDF prend 1 à 3 secondes.

Solution :IronPDFinitialise Chromium lors de sa première utilisation. Réchauffement au démarrage de l'application :

// In Program.cs or Startup.cs:
new ChromePdfRenderer().RenderHtmlAsPdf("<html></html>");
// In Program.cs or Startup.cs:
new ChromePdfRenderer().RenderHtmlAsPdf("<html></html>");
$vbLabelText   $csharpLabel

Liste de contrôle de la migration

Pré-migration

  • Identifier tous les Kaizen.io using des instructions
  • Paramètres Options de conversionde document utilisés
  • Remarquez les modèles d'en-tête/de pied de page et les espaces réservés
  • Liste des emplacements des clés API (à supprimer)
  • Vérifier la logique de nouvelle tentative/limite de débit (pour la suppression)
  • Obtenir une clé de licence IronPDF

Modifications du paquet

  • Supprimer le package Kaizen.HtmlToPdf
  • Installez le package NuGet IronPdf : dotnet add package IronPdf
  • Mettre à jour les importations d'espace de noms

Modifications du code

  • Ajouter la configuration de la clé de licence au démarrage
  • Remplacez HtmlToPdfConverterpar ChromePdfRenderer
  • Convertir Options de conversionen RenderingOptions
  • Mettre à jour Convert() en RenderHtmlAsPdf()
  • Mettre à jour ConvertUrl() en RenderUrlAsPdf()
  • Mettre à jour la syntaxe des espaces réservés ( {total}{total-pages})
  • Remplacez File.WriteAllBytes() par pdf.SaveAs()
  • Supprimer la configuration de la clé API
  • Supprimer la logique de nouvelle tentative/limite de débit
  • Supprimer la gestion des erreurs réseau pour les appels API

Essai

  • Tester tous les chemins de génération de PDF
  • Vérifier l'affichage de l'en-tête et du pied de page
  • Vérifier le rendu de l'espace réservé
  • Valider les marges et les dimensions des pages
  • Testez la fonctionnalité hors ligne (nouvelle fonctionnalité !)
  • Amélioration des performances de référence

Après la migration

  • Supprimez la clé API Kaizen.io de la configuration
  • Mettre à jour les variables d'environnement
  • Supprimer la configuration de limitation de débit
  • Mise à jour de la surveillance/des alertes

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