Passer au contenu du pied de page
COMPARAISONS DE PRODUITS
Une comparaison d'IronPDF et SpirePDF

SpirePDF C# HTML to PDF Tutoriel & Comparaison de Bibliothèque

La conversion d'HTML en PDF est une exigence critique pour de nombreuses applications .NET, allant de la génération de factures et de rapports à la création de documentation et de livres électroniques. Lorsqu'il s'agit de choisir entre IronPDF et Spire.PDF pour vos besoins de conversion HTML en PDF, il devient essentiel de comprendre leurs points forts, leurs limitations et leurs performances dans le monde réel. Cette comparaison complète examine les capacités des deux bibliothèques, vous aidant à prendre une décision éclairée pour vos besoins en génération de PDF.

Quelles sont les principales différences entre IronPDF et Spire.PDF pour la conversion HTML en PDF ?

IronPDF est une bibliothèque PDF .NET polyvalente conçue pour gérer une large gamme de tâches liées aux PDF, y compris la conversion de fichiers PDF, l'édition de PDF, la création de PDF, la lecture de fichiers PDF, et plus encore. Il est connu pour sa facilité d'intégration dans les applications .NET existantes, ses hautes performances et son support des normes web modernes comme HTML5, CSS3 et JavaScript. Le moteur de rendu basé sur Chrome d'IronPDF garantit une génération PDF parfaite à partir du contenu HTML.

Spire.PDF pour .NET est une autre puissante bibliothèque PDF .NET qui fournit un ensemble de fonctionnalités complet pour la création et la manipulation de PDF. Il supporte diverses fonctionnalités PDF telles que l'extraction de texte et d'images, le remplissage de formulaires PDF, et les signatures numériques. Bien que complet en termes de fonctionnalités, ses capacités de conversion HTML en PDF présentent des limitations spécifiques que les développeurs devraient prendre en compte.

class="product__comprehensive-comparison-table">
class="table-container">
class="table-number">Aperçu Comparatif des Produits
class="table-title">Comparaison des Fonctionnalités d'IronPDF et Spire.PDF pour le Traitement des PDF .NET
<td courbe d'apprentissage>
Catégorie Fonctionnalité/Aspect IronPDF Spire.PDF Avantage Clé
Architecture de base Philosophie de conception Simplicité d'abord, API intuitives Approche multi-classes, configuration manuelle IronPDF : Développement plus rapide
Complexité de l'API Méthodes simples comme RenderHtmlAsPdf() Approche multithread nécessaire IronPDF : 70% de code en moins
1–2 jours typiques 1–2 semaines typiques IronPDF : Adoption plus rapide
Support de plateforme Multiples plateformes Support natif, pas de paquets supplémentaires Support limité Linux/macOS IronPDF : Véritable multi-plateformes
Versions .NET .NET 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ .NET Core 2.0+, Framework 2.0+ Les deux : Support étendu du framework
Systèmes d'exploitation Windows, Linux, macOS, Docker natif Principalement axé sur Windows IronPDF : Support plus large des OS
HTML en PDF Moteur de rendu Moteur V8 Chrome complet Analyseur HTML personnalisé IronPDF : Fidélité navigateur 98%+
Support CSS3/HTML5 Support complet Limité (CSS de base seulement) IronPDF : Normes web modernes
Exécution JavaScript Support JavaScript complet Prévu mais non implémenté IronPDF : Prêt pour le contenu dynamique
Polices Web Google Fonts, polices système Support limité des polices IronPDF : Flexibilité typographique
Vitesse de rendu 0,8–1,2 s typique 0,5–0,8 s pour HTML simple Spire : Plus rapide pour HTML basique
Sécurité & Chiffrement Niveaux de chiffrement AES-256, gestionnaires personnalisés AES-256 standard Les deux : Standard industriel
Simplicité de l'API Classe unique SecuritySettings Multiples méthodes de sécurité IronPDF : Approche unifiée
Manipulation de contenu Méthode de rédaction Suppression réelle du contenu, API en une ligne Superposition manuelle de rectangle IronPDF : Prêt pour la conformité
Filigrane Basé sur HTML/CSS, style complet Basé sur le texte avec rotation IronPDF : Filigranes riches
Conversions de fichier DOCX en PDF DocxToPdfRenderer intégré Nécessite la bibliothèque Spire.Doc IronPDF : Pas de coût supplémentaire
Métriques de performance Utilisation de la mémoire 150–200 Mo (moteur Chrome) 80–120 Mo Spire : Moindre emprunte mémoire
Support des threads Optimisé pour async/await natif Thread STA requis IronPDF : Modèles async modernes
Expérience développeur Exemples de code 100+ échantillons prêts à l'emploi Exemples de base IronPDF : Ressources étendues
Messages d'erreur Descriptifs, actionnables Messages techniques IronPDF : Meilleur débogage
Licences & Tarification Niveau d'entrée Lite : $799 (1 dev, 1 projet) Développeur : $1,199/an (1 dev) IronPDF : Licence perpétuelle
Licence Équipe Plus : $1,199 (3 devs, 3 projets) Site : 4 599 $ (10 devs) IronPDF : Meilleure valeur pour l'équipe
Option de Suite Iron Suite : $1,498 (9 produits) Aucune option de suite IronPDF : Valeur exceptionnelle
Support Support inclus Oui, support technique 24/5 Forum seulement (support payant en supplément) IronPDF : Support inclus
Canaux de support Email, chat, téléphone, partage d'écran Forum, email (niveaux payants) IronPDF : Plus de canaux
Idéal pour Cas d'utilisation Applications web modernes, HTML/CSS complexe Documents simples, mises en page basiques Dépendant du contexte
class="table-note"> Note. Spire.PDF offre des fonctionnalités PDF de base avec une utilisation mémoire réduite, tandis que IronPDF excelle dans le rendu HTML et le support des normes web modernes. Sélectionnez basé sur si le rendu HTML complexe ou l'utilisation minimale de ressources est la priorité.

Pour plus d'informations détaillées sur IronPDF, consultez IronPDF.com.

Comment la compatibilité multiplateforme se compare-t-elle entre les bibliothèques ?

IronPDF

IronPDF se distingue par sa large compatibilité multiplateforme. Il prend en charge une large gamme d'environnements au sein du framework .NET, garantissant un fonctionnement fluide sur différentes plateformes. Voici un aperçu de la compatibilité de la plateforme IronPDF :

  • Versions .NET :

    • Entièrement écrit en et prend en charge C#, VB.NET et F#
    • .NET Core (8, 7, 6, 5, et 3.1+)
    • .NET Standard (2.0+)
    • .NET Framework (4.6.2+)
  • Environnements d'application : IronPDF fonctionne dans divers environnements d'application tels que Windows, Linux, Mac, Docker, Azure, et AWS.
  • IDEs : Fonctionne avec des IDEs tels que Microsoft Visual Studio et JetBrains Rider & ReSharper
  • Systèmes d'exploitation et Processeurs : Supporte plusieurs OS & processeurs différents y compris Windows, Mac, Linux, x64, x86, ARM

Pour plus de détails sur la compatibilité d'IronPDF, visitez la Page des fonctionnalités d'IronPDF.

Spire.PDF

Spire.PDF dispose de la prise en charge complète dans l'environnement .NET, mais bien qu'il fonctionne sur le système d'exploitation Windows, il manque le support natif pour Linux et macOS que possède IronPDF. Lors du déploiement sur macOS ou Linux, Spire.PDF nécessite différents plugins pour chaque plateforme, ce qui peut compliquer les scénarios de déploiement.

  • Support .NET :

    • .NET Framework 2.0+
    • .NET Core 2.0+
    • Écrit en C#, avec support pour VB.NET
  • Environnements d'application : Spire.PDF fonctionne dans divers environnements d'application tels que les applications Windows et ASP.NET. Il peut également supporter Windows Forms.

