Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de Winnovative vers IronPDF en C#

Migrer de WinnovativeàIronPDF: Un guide complet du développeur C

Winnovative est un nom reconnu dans l'espace de génération de PDF .NET, offrant des capacités de conversion HTML vers PDF pour les applications C#. Cependant, la dépendance de la bibliothèque à l'égard d'un moteur WebKit datant de 2016 pose d'importants problèmes pour le développement web moderne. Les fonctionnalités CSS contemporaines telles que la mise en page Grid, la syntaxe JavaScript moderne et les frameworks populaires tels que Bootstrap 5 et Tailwind CSS ne s'affichent souvent pas correctement, voire pas du tout.

Ce guide fournit un chemin de migration complet de Winnovativeà IronPDF, avec des instructions étape par étape, des comparaisons de code et des exemples pratiques pour les développeurs .NET professionnels qui évaluent cette transition.

Pourquoi migrer de Winnovative

Winnovative s'appuie sur un moteur WebKit datant de 2016 qui pose de sérieux problèmes pour les applications web modernes :

Aucune prise en charge des grilles CSS : Bootstrap 5, Tailwind CSS et les mises en page modernes se cassent complètement la figure. Toute page utilisant la grille CSS ne s'affichera pas comme prévu.

Mise en œuvre boguée de Flexbox : rendu incohérent par rapport aux navigateurs modernes. Les développeurs passent souvent des heures à résoudre des problèmes de mise en page qui n'existent que dans Winnovative.

<JavaScript ES5 uniquement : Les fonctionnalités modernes de JavaScript ES6+ (fonctions fléchées, async/await, classes) échouent silencieusement. Cela signifie que React, Vue et d'autres frameworks modernes produisent souvent des résultats erronés.

Développement stagnant : Bien que le terme "Winnovative" suggère l'innovation, le produit a fait l'objet de très peu de mises à jour au cours des dernières années.

Problèmes de rendu des polices : Les polices Web et les typographies personnalisées ont souvent un rendu incorrect, voire inexistant.

Problèmes de sécurité : Un moteur WebKit datant de 2016 n'a pas bénéficié de plusieurs années de correctifs de sécurité et de vulnérabilité.

Impact sur le monde réel

Les feuilles de style CSS et JavaScript modernes ne fonctionnent tout simplement pas dans Winnovative:

<!-- This modern CSS breaks in Winnovative-->
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
  <div>Column 1</div>
  <div>Column 2</div>
  <div>Column 3</div>
</div>

<!-- Modern JavaScript fails silently -->
<script>
const items = data.map(item => item.name); // Arrow functions: FAIL
const result = await fetchData(); // Async/await: FAIL
class Report { } // Classes: FAIL
</script>
<!-- This modern CSS breaks in Winnovative-->
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
  <div>Column 1</div>
  <div>Column 2</div>
  <div>Column 3</div>
</div>

<!-- Modern JavaScript fails silently -->
<script>
const items = data.map(item => item.name); // Arrow functions: FAIL
const result = await fetchData(); // Async/await: FAIL
class Report { } // Classes: FAIL
</script>
HTML

IronPDFvs Winnovative: Comparaison des fonctionnalités

La compréhension des différences architecturales aide les décideurs techniques à évaluer l'investissement dans la migration :

Aspect Winnovative IronPDF
Moteur de rendu WebKit (2016) Chromium (actuel)
CSS Grid Non pris en charge Prise en charge complète
Flexbox Buggy Prise en charge complète
JavaScript ES5 uniquement ES2024
Bootstrap 5 Rupture Prise en charge complète
Tailwind CSS Non pris en charge Prise en charge complète
React/Vue SSR Problématique Fonctionne parfaitement
Fontes Web Peu fiable Prise en charge complète
Mises à jour Peu fréquents Mensuel
Prix $750-$1,600 Compétitif

Démarrage rapide : Migration de Winnovativevers IronPDF

La migration peut commencer immédiatement grâce à ces étapes fondamentales.

Étape 1 : Remplacer les paquets NuGet

Supprimez tous les paquets Winnovative:

# Remove Winnovative
dotnet remove package Winnovative.WebKitHtmlToPdf
dotnet remove package Winnovative.HtmlToPdf
dotnet remove package Winnovative.WebToPdfConverter
# Remove Winnovative
dotnet remove package Winnovative.WebKitHtmlToPdf
dotnet remove package Winnovative.HtmlToPdf
dotnet remove package Winnovative.WebToPdfConverter
SHELL

InstallezIronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Étape 2 : Mise à jour des espaces de noms

Remplacer les espaces de noms Winnovativepar l'espace de noms IronPdf :

// Before (Winnovative)
using Winnovative;
using Winnovative.WebKit;

// After (IronPDF)
using IronPdf;
// Before (Winnovative)
using Winnovative;
using Winnovative.WebKit;

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

Étape 3 : initialisation de la licence

Ajouter l'initialisation de la licence au démarrage de l'application :

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Exemples de migration de code

Conversion de HTML en PDF

Le cas d'utilisation le plus courant démontre les différences d'API entre ces bibliothèques PDF .NET.

Approche innovante:

// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();

        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";

        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");

        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);

        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();

        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";

        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");

        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);

        Console.WriteLine("PDF created successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Approche IronPDF:

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

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);

        // Save to file
        pdf.SaveAs("output.pdf");

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

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);

        // Save to file
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Winnovative nécessite la création d'un HtmlToPdfConverter, la définition d'une clé de licence sur l'instance, l'appel de ConvertHtml() avec un paramètre URL de base vide, la réception d'octets bruts et l'écriture manuelle dans un fichier.IronPDFsimplifie ces opérations : créez un ChromePdfRenderer, appelez RenderHtmlAsPdf(), et utilisez la méthode intégrée SaveAs().

Pour les scénarios avancés de conversion de HTML en PDF, voir le guide de conversion de HTML en PDF.

Conversion des URL en PDF

La conversion d'URL en PDF présente des caractéristiques similaires.

Approche innovante:

// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();

        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";

        // Convert URL to PDF
        string url = "https://www.example.com";
        byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url);

        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);

        Console.WriteLine("PDF from URL created successfully");
    }
}
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();

        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";

        // Convert URL to PDF
        string url = "https://www.example.com";
        byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url);

        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);

        Console.WriteLine("PDF from URL created successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Approche IronPDF:

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

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Convert URL to PDF
        string url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);

        // Save to file
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Convert URL to PDF
        string url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);

        // Save to file
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Winnovative utilise ConvertUrl() qui renvoie des octets qui doivent être enregistrés manuellement.IronPDFfournit RenderUrlAsPdf() avec un objet Document PDFqui inclut SaveAs() pour plus de commodité.

Explorez la URL vers la documentation PDF pour l'authentification et les options d'en-tête personnalisées.

Ajouter des en-têtes et des pieds de page

Les en-têtes et les pieds de page révèlent des différences architecturales significatives. Winnovativeutilise une approche programmatique basée sur les éléments avec des objets TextElement, tandis qu'IronPDF utilise des en-têtes basés sur HTML avec des jetons placeholder.

Approche innovante:

// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();

        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";

        // Enable header
        htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
        htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60;

        // Add header text
        TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12));
        htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText);

        // Enable footer
        htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
        htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60;

        // Add footer with page number
        TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10));
        htmlToPdfConverter.PdfFooterOptions.AddElement(footerText);

        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");

        // Save to file
        System.IO.File.WriteAllBytes("document.pdf", pdfBytes);

        Console.WriteLine("PDF with header and footer created successfully");
    }
}
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();

        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";

        // Enable header
        htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
        htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60;

        // Add header text
        TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12));
        htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText);

        // Enable footer
        htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
        htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60;

        // Add footer with page number
        TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10));
        htmlToPdfConverter.PdfFooterOptions.AddElement(footerText);

        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");

        // Save to file
        System.IO.File.WriteAllBytes("document.pdf", pdfBytes);

        Console.WriteLine("PDF with header and footer created successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Approche IronPDF:

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

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 12
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };

        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);

        // Save to file
        pdf.SaveAs("document.pdf");

        Console.WriteLine("PDF with header and footer created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 12
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };

        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);

        // Save to file
        pdf.SaveAs("document.pdf");

        Console.WriteLine("PDF with header and footer created successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Winnovative requiert l'activation des en-têtes/pieds de page via PdfDocumentOptions.ShowHeader, la définition des hauteurs, la création d'objets TextElementavec des positions de coordonnées et des objets System.Drawing.Font, et l'utilisation des caractères génériques &p; et &P;.IronPDFutilise des objets TextHeaderFooter avec des propriétés simples comme CenterText et FontSize, et des caractères génériques intuitifs comme {page} et {total-pages}.

Pour les en-têtes basés sur HTML avec un style CSS complet, voir la documentation sur les en-têtes et les pieds de page.

Référence de mappage de l'API innovante à IronPDF

Cette cartographie accélère la migration en indiquant les équivalents directs des API :

Classe Winnovative Équivalent d'IronPDF Notes
HtmlToPdfConverter ChromePdfRenderer Principale classe de conversion
Document PDF Document PDF Manipulation PDF
PdfDocumentOptions Options de rendu Configuration
PdfHeaderOptions HtmlHeaderFooter En-têtes
PdfFooterOptions HtmlHeaderFooter Pieds de page
TextElement HTML dans HtmlFragment Positionnement du texte
ImageElement HTML <img> Placement de l'image

Mise en correspondance des méthodes

Méthode Winnovative Méthode IronPDF
ConvertUrl(url) RenderUrlAsPdf(url)
ConvertUrlToFile(url, path) RenderUrlAsPdf(url).SaveAs(path)
ConvertHtml(html, baseUrl) RenderHtmlAsPdf(html)
ConvertHtmlToFile(html, path) RenderHtmlAsPdf(html).SaveAs(path)
ConvertHtmlFile(path) RenderHtmlFileAsPdf(path)
MergePdf(streams) PdfDocument.Merge(pdfs)
AppendPdf(pdf) pdf1.AppendPdf(pdf2)

Cartographie des options

Option Winnovative Option IronPDF
PdfPageSize.A4 PaperSize = PdfPaperSize.A4
PdfPageSize.Letter PaperSize = PdfPaperSize.Letter
PdfPageOrientation.Portrait PaperOrientation = PdfPaperOrientation.Portrait
PdfPageOrientation.Landscape PaperOrientation = PdfPaperOrientation.Landscape
Marge supérieure = 20 MarginTop = 20
Marge de fond = 20 MarginBottom = 20
Marge gauche = 15 MarginLeft = 15
Marge droite = 15 MarginRight = 15
ShowHeader = true Définir la propriété HtmlHeader
ShowFooter = true Définir la propriété HtmlFooter
JavaScriptEnabled = true EnableJavaScript = true
Numéro de page &p; Numéro de page {page}
Nombre total de pages &P; Nombre total de pages {total-pages}

Problèmes de migration courants et solutions

Enjeu 1 : Les mises en page CSS ont une apparence différente

Symptôme: Les mises en page qui semblaient "correctes" dans Winnovativeont désormais un aspect différent dans IronPdf.

Cause: Le WebKit 2016 de Winnovativeprésentait des bogues de rendu que les développeurs ont contournés.IronPDFassure un rendu correct conformément aux normes modernes.

Solution:Supprimez les hacks CSS spécifiques à Winnovativeet utilisez le CSS standard :

// Clean up legacy CSS
string cleanedHtml = html
    .Replace("-webkit-flex", "flex")
    .Replace("display: -webkit-box", "display: flex");
// Clean up legacy CSS
string cleanedHtml = html
    .Replace("-webkit-flex", "flex")
    .Replace("display: -webkit-box", "display: flex");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Sujet 2 : JavaScript ne s'exécute pas

Symptôme: Le contenu dynamique n'apparaît pas dans le PDF.

Cause:Nécessité de configurer les options d'attente JavaScript de manière explicite.

Solution:

renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(5000);
// Or wait for specific element
renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000);
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(5000);
// Or wait for specific element
renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Sujet 3 : L'URL de base ne fonctionne pas

Symptôme: Les URL relatives pour les images et les CSS ne se résolvent pas.

Cause:IronPDFa besoin d'une configuration explicite de l'URL de base.

Solution:

renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/");
renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Edition 4 : Différents sauts de page

Symptôme: Le contenu s'interrompt à différents endroits par rapport à Winnovative.

Cause: Les moteurs de rendu traitent différemment les sauts de page.

Solution: Utiliser des contrôles de saut de page CSS explicites :

/* Control page breaks explicitly */
.no-break {
    page-break-inside: avoid;
}
.page-break-before {
    page-break-before: always;
}
.page-break-after {
    page-break-after: always;
}

Edition 5 : Les polices de caractères sont différentes

Symptôme: Le texte apparaît dans des polices différentes de celles prévues.

Cause:IronPDFutilise des polices de caractères système ; les polices web nécessitent un chargement explicite.

Solution:

<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');

body {
    font-family: 'Roboto', Arial, sans-serif;
}
</style>
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');

body {
    font-family: 'Roboto', Arial, sans-serif;
}
</style>
HTML

Liste de contrôle de la migration innovante