Quelle bibliothèque offre de meilleures fonctionnalités de conversion HTML en PDF ?

Fonctionnalités d'IronPDF

  • Conversion PDF : IronPDF peut convertir HTML en PDF. Avec son support complet des normes web modernes, vous pouvez être assuré qu'IronPDF retournera systématiquement des PDF parfaits à partir de votre contenu HTML. IronPDF peut également convertir des fichiers PDF à partir d'autres formats tels que DOCX, images, RTF, et plus encore.
  • Génération de PDF : Avec IronPDF, vous pouvez générer des PDFs à partir de URLs, fichiers ASPX ou chaînes HTML.
  • Fonctionnalités de sécurité : Avec IronPDF, vous pouvez toujours être assuré que tout fichier PDF sensible est sécurisé grâce à ses fonctionnalités de sécurité. Utilisez IronPDF pour crypter vos fichiers PDF, définir des mots de passe et définir des autorisations pour vos fichiers PDF.
  • Fonctionnalités d'édition PDF : Avec IronPDF, vous pouvez traiter les documents PDF existants, les éditer, et lire des fichiers PDF avec facilité. IronPDF offers editing features such as adding headers and footers, stamping text and images onto the PDF pages, adding custom watermarks to the PDF, working with PDF forms, and splitting or merging PDF files.
  • Intégration : S'intègre parfaitement aux applications ASP.NET et MVC.
  • Support des versions PDF : Peut prendre en charge la version PDF 1.2-1.7

Pour une liste complète des fonctionnalités d'IronPDF, visitez Fonctionnalités d'IronPDF.

Fonctionnalités de Spire.PDF

  • Création PDF : Créez des PDF à partir de zéro ou à partir de fichiers existants.
  • Extraction de texte et d'image : Utilisez Spire.PDF pour extraire des pages et du contenu PDF.
  • Gestion des formulaires PDF : Remplir et gérer les formulaires PDF.
  • Conversion PDF : Convertir des PDF vers d'autres formats tels qu'HTML, RTF, et images.
  • Manipulation de pages : Insérer, supprimer, et réorganiser les pages d'un PDF.
  • Support HTML limité : Le moteur HTML en PDF a un support limité pour les CSS modernes et JavaScript. Le plugin par défaut basé sur Qt ne supporte pas les propriétés de page-break CSS ou la reconnaissance de fichiers CSS externes, et l'exécution JavaScript est une fonctionnalité prévue mais non pleinement implémentée. Un convertisseur ChromeHtmlConverter optionnel est disponible pour un meilleur rendu.

Bootstrap et rendu des frameworks CSS modernes

Le développement web moderne repose fortement sur les frameworks CSS comme Bootstrap pour le développement rapide d'IU et le design responsive. Les bibliothèques de génération de PDF doivent convertir ces frameworks de manière précise pour maintenir une qualité de document professionnelle et une cohérence de design.

IronPDF : Support complet de Bootstrap et Tailwind

Le moteur Chromium d'IronPDF offre un support complet pour tous les frameworks CSS modernes :

  • Bootstrap 5 : Support complet de flexbox et CSS Grid avec tous les composants responsive
  • Bootstrap 4 : Mise en page de cartes complète, systèmes de navigation, et classes utilitaires
  • Tailwind CSS : Toutes les classes utilitaires first et modificateurs responsive
  • Foundation : Systèmes de grille et de composants complets
  • Modern CSS3 : Flexbox, Grille, propriétés personnalisées, animations et transformations

Proven with real examples: Bootstrap homepage and Bootstrap templates convert with pixel-perfect accuracy.

Exemple de code : Cartes des membres de l'équipe avec Bootstrap

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapTeam = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Our Team</h1>

        <div class='row row-cols-1 row-cols-md-3 g-4'>
            <div class='col'>
                <div class='card h-100 shadow-sm text-center'>
                    <div class='card-body d-flex flex-column'>
                        <img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
                        <h5 class='card-title'>Jennifer Martinez</h5>
                        <p class='text-muted mb-3'>Chief Technology Officer</p>
                        <p class='card-text flex-grow-1'>Leading our technical vision and innovation strategy with over 15 years of experience in software architecture.</p>
                        <div class='d-flex justify-content-center gap-2 mt-auto'>
                            <a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
                            <a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col'>
                <div class='card h-100 shadow-sm text-center'>
                    <div class='card-body d-flex flex-column'>
                        <img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
                        <h5 class='card-title'>David Chen</h5>
                        <p class='text-muted mb-3'>Head of Engineering</p>
                        <p class='card-text flex-grow-1'>Managing our engineering teams and ensuring product quality through rigorous testing and code review processes.</p>
                        <div class='d-flex justify-content-center gap-2 mt-auto'>
                            <a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
                            <a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col'>
                <div class='card h-100 shadow-sm text-center'>
                    <div class='card-body d-flex flex-column'>
                        <img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
                        <h5 class='card-title'>Sarah Johnson</h5>
                        <p class='text-muted mb-3'>Product Manager</p>
                        <p class='card-text flex-grow-1'>Driving product strategy and customer satisfaction through data-driven decisions and user research.</p>
                        <div class='d-flex justify-content-center gap-2 mt-auto'>
                            <a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
                            <a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='text-center mt-5'>
            <h3>Join Our Team</h3>
            <p class='text-muted mb-3'>We're always looking for talented individuals to join our growing team.</p>
            <a href='#' class='btn btn-primary btn-lg'>View Open Positions</a>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapTeam);
pdf.SaveAs("team-members.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapTeam = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Our Team</h1>

        <div class='row row-cols-1 row-cols-md-3 g-4'>
            <div class='col'>
                <div class='card h-100 shadow-sm text-center'>
                    <div class='card-body d-flex flex-column'>
                        <img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
                        <h5 class='card-title'>Jennifer Martinez</h5>
                        <p class='text-muted mb-3'>Chief Technology Officer</p>
                        <p class='card-text flex-grow-1'>Leading our technical vision and innovation strategy with over 15 years of experience in software architecture.</p>
                        <div class='d-flex justify-content-center gap-2 mt-auto'>
                            <a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
                            <a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col'>
                <div class='card h-100 shadow-sm text-center'>
                    <div class='card-body d-flex flex-column'>
                        <img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
                        <h5 class='card-title'>David Chen</h5>
                        <p class='text-muted mb-3'>Head of Engineering</p>
                        <p class='card-text flex-grow-1'>Managing our engineering teams and ensuring product quality through rigorous testing and code review processes.</p>
                        <div class='d-flex justify-content-center gap-2 mt-auto'>
                            <a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
                            <a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col'>
                <div class='card h-100 shadow-sm text-center'>
                    <div class='card-body d-flex flex-column'>
                        <img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
                        <h5 class='card-title'>Sarah Johnson</h5>
                        <p class='text-muted mb-3'>Product Manager</p>
                        <p class='card-text flex-grow-1'>Driving product strategy and customer satisfaction through data-driven decisions and user research.</p>
                        <div class='d-flex justify-content-center gap-2 mt-auto'>
                            <a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
                            <a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='text-center mt-5'>
            <h3>Join Our Team</h3>
            <p class='text-muted mb-3'>We're always looking for talented individuals to join our growing team.</p>
            <a href='#' class='btn btn-primary btn-lg'>View Open Positions</a>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapTeam);
pdf.SaveAs("team-members.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Sortie : Une page d'équipe professionnelle avec la grille de cartes de Bootstrap, l'alignement flexbox, les images responsive, et les composants boutons, tous rendus avec précision dans le PDF.

Spire.PDF : Support limité de HTML et des frameworks modernes

Le moteur HTML-en-PDF de Spire.PDF présente des limitations significatives pour les frameworks CSS modernes, comme noté dans leur propre documentation :

  • Support CSS limité : CSS de base seulement, pas de fonctionnalités CSS3 complètes
  • Pas de Flexbox : Bootstrap 4/5 repose fortement sur flexbox qui n'est pas pris en charge
  • Pas de CSS Grid : Les systèmes de mise en page modernes utilisant CSS Grid ne seront pas rendus correctement
  • Limites JavaScript : Exécution JavaScript minimale comparé aux navigateurs modernes
  • Bootstrap 3 maximum : Seules les versions plus anciennes de Bootstrap basées sur des tables fonctionnent de manière fiable
  • Échecs de mises en page complexes : Les designs responsive modernes nécessitent des contournements étendus

Problèmes signalés par les développeurs avec la conversion HTML de Spire.PDF :

  • Les barres de navigation Bootstrap se construisent avec des problèmes de mise en page
  • Les composants de carte avec flexbox ne s'alignent pas correctement
  • Les points de rupture de la grille responsive sont ignorés dans la sortie PDF
  • Les fonctionnalités CSS modernes nécessitent des récritures CSS manuelles ou des solutions de contournement

Impact sur le développement : Les applications utilisant Bootstrap 4+ ou les frameworks CSS modernes rencontrent des défis significatifs avec Spire.PDF. Les équipes de développement doivent :

  1. Maintenir un CSS simplifié séparé spécifiquement pour la génération de PDF (double maintenance)
  2. Régresser à Bootstrap 3 ou abandonner complètement les frameworks (limite des fonctionnalités modernes)
  3. Tester et corriger manuellement de manière extensive chaque composant (chronophage et fragile)

Pour les projets nécessitant le support de frameworks CSS modernes, les limitations de rendu HTML de Spire.PDF le rendent inadapté sans un effort supplémentaire de développement majeur et un fardeau de maintenance continue.

Pour des informations détaillées sur la compatibilité de Bootstrap, consultez le Guide CSS Bootstrap & Flexbox.

Comment les exemples de code se comparent-ils pour les tâches PDF courantes ?

Pour illustrer les capacités d'IronPDF et Spire.PDF pour .NET, nous comparerons leur implémentation de plusieurs fonctionnalités clés PDF à travers des exemples de code, vous donnant une idée de comment ces fonctionnalités pourraient aider vos projets PDF.

Convertir HTML en PDF

Exemple IronPDF :

using IronPdf;

// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");

// Advanced Example with HTML Assets
// Load external HTML assets: images, CSS, and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;

// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");

// Advanced Example with HTML Assets
// Load external HTML assets: images, CSS, and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Imports IronPdf

' Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = True

' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()

' Create a PDF from an HTML string using C#
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")

' Advanced Example with HTML Assets
' Load external HTML assets: images, CSS, and JavaScript.
' An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

La classe ChromePdfRenderer dans IronPDF utilise un moteur de navigateur Chrome complet pour rendre le contenu HTML. Cela signifie que les animations CSS3, l'exécution JavaScript, et les polices web modernes sont toutes rendues exactement comme elles le seraient dans Chrome. La méthode RenderHtmlAsPdf() accepte des chaînes HTML et des chemins de base optionnels pour charger des ressources externes, ce qui rend la conversion de documents HTML simples et complexes simple. Le renderer supporte des options de rendu avancées incluant des tailles de papier personnalisées, des marges, et des paramètres de délai JavaScript.

Exemple Spire.PDF :

using Spire.Pdf;
using Spire.Pdf.HtmlConverter;
using System.IO;
using System.Threading;
using System.Drawing;

namespace ConvertHtmlStringToPdfWithoutPlugin
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a PdfDocument object
            PdfDocument doc = new PdfDocument();

            // Create a PdfPageSettings object
            PdfPageSettings setting = new PdfPageSettings();

            // Set page size and margins through the object
            setting.Size = new SizeF(1000, 1000);
            setting.Margins = new Spire.Pdf.Graphics.PdfMargins(20);

            // Create a PdfHtmlLayoutFormat object
            PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();

            // Set IsWaiting property to true
            htmlLayoutFormat.IsWaiting = true;

            // Read HTML string from a .html file
            string htmlString = File.ReadAllText(@"C:\Users\Administrator\Desktop\Document\Html\Sample.html");

            // Load HTML from HTML string using LoadFromHTML method
            Thread thread = new Thread(() =>
            { doc.LoadFromHTML(htmlString, true, setting, htmlLayoutFormat); });
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            thread.Join();

            // Save to a PDF file
            doc.SaveToFile("HtmlStringToPdf.pdf");
        }
    }
}
using Spire.Pdf;
using Spire.Pdf.HtmlConverter;
using System.IO;
using System.Threading;
using System.Drawing;

namespace ConvertHtmlStringToPdfWithoutPlugin
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a PdfDocument object
            PdfDocument doc = new PdfDocument();

            // Create a PdfPageSettings object
            PdfPageSettings setting = new PdfPageSettings();

            // Set page size and margins through the object
            setting.Size = new SizeF(1000, 1000);
            setting.Margins = new Spire.Pdf.Graphics.PdfMargins(20);

            // Create a PdfHtmlLayoutFormat object
            PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();

            // Set IsWaiting property to true
            htmlLayoutFormat.IsWaiting = true;

            // Read HTML string from a .html file
            string htmlString = File.ReadAllText(@"C:\Users\Administrator\Desktop\Document\Html\Sample.html");

            // Load HTML from HTML string using LoadFromHTML method
            Thread thread = new Thread(() =>
            { doc.LoadFromHTML(htmlString, true, setting, htmlLayoutFormat); });
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            thread.Join();

            // Save to a PDF file
            doc.SaveToFile("HtmlStringToPdf.pdf");
        }
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.HtmlConverter
Imports System.IO
Imports System.Threading
Imports System.Drawing

Namespace ConvertHtmlStringToPdfWithoutPlugin
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Create a PdfDocument object
			Dim doc As New PdfDocument()

			' Create a PdfPageSettings object
			Dim setting As New PdfPageSettings()

			' Set page size and margins through the object
			setting.Size = New SizeF(1000, 1000)
			setting.Margins = New Spire.Pdf.Graphics.PdfMargins(20)

			' Create a PdfHtmlLayoutFormat object
			Dim htmlLayoutFormat As New PdfHtmlLayoutFormat()

			' Set IsWaiting property to true
			htmlLayoutFormat.IsWaiting = True

			' Read HTML string from a .html file
			Dim htmlString As String = File.ReadAllText("C:\Users\Administrator\Desktop\Document\Html\Sample.html")

			' Load HTML from HTML string using LoadFromHTML method
			Dim thread As New Thread(Sub()
				doc.LoadFromHTML(htmlString, True, setting, htmlLayoutFormat)
			End Sub)
			thread.SetApartmentState(ApartmentState.STA)
			thread.Start()
			thread.Join()

			' Save to a PDF file
			doc.SaveToFile("HtmlStringToPdf.pdf")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

La conversion HTML en PDF de Spire.PDF nécessite la création de plusieurs objets incluant PdfDocument, PdfPageSettings, et PdfHtmlLayoutFormat. La conversion doit être exécutée dans un thread Single Thread Apartment (STA), ajoutant à la complexité de l'implémentation. Les utilisateurs ont signalé que 'Spire génère un fichier PDF qui est juste une image. Certaines CSS ne sont même pas correctes, telles que l'ignoration des polices en gras', indiquant des limitations dans la fidélité de rendu CSS.