Tâches préalables à la migration

Auditez votre base de code pour identifier tous les usages de Winnovative:

# Find all Winnovativereferences
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
# Find all Winnovativereferences
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
SHELL

Documenter les configurations actuelles, y compris la taille des pages, les marges et les paramètres d'en-tête et de pied de page. Identifier les solutions de contournement CSS (préfixes webkit, grilles flottantes) qui peuvent être supprimées. Veuillez noter les exigences de compatibilité JavaScript.

Tâches de mise à jour du code

  1. Supprimer les paquets NuGet de Winnovative
  2. Installer le paquet NuGet IronPdf
  3. Mettre à jour toutes les importations de l'espace de noms de Winnovative vers IronPdf
  4. Remplacer HtmlToPdfConverterpar ChromePdfRenderer
  5. Convertir les appels ConvertHtml() en RenderHtmlAsPdf()
  6. Convertir les appels ConvertUrl() en RenderUrlAsPdf()
  7. Mettre à jour les paramètres de taille/orientation de la page dans RenderingOptions
  8. Convertir les configurations de marge
  9. Migrer les en-têtes/pieds de page basés sur TextElementvers TextHeaderFooter basés sur HTML
  10. Mise à jour des caractères de remplacement du numéro de page de &p;/&P; à {page}/{total-pages}
  11. Ajouter l'initialisation de la licenceIronPDFau démarrage

Test de post-migration

Après la migration, vérifiez ces aspects :

  • Tester la conversion de base de HTML en PDF
  • Test de conversion d'URL en PDF
  • Vérifier que les grilles CSS s'affichent correctement (elles fonctionneront désormais)
  • Vérifier que les mises en page Flexbox s'affichent correctement (elles fonctionneront désormais)
  • Testez les pages à forte teneur en JavaScript avec la syntaxe moderne ES6
  • Vérifier la compatibilité avec Bootstrap 5
  • Test du rendu de l'en-tête/du pied de page
  • Vérifier les sauts de page
  • Comparer la qualité de sortie des PDF

Tâches de nettoyage

  • Supprimer les solutions de contournement CSS de Winnovative(préfixes webkit)
  • Mise à jour du JavaScript ES5 vers une syntaxe moderne
  • Suppression de la grille à base de flotteurs
  • Mise à jour de la documentation

Avantages clés de la migration vers IronPDF

Le passage de WinnovativeàIronPDFprésente plusieurs avantages décisifs :

Moteur de rendu moderne :IronPDFutilise le moteur Chromium actuel, garantissant une prise en charge complète des CSS3, CSS Grid, Flexbox et du JavaScript ES2024. Les cadres modernes tels que Bootstrap 5, Tailwind CSS et React/Vue sont correctement rendus.

<API simplifiée : les en-têtes et pieds de page HTML remplacent le positionnement programmatique des TextElement. Des caractères génériques intuitifs tels que {page} remplacent la syntaxe obscure &p;. Les méthodes intégrées SaveAs() éliminent la manipulation manuelle des octets.

Développement actif : Alors que l'adoption de .NET 10 et C# 14 augmente jusqu'en 2026, les mises à jour mensuelles d'IronPDF garantissent la compatibilité avec les versions .NET actuelles et futures.

CSS moderne sans contournement : La grille CSS, Flexbox et la typographie moderne fonctionnent sans préfixes webkit ni correctifs basés sur le flottement.

Scripts modernes : les fonctions ES6+, notamment les fonctions fléchées, async/await, les classes et les modules, s'exécutent correctement.

Conclusion

Winnovative a servi la communauté .NET en tant que convertisseur HTML-PDF, mais sa dépendance à un moteur WebKit datant de 2016 crée des défis insurmontables pour le développement web moderne. La grille CSS ne fonctionne pas. Le JavaScript moderne échoue silencieusement. Bootstrap 5 et Tailwind CSS produisent des mises en page cassées.

IronPDF fournit une conversion HTML-PDF moderne avec un moteur de rendu Chromium actuel. Le chemin de migration est simple : remplacer les packages NuGet, mettre à jour les espaces de noms, convertir les appels d'API à l'aide de la référence de mappage et migrer les en-têtes basés sur des éléments vers des équivalents basés sur HTML.

Commencez votre migration dès aujourd'hui avec un essai gratuit d'IronPDF et découvrez la prise en charge moderne des CSS et du JavaScript dans votre génération de PDF.

Pour des conseils de mise en œuvre complets, explorez la documentation IronPDF, tutoriels, et référence API.

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