IronPDF utilise le moteur de rendu de Chrome pour une conversion HTML en PDF de haute fidélité, garantissant une représentation précise du contenu web grâce à son support des normes web modernes. Spire.PDF offre également une conversion HTML en PDF robuste mais peut ne pas égaler la précision de rendu d'IronPDF et adopte une approche plus longue et plus manuelle.

Comment pouvez-vous crypter les documents PDF ?

Exemple IronPDF :

using IronPdf;
using System;

// Open an Encrypted File, alternatively create a new PDF from HTML
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Edit file security settings
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;

// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;
using System;

// Open an Encrypted File, alternatively create a new PDF from HTML
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Edit file security settings
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;

// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System

' Open an Encrypted File, alternatively create a new PDF from HTML
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")

' Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = DateTime.Now

' Edit file security settings
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key")
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights

' Change or set the document encryption password
pdf.Password = "my-password"
pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

La classe SecuritySettings d'IronPDF fournit une API complète pour gérer la sécurité PDF. Vous pouvez contrôler les permissions individuelles avec des propriétés booléennes, définir différents niveaux de droits d'impression et gérer les mots de passe séparément des autres réglages de sécurité. Le design de l'API suit les conventions .NET avec des énumérations fortement typées comme PdfPrintSecurity. En savoir plus sur les permissions et mots de passe PDF dans la documentation.

Exemple Spire.PDF :

using Spire.Pdf;
using Spire.Pdf.Security;

// Create a PdfDocument object
PdfDocument pdf = new PdfDocument();

// Load a sample PDF file
pdf.LoadFromFile(@"E:\Files\sample.pdf");

// Encrypt the PDF file with a password
pdf.Security.Encrypt("open", "permission", PdfPermissionsFlags.Print | PdfPermissionsFlags.CopyContent, PdfEncryptionKeySize.Key128Bit);

// Save the result file
pdf.SaveToFile("Encrypt.pdf", FileFormat.PDF);
using Spire.Pdf;
using Spire.Pdf.Security;

// Create a PdfDocument object
PdfDocument pdf = new PdfDocument();

// Load a sample PDF file
pdf.LoadFromFile(@"E:\Files\sample.pdf");

// Encrypt the PDF file with a password
pdf.Security.Encrypt("open", "permission", PdfPermissionsFlags.Print | PdfPermissionsFlags.CopyContent, PdfEncryptionKeySize.Key128Bit);

// Save the result file
pdf.SaveToFile("Encrypt.pdf", FileFormat.PDF);
Imports Spire.Pdf
Imports Spire.Pdf.Security

' Create a PdfDocument object
Private pdf As New PdfDocument()

' Load a sample PDF file
pdf.LoadFromFile("E:\Files\sample.pdf")

' Encrypt the PDF file with a password
pdf.Security.Encrypt("open", "permission", PdfPermissionsFlags.Print Or PdfPermissionsFlags.CopyContent, PdfEncryptionKeySize.Key128Bit)

' Save the result file
pdf.SaveToFile("Encrypt.pdf", FileFormat.PDF)
$vbLabelText   $csharpLabel

L'approche de chiffrement de Spire.PDF utilise la méthode Security.Encrypt() avec des drapeaux en opérations bit à bit pour les permissions. Bien que plus compact, cette approche nécessite une compréhension des opérations bit à bit et offre un contrôle moins granulaire comparé aux propriétés de permission individuelle d'IronPDF.

Les deux bibliothèques offrent des méthodes faciles à utiliser pour crypter des PDFs et définir la lisibilité des documents PDF chiffrés. IronPDF offre une approche simple tout en vous donnant un contrôle total sur les paramètres de sécurité de votre PDF. Spire.PDF prend une démarche légèrement plus courte mais inclut toujours des options supplémentaires pour définir les permissions.

Quelles sont les options pour la rédaction de contenu PDF ?

Exemple IronPDF :

using IronPdf;

// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");

// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");

// Save the redacted document
pdf.SaveAs("redacted.pdf");
using IronPdf;

// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");

// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");

// Save the redacted document
pdf.SaveAs("redacted.pdf");
Imports IronPdf

' Load the PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")

' Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are")

' Save the redacted document
pdf.SaveAs("redacted.pdf")
$vbLabelText   $csharpLabel

IronPDF fournit une API de rédaction dédiée qui effectue une suppression véritable du contenu, pas seulement un masquage visuel. La méthode RedactTextOnAllPages() recherche et supprime définitivement le texte spécifié, garantissant la conformité avec les réglementations sur la protection des données. Des méthodes supplémentaires permettent la rédaction sur des pages ou régions spécifiques.

Exemple Spire.PDF pour la rédaction via une superposition de rectangles :

Bien que Spire.PDF ne dispose pas d'un outil de rédaction dédié, le contenu peut toujours être rédigé via un processus manuel, comme démontré ci-dessous :

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

// Specify the input PDF file path
string inputPdfFilePath = "path/to/your/input.pdf";

// Specify the output redacted PDF file path
string outputPdfFilePath = "path/to/your/redacted_output.pdf";

// Create a new PdfDocument object
PdfDocument pdfDocument = new PdfDocument();

// Load the existing PDF document
pdfDocument.LoadFromFile(inputPdfFilePath);

// Redact content on each page
foreach (PdfPageBase page in pdfDocument.Pages)
{
    // Define the area to redact (e.g., coordinates and size of the rectangle)
    RectangleF redactArea = new RectangleF(100, 100, 200, 50); // Example coordinates and size

    // Apply redaction
    page.Canvas.DrawRectangle(new PdfSolidBrush(Color.Black), redactArea);
}

// Save the redacted PDF document
pdfDocument.SaveToFile(outputPdfFilePath);
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

// Specify the input PDF file path
string inputPdfFilePath = "path/to/your/input.pdf";

// Specify the output redacted PDF file path
string outputPdfFilePath = "path/to/your/redacted_output.pdf";

// Create a new PdfDocument object
PdfDocument pdfDocument = new PdfDocument();

// Load the existing PDF document
pdfDocument.LoadFromFile(inputPdfFilePath);

// Redact content on each page
foreach (PdfPageBase page in pdfDocument.Pages)
{
    // Define the area to redact (e.g., coordinates and size of the rectangle)
    RectangleF redactArea = new RectangleF(100, 100, 200, 50); // Example coordinates and size

    // Apply redaction
    page.Canvas.DrawRectangle(new PdfSolidBrush(Color.Black), redactArea);
}

// Save the redacted PDF document
pdfDocument.SaveToFile(outputPdfFilePath);
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

' Specify the input PDF file path
Private inputPdfFilePath As String = "path/to/your/input.pdf"

' Specify the output redacted PDF file path
Private outputPdfFilePath As String = "path/to/your/redacted_output.pdf"

' Create a new PdfDocument object
Private pdfDocument As New PdfDocument()

' Load the existing PDF document
pdfDocument.LoadFromFile(inputPdfFilePath)

' Redact content on each page
For Each page As PdfPageBase In pdfDocument.Pages
	' Define the area to redact (e.g., coordinates and size of the rectangle)
	Dim redactArea As New RectangleF(100, 100, 200, 50) ' Example coordinates and size

	' Apply redaction
	page.Canvas.DrawRectangle(New PdfSolidBrush(Color.Black), redactArea)
Next page

' Save the redacted PDF document
pdfDocument.SaveToFile(outputPdfFilePath)
$vbLabelText   $csharpLabel

Cette approche manuelle nécessite de calculer les coordonnées exactes pour chaque zone de rédaction et ne fournit qu'un masquage visuel plutôt qu'une véritable suppression de contenu. Le texte sous-jacent peut toujours être extrait via des outils d'édition PDF.

IronPDF simplifie la rédaction avec son outil robuste mais simple de rédaction. Spire.PDF nécessite une gestion plus manuelle pour la rédaction due à l'absence d'un outil de rédaction intégré, entraînant des flux de travail potentiellement moins efficaces.

Comment signer des documents PDF ?

Exemple IronPDF :

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Instantiate the renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");

// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);

// Create PdfSignature with certificate
var sig = new PdfSignature(cert);

// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Instantiate the renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");

// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);

// Create PdfSignature with certificate
var sig = new PdfSignature(cert);

// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates

' Instantiate the renderer
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>foo</h1>")

' Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
Private cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)

' Create PdfSignature with certificate
Private sig = New PdfSignature(cert)

' Sign PDF document
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

La mise en œuvre de la signature numérique d'IronPDF suit les modèles de gestion des certificats .NET. La classe PdfSignature accepte les objets standards X509Certificate2 et gère la complexité de la signature PDF en interne. Vous pouvez également ajouter des apparences visuelles de signature et configurer des champs de signature.

Exemple Spire.PDF :

using Spire.Pdf;
using Spire.Pdf.Security;
using System.Drawing;

// Create a PdfDocument object
PdfDocument doc = new PdfDocument();

// Load a sample PDF file
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");

// Load the certificate
PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");

// Create a PdfSignature object and specify its position and size
PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 260 - 54 , 200, 260, 110);
signature.Bounds = rectangleF;
signature.Certificated = true;

// Set the graphics mode to ImageAndSignDetail
signature.GraphicsMode = GraphicMode.SignImageAndSignDetail;

// Set various details about the signature
signature.NameLabel = "Signer:";
signature.Name = "Gary";
signature.ContactInfoLabel = "Phone:";
signature.ContactInfo = "0123456";
signature.DateLabel = "Date:";
signature.Date = DateTime.Now;
signature.LocationInfoLabel = "Location:";
signature.LocationInfo = "USA";
signature.ReasonLabel = "Reason:";
signature.Reason = "I am the author";
signature.DistinguishedNameLabel = "DN:";
signature.DistinguishedName = signature.Certificate.IssuerName.Name;

// Set the signature image source
signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handwrittingSignature.png");

// Set the signature font
signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular));

// Set the document permission to forbid changes but allow form fill
signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;

// Save to file
doc.SaveToFile("VisiableSignature.pdf");
using Spire.Pdf;
using Spire.Pdf.Security;
using System.Drawing;

// Create a PdfDocument object
PdfDocument doc = new PdfDocument();

// Load a sample PDF file
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");

// Load the certificate
PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");

// Create a PdfSignature object and specify its position and size
PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 260 - 54 , 200, 260, 110);
signature.Bounds = rectangleF;
signature.Certificated = true;

// Set the graphics mode to ImageAndSignDetail
signature.GraphicsMode = GraphicMode.SignImageAndSignDetail;

// Set various details about the signature
signature.NameLabel = "Signer:";
signature.Name = "Gary";
signature.ContactInfoLabel = "Phone:";
signature.ContactInfo = "0123456";
signature.DateLabel = "Date:";
signature.Date = DateTime.Now;
signature.LocationInfoLabel = "Location:";
signature.LocationInfo = "USA";
signature.ReasonLabel = "Reason:";
signature.Reason = "I am the author";
signature.DistinguishedNameLabel = "DN:";
signature.DistinguishedName = signature.Certificate.IssuerName.Name;

// Set the signature image source
signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handwrittingSignature.png");

// Set the signature font
signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular));

// Set the document permission to forbid changes but allow form fill
signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;

// Save to file
doc.SaveToFile("VisiableSignature.pdf");
Imports Spire.Pdf
Imports Spire.Pdf.Security
Imports System.Drawing

' Create a PdfDocument object
Private doc As New PdfDocument()

' Load a sample PDF file
doc.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")

' Load the certificate
Dim cert As New PdfCertificate("C:\Users\Administrator\Desktop\MyCertificate.pfx", "e-iceblue")

' Create a PdfSignature object and specify its position and size
Dim signature As New PdfSignature(doc, doc.Pages(doc.Pages.Count - 1), cert, "MySignature")
Dim rectangleF As New RectangleF(doc.Pages(0).ActualSize.Width - 260 - 54, 200, 260, 110)
signature.Bounds = rectangleF
signature.Certificated = True

' Set the graphics mode to ImageAndSignDetail
signature.GraphicsMode = GraphicMode.SignImageAndSignDetail

' Set various details about the signature
signature.NameLabel = "Signer:"
signature.Name = "Gary"
signature.ContactInfoLabel = "Phone:"
signature.ContactInfo = "0123456"
signature.DateLabel = "Date:"
signature.Date = DateTime.Now
signature.LocationInfoLabel = "Location:"
signature.LocationInfo = "USA"
signature.ReasonLabel = "Reason:"
signature.Reason = "I am the author"
signature.DistinguishedNameLabel = "DN:"
signature.DistinguishedName = signature.Certificate.IssuerName.Name

' Set the signature image source
signature.SignImageSource = PdfImage.FromFile("C:\Users\Administrator\Desktop\handwrittingSignature.png")

' Set the signature font
signature.SignDetailsFont = New PdfTrueTypeFont(New Font("Arial Unicode MS", 12F, FontStyle.Regular))

' Set the document permission to forbid changes but allow form fill
signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges Or PdfCertificationFlags.AllowFormFill

' Save to file
doc.SaveToFile("VisiableSignature.pdf")
$vbLabelText   $csharpLabel

Spire.PDF offre un contrôle étendu sur l'apparence des signatures mais nécessite beaucoup plus de code. Vous devez définir manuellement chaque libellé, positionner précisément la signature et configurer les éléments visuels séparément.

Signer numériquement des PDF peut être utile dans divers contextes, allant de l'authentification de documents PDF à simplement l'approbation d'un nouveau projet. IronPDF propose une approche simple pour ajouter des signatures numériques, permettant une automatisation facile du processus de signature. Spire.PDF prend également en charge les signatures numériques pour les PDFs; cependant, le processus peut être plus manuel et nécessiter plus d'efforts pour être mis en œuvre.

Quelles méthodes sont disponibles pour le marquage des PDFs ?

Exemple IronPDF :

using IronPdf;

// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;

// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf

' Stamps a Watermark onto a new or existing PDF
Private renderer = New ChromePdfRenderer()

Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
$vbLabelText   $csharpLabel

La fonctionnalité de filigranage d'IronPDF accepte le contenu HTML, vous permettant d'utiliser des CSS pour le style. La méthode ApplyWatermark() offre des paramètres pour l'angle de rotation et l'alignement, facilitant le positionnement précis des filigranes. En savoir plus sur les filigranes personnalisés et les options avancées de style.

Exemple Spire.PDF :

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

// Create a PdfDocument object
PdfDocument pdf = new PdfDocument();

// Load a sample PDF document
pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");

// Create a PdfTrueTypeFont object
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true);

// Set the watermark text
string text = "CONFIDENTIAL";

// Measure the text size
SizeF textSize = font.MeasureString(text);

// Calculate the values of two offset variables,
// which will be used to calculate the translation amount of the coordinate system
float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);

// Traverse all the pages in the document
foreach (PdfPageBase page in pdf.Pages)
{
    // Set the page transparency
    page.Canvas.SetTransparency(0.8f);

    // Translate the coordinate system by specified coordinates
    page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);

    // Rotate the coordinate system 45 degrees counterclockwise
    page.Canvas.RotateTransform(-45);

    // Draw watermark text on the page
    page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);
}

// Save the changes to another file
pdf.SaveToFile("TextWatermark.pdf");
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

// Create a PdfDocument object
PdfDocument pdf = new PdfDocument();

// Load a sample PDF document
pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");

// Create a PdfTrueTypeFont object
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true);

// Set the watermark text
string text = "CONFIDENTIAL";

// Measure the text size
SizeF textSize = font.MeasureString(text);

// Calculate the values of two offset variables,
// which will be used to calculate the translation amount of the coordinate system
float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);

// Traverse all the pages in the document
foreach (PdfPageBase page in pdf.Pages)
{
    // Set the page transparency
    page.Canvas.SetTransparency(0.8f);

    // Translate the coordinate system by specified coordinates
    page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);

    // Rotate the coordinate system 45 degrees counterclockwise
    page.Canvas.RotateTransform(-45);

    // Draw watermark text on the page
    page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);
}

// Save the changes to another file
pdf.SaveToFile("TextWatermark.pdf");
Imports System
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

' Create a PdfDocument object
Private pdf As New PdfDocument()

' Load a sample PDF document
pdf.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")

' Create a PdfTrueTypeFont object
Dim font As New PdfTrueTypeFont(New Font("Arial", 50F), True)

' Set the watermark text
Dim text As String = "CONFIDENTIAL"

' Measure the text size
Dim textSize As SizeF = font.MeasureString(text)

' Calculate the values of two offset variables,
' which will be used to calculate the translation amount of the coordinate system
Dim offset1 As Single = CSng(textSize.Width * Math.Sqrt(2) / 4)
Dim offset2 As Single = CSng(textSize.Height * Math.Sqrt(2) / 4)

' Traverse all the pages in the document
For Each page As PdfPageBase In pdf.Pages
	' Set the page transparency
	page.Canvas.SetTransparency(0.8F)

	' Translate the coordinate system by specified coordinates
	page.Canvas.TranslateTransform(page.Canvas.Size.Width \ 2 - offset1 - offset2, page.Canvas.Size.Height \ 2 + offset1 - offset2)

	' Rotate the coordinate system 45 degrees counterclockwise
	page.Canvas.RotateTransform(-45)

	' Draw watermark text on the page
	page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0)
Next page

' Save the changes to another file
pdf.SaveToFile("TextWatermark.pdf")
$vbLabelText   $csharpLabel

Le filigranage de Spire.PDF nécessite le calcul manuel du positionnement et de la rotation en utilisant des transformations de système de coordonnées. Bien que cela offre un contrôle précis, cela nécessite une compréhension des concepts de programmation graphique.

IronPDF fournit une méthode facile pour ajouter des filigranes texte tout en vous donnant un contrôle total sur la position et le design du filigrane. L'utilisation par IronPDF de l'HTML et des CSS simplifie le processus si vous avez de l'expérience avec ces langages. L'approche de Spire.PDF est plus longue avec un processus plus manuel mais fournit tout de même un outil de filigranage solide avec un contrôle total sur le design et la position.

Comment pouvez-vous tamponner des images et du texte sur des PDFs ?

Exemple IronPDF :

using IronPdf;
using IronPdf.Editing;

// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;

// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing

' Instantiate Renderer
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create text stamper
Private textStamper As New TextStamper() With {
	.Text = "Text Stamper!",
	.FontFamily = "Bungee Spice",
	.UseGoogleFont = True,
	.FontSize = 30,
	.IsBold = True,
	.IsItalic = True,
	.VerticalAlignment = VerticalAlignment.Top
}

' Stamp the text stamper
pdf.ApplyStamp(textStamper)
pdf.SaveAs("stampText.pdf")

' Create image stamper
Dim imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}

' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)
pdf.SaveAs("stampImage.pdf")
$vbLabelText   $csharpLabel

L'API de tamponnage d'IronPDF utilise des classes dédiées pour différents types de tampons. Le TextStamper supporte les polices Google directement via la propriété UseGoogleFont, tandis que l'ImageStamper peut charger des images à partir des URLs ou des fichiers locaux. Les deux tamponneurs partagent des propriétés d'alignement communes pour un positionnement cohérent. Découvrez plus d'options de tamponnage incluant des tamponneurs HTML et l'intégration de code-barres.

Spire.PDF (Exemple de Tamponnage de Texte) :

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

// Assumes a PdfDocument is already loaded as `doc` object
PdfPageBase page = doc.Pages[0];
PdfGraphicsState state = page.Canvas.Save();

// Define font and brushes for different effects
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);
PdfSolidBrush brush1 = new PdfSolidBrush(Color.DeepSkyBlue);
PdfSolidBrush brush2 = new PdfSolidBrush(Color.CadetBlue);

// Apply transformations and draw strings with shadow and effect
page.Canvas.TranslateTransform(20, 200);
page.Canvas.ScaleTransform(1f, 0.6f);
page.Canvas.SkewTransform(-10, 0);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush1, 0, 0);
page.Canvas.SkewTransform(10, 0);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, 0);
page.Canvas.ScaleTransform(1f, -1f);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, -2 * 18);

// Restore graphics to previous state
page.Canvas.Restore(state);
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

// Assumes a PdfDocument is already loaded as `doc` object
PdfPageBase page = doc.Pages[0];
PdfGraphicsState state = page.Canvas.Save();

// Define font and brushes for different effects
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);
PdfSolidBrush brush1 = new PdfSolidBrush(Color.DeepSkyBlue);
PdfSolidBrush brush2 = new PdfSolidBrush(Color.CadetBlue);

// Apply transformations and draw strings with shadow and effect
page.Canvas.TranslateTransform(20, 200);
page.Canvas.ScaleTransform(1f, 0.6f);
page.Canvas.SkewTransform(-10, 0);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush1, 0, 0);
page.Canvas.SkewTransform(10, 0);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, 0);
page.Canvas.ScaleTransform(1f, -1f);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, -2 * 18);

// Restore graphics to previous state
page.Canvas.Restore(state);
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

' Assumes a PdfDocument is already loaded as `doc` object
Private page As PdfPageBase = doc.Pages(0)
Private state As PdfGraphicsState = page.Canvas.Save()

' Define font and brushes for different effects
Private font As New PdfFont(PdfFontFamily.Helvetica, 18F)
Private brush1 As New PdfSolidBrush(Color.DeepSkyBlue)
Private brush2 As New PdfSolidBrush(Color.CadetBlue)

' Apply transformations and draw strings with shadow and effect
page.Canvas.TranslateTransform(20, 200)
page.Canvas.ScaleTransform(1F, 0.6F)
page.Canvas.SkewTransform(-10, 0)
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush1, 0, 0)
page.Canvas.SkewTransform(10, 0)
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, 0)
page.Canvas.ScaleTransform(1F, -1F)
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, -2 * 18)

' Restore graphics to previous state
page.Canvas.Restore(state)
$vbLabelText   $csharpLabel

Spire.PDF nécessite une manipulation directe du canvas avec des transformations manuelles pour chaque effet. Créer des tampons complexes implique de comprendre la gestion de l'état graphique et les transformations de coordonnées.

L'outil de tamponnage de texte et d'image d'IronPDF est un puissant outil de tamponnage facile à utiliser qui suit une approche similaire à l'HTML et aux CSS lorsque vous appliquez le contenu tamponné. Bien que Spire.PDF offre également un outil de tamponnage textuel de base, il nécessite plus d'effort pour appliquer le texte tamponné à vos fichiers PDF.

Quelle bibliothèque traite mieux la conversion DOCX en PDF ?

Exemple IronPDF :

using IronPdf;

// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();

// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");

// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;

// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();

// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");

// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer As New DocxToPdfRenderer()

' Render from DOCX file
Private pdf As PdfDocument = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx")

' Save the PDF
pdf.SaveAs("pdfFromDocx.pdf")
$vbLabelText   $csharpLabel

IronPDF inclut une classe DocxToPdfRenderer dédiée qui gère la conversion DOCX de manière native. L'API est cohérente avec les autres classes de rendu d'IronPDF, nécessitant seulement deux lignes de code pour une conversion basique. Des options avancées pour la configuration de pages et le formatage sont disponibles via les propriétés du renderer. En savoir plus sur les fonctionnalités de conversion DOCX en PDF.

Spire.PDF Utilisation de Spire.Doc pour la conversion DOCX en PDF :

Spire.PDF lui-même ne peut pas convertir DOCX en PDF; cependant, la bibliothèque Spire.Doc peut être utilisée pour gérer cette conversion, puis vous pouvez utiliser Spire.PDF pour travailler sur le PDF résultant.

using Spire.Doc;

// Create a Document object
Document doc = new Document();

// Load a Word document
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.docx");

// Save the document to PDF
doc.SaveToFile("ToPDF.pdf", FileFormat.PDF);

// Dispose of resources
doc.Dispose();
using Spire.Doc;

// Create a Document object
Document doc = new Document();

// Load a Word document
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.docx");

// Save the document to PDF
doc.SaveToFile("ToPDF.pdf", FileFormat.PDF);

// Dispose of resources
doc.Dispose();
Imports Spire.Doc

' Create a Document object
Private doc As New Document()

' Load a Word document
doc.LoadFromFile("C:\Users\Administrator\Desktop\Sample.docx")

' Save the document to PDF
doc.SaveToFile("ToPDF.pdf", FileFormat.PDF)

' Dispose of resources
doc.Dispose()
$vbLabelText   $csharpLabel

Cette approche nécessite l'achat et la gestion d'une bibliothèque supplémentaire (Spire.Doc), augmentant à la fois le coût et la complexité.

IronPDF offre un support intégré pour la conversion directe de DOCX en PDF, ce qui signifie que vous économisez du temps sans avoir besoin de bibliothèques supplémentaires pour gérer cette tâche. Spire.PDF, d'autre part, ne peut pas directement gérer la conversion DOCX en PDF, nécessitant la bibliothèque Spire.Doc pour convertir les fichiers DOCX en PDF.

Que révèlent les métriques de performance ?

Basé sur des tests et des retours d'utilisation, voici comment les bibliothèques se comparent dans une utilisation réelle :

Performance de rendu

Pour les mises en page basiques, Spire.PDF est optimisé pour le contenu simple comme les tableaux statiques ou le texte basiquement stylisé, le rendant rapide et efficace pour ces cas d'utilisation. Cependant, lors du traitement d'HTML complexe contenant des fonctionnalités modernes CSS3, JavaScript, ou des mises en page responsive, le moteur basé sur Chrome d'IronPDF fournit des résultats plus précis au prix de temps de rendu légèrement plus élevés.

Utilisation mémoire

Spire.PDF utilise généralement moins de mémoire (80-120 Mo) comparé à IronPDF (150-200 Mo) en raison de son moteur de rendu plus simple. Cependant, cela s'accompagne d'une baisse de fidélité de rendu et de support fonctionnel. Pour les applications où la mémoire est critique et la complexité HTML est minimale, Spire.PDF peut être avantageux.

Support des threads et Async

IronPDF fournit un support async/await natif avec des méthodes telles que RenderHtmlAsPdfAsync(), le rendant adapté aux applications .NET modernes. Spire.PDF nécessite une gestion manuelle des threads avec des threads STA, ajoutant de la complexité aux applications multi-threadées.

Comment les modèles de tarification et de licence se comparent-ils ?

Tarification et licences d'IronPDF

IronPDF propose plusieurs niveaux et caractéristiques supplémentaires pour l'achat d'une licence. Les développeurs peuvent également acheter Iron Suite qui donne accès à l'ensemble des produits Iron Software pour le prix de deux. Si vous n'êtes pas prêt à acheter une licence, IronPDF propose un essai gratuit de 30 jours.

Tarification (à partir de 2025) :

  • Licences perpétuelles : Offre une gamme de licences perpétuelles selon la taille de votre équipe, vos besoins en projet et le nombre de sites. Chaque type de licence est accompagné d'un support par courrier électronique.
  • Licence Lite : Cette licence coûte $799 et prend en charge un développeur, un emplacement et un projet.
  • Licence Plus : Soutenant trois développeurs, trois emplacements et trois projets, c'est le prochain niveau après la licence lite et coûte $1,199. La licence Plus offre un support chat et un support par téléphone en plus de l'assistance par e-mail de base.
  • Licence Professionnelle : Cette licence est adaptée aux équipes plus grandes, soutenant dix développeurs, dix emplacements, et dix projets pour $2,399. Elle offre les mêmes canaux de support de contact que les niveaux précédents mais offre également un support par partage d'écran.
  • Redistribution sans redevances : La licence IronPDF offre également une couverture de redistribution sans redevances pour un supplément de $2,399
  • Support produit ininterrompu : IronPDF offre l'accès aux mises à jour continues du produit, aux améliorations des fonctionnalités de sécurité, et au support de leur équipe d'ingénierie pour soit 999$/an soit un achat unique de 1999$ pour une couverture de 5 ans.
  • Iron Suite : Pour $1,498, obtenez l'accès à tous les produits Iron Software y compris IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint, et IronWebScraper.

Tableau des prix IronPDF IronPDF offre des options de licences flexibles avec des licences perpétuelles et un support complet inclus

Tarification et Licence de Spire.PDF

Spire.PDF propose une gamme de licences selon vos besoins.

  • Version gratuite : Spire.PDF propose une version gratuite limitée à 10 pages PDF; au-delà de cela, vous devrez acheter une licence payante.
  • Abonnement Développeur : Tarifié soit à 999 $ soit à 1 199 $ par an selon le type de support dont vous avez besoin, cette option est destinée aux développeurs qui doivent construire des fonctionnalités relatives aux PDFs mais n'ont pas besoin de droits de distribution OEM.
  • Abonnement Développeur OEM : Coûte environ 2 549 $ - 4 248 $ par an selon le montant de support dont vous avez besoin, et inclut des mises à jour gratuites, un support premium, et la capacité de distribuer l'application aux utilisateurs finaux.
  • Site Petite Entreprise : Tarifié soit à 4 599 $ soit à 7 598 $ selon le support que vous voulez, ce niveau de licence supporte jusqu'à 10 développeurs sur jusqu'à 10 emplacements, mises à jour pour 1 an, et ressources techniques en ligne gratuites.
  • Abonnement Site OEM : Coûte 13 088 $ - 16 687 $ par an selon le type de support dont vous avez besoin et est destiné aux grandes entreprises qui doivent déployer des applications à plusieurs emplacements.

Quelle bibliothèque fournit la meilleure documentation et support ?

IronPDF

IronPDF excelle dans la fourniture d'une documentation et d'un support étendus :

  • Documentation complète : Documentation étendue et conviviale couvrant toutes les fonctionnalités.
  • Support 24/5 : Support actif des ingénieurs disponible.
  • Tutoriels Vidéo : Guides vidéo étape par étape disponibles sur YouTube.
  • Forum Communautaire : Communauté engagée pour un support supplémentaire.
  • Mises à jour régulières : Mises à jour mensuelles du produit pour assurer les dernières fonctionnalités et correctifs de sécurité.
  • Référence API PDF : Offre des références API pour que vous puissiez tirer le meilleur parti de ce que nos outils ont à offrir.

Pour plus d'informations, consultez la documentation étendue d'IronPDF, et visitez la chaîne YouTube Iron Software.

Documentation et Support de Spire.PDF pour .NET

  • Forums : Spire.PDF dispose d'un forum où les utilisateurs peuvent interagir entre eux, partager des conseils, des utilisations, et des problèmes rencontrés avec Spire.PDF.
  • Exemples de code : Spire.PDF propose des exemples de code sur leur site Web pour montrer comment utiliser le produit dans divers cas d'utilisation.
  • Bulletins d'information : Spire.PDF offre un bulletin d'information pour les développeurs pour les annonces de mises à jour et d'autres informations importantes.
  • Support : Le support se fait principalement via des forums, avec un support par e-mail/téléphone payant disponible à un coût supplémentaire selon la version de licence.

Quelles sont les expériences et retours communs des développeurs ?

Basé sur les retours de la communauté et l'utilisation réelle :

Retour sur IronPDF

Les développeurs louent constamment IronPDF pour fournir "une représentation plus complète et précise de la page HTML originale". La capacité de la bibliothèque à gérer des mises en page CSS3 complexes, des pages riches en JavaScript et des frameworks web modernes en fait un choix privilégié pour les applications nécessitant une génération de PDF haute fidélité.

Les points positifs communs incluent :

  • Conception d'API intuitive qui réduit le temps de développement
  • Excellente qualité de rendu correspondant à la sortie du navigateur
  • Documentation complète avec des exemples pratiques
  • Support technique réactif

Retour sur Spire.PDF

Les retours de la communauté indiquent que "Spire génère un fichier PDF qui n'est qu'une image. Certaines des css ne sont même pas correctes, comme l'ignorance des polices en gras". De plus, le support JavaScript reste une fonctionnalité prévue qui "serait si difficile qu'elle n'est pas complétée en peu de temps" selon les réponses de support officiel.

Les préoccupations courantes incluent :

  • Support limité des CSS3 et des normes web modernes
  • Absence de capacité d'exécution JavaScript
  • Exigences complexes de threading pour la conversion HTML
  • Besoins en bibliothèques supplémentaires pour certaines fonctionnalités

Quand devriez-vous choisir chaque bibliothèque ?

  • Le budget est une considération : Coût d'entrée inférieur et meilleure valeur pour les scénarios HTML en PDF

  • Votre HTML contient des CSS3 modernes, JavaScript ou des conceptions réactives
  • Vous avez besoin d'un rendu pixel-parfait correspondant à la sortie du navigateur
  • Le déploiement multiplateforme est requis (Linux, macOS, Docker)
  • Vous voulez un support complet inclus avec votre licence
  • Vous avez besoin de fonctionnalités intégrées comme la conversion DOCX sans bibliothèques supplémentaires
  • Votre équipe valorise le développement rapide avec un code minimal

Choisissez Spire.PDF lorsque :

  • Vos PDFs ne contiennent que du HTML basique avec un style simple
  • L'utilisation de la mémoire est une contrainte critique
  • Vous travaillez principalement dans des environnements Windows
  • Votre HTML ne nécessite pas l'exécution de JavaScript
  • Vous utilisez déjà d'autres produits Spire dans votre stack

Conclusion

En conclusion, IronPDF et Spire.PDF pour .NET sont deux outils capables de gérer des documents PDF dans des applications .NET. IronPDF excelle par sa facilité d'utilisation, sa compatibilité multiplateforme, et son support des normes web modernes, en faisant un choix de prédilection si vous cherchez à améliorer votre jeu en travaillant avec des documents PDF. Spire.PDF offre un ensemble de fonctionnalités complet mais peut nécessiter plus d'efforts pour les tâches complexes et manque de la précision de rendu que les applications web modernes exigent.

Pour les développeurs travaillant avec les technologies web contemporaines, nécessitant une conversion HTML en PDF précise, ou ayant besoin d'un support multiplateforme fiable, IronPDF présente une solution plus complète. Son moteur de rendu basé sur Chrome, son API intuitive et son support complet le rendent particulièrement adapté aux applications d'entreprise et aux scénarios complexes de génération de documents.

Vous pouvez essayer la version d'essai gratuite de 30 jours pour découvrir les fonctionnalités disponibles.

Veuillez noterSpire.PDF est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié, approuvé ou parrainé par Spire.PDF. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à des fins d'information uniquement et reflètent les informations disponibles publiquement au moment de la rédaction.

Questions Fréquemment Posées

Comment puis-je convertir HTML en PDF en C# ?

Vous pouvez utiliser la méthode RenderHtmlAsPdf d'IronPDF pour convertir des chaînes HTML en PDFs. Vous pouvez également convertir des fichiers HTML en PDFs en utilisant RenderHtmlFileAsPdf.

IronPDF prend-il en charge l'exécution de JavaScript lors de la conversion HTML en PDF?

Oui, IronPDF prend en charge l'exécution complète de JavaScript, ce qui le rend idéal pour convertir du contenu dynamique ou des mises en page dépendantes de JavaScript en PDF.

Quelles plateformes sont prises en charge par IronPDF pour la conversion en PDF?

IronPDF offre une prise en charge native sur plusieurs plateformes, y compris Windows, Linux, macOS, Docker, ainsi que les services cloud comme Azure et AWS.

Comment l'utilisation de la mémoire d'IronPDF se compare-t-elle à celle de Spire.PDF?

IronPDF utilise légèrement plus de mémoire, généralement entre 150-200 Mo, comparé aux 80-120 Mo de Spire.PDF, mais il offre une meilleure qualité de rendu et prend en charge les modèles async/await modernes.

IronPDF peut-il convertir directement des fichiers DOCX en PDF?

Oui, IronPDF inclut des capacités intégrées de conversion DOCX en PDF via sa classe DocxToPdfRenderer sans nécessiter de bibliothèques supplémentaires.

Quelles sont les options de licence pour IronPDF?

IronPDF propose des licences perpétuelles à partir de 749 $ pour les développeurs individuels, incluant toutes les fonctionnalités et support. Il propose également un bundle Iron Suite avec 9 produits pour 1 498 $.

Quel type de support IronPDF offre-t-il ?

IronPDF fournit un support technique 24/5 par e-mail, chat, téléphone et partage d'écran avec toutes les licences, assurant une assistance complète.

Comment puis-je assurer la sécurité et le cryptage des PDF avec IronPDF?

IronPDF prend en charge l'AES-256 et la protection par mot de passe grâce à sa classe SecuritySettings, permettant un contrôle granulaire des autorisations PDF.

IronPDF est-il adapté pour le rendu de pages web complexes avec du CSS moderne?

Oui, IronPDF utilise un moteur de rendu complet basé sur Chrome qui supporte CSS3, flexbox, grilles de mise en page, polices web, et JavaScript, ce qui le rend bien adapté aux pages web complexes.

Quelles sont les limitations de la version gratuite d'IronPDF?

IronPDF propose un essai gratuit de 30 jours entièrement fonctionnel sans limites de pages, offrant une ample opportunité de tester toutes ses fonctionnalités avant de s'engager à l'achat.

Comment IronPDF garantit-il un rendu HTML de haute qualité?

IronPDF offre un rendu précis au pixel près qui correspond à la sortie du navigateur Chrome, garantissant une haute fidélité et une représentation précise du contenu HTML original.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur technique chez Iron Software et un ingénieur visionnaire pionnier dans la technologie des PDF en C#. En tant que développeur original derrière la base de code principale d'Iron Software, il a façonné l'architecture du produit de l'entreprise depuis sa création, ...

Lire la suite