Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

Tutoriel et comparaison du visualiseur PDF Accusoft Prizmdoc

Accusoft PDF Viewer offre des fonctionnalités HTML vers PDF et d'autres tâches d'édition et de manipulation de PDF pour .NET. IronPDF accomplit également ces mêmes tâches de manière programmatique, ce qui vous permet d'économiser du temps et des efforts dans vos projets C#.

Comparons les deux et trouvons ce qui convient le mieux à votre projet.

Comparez IronPDF à Accusoft PDF Viewer

  • Convertir HTML en PDF
  • Définir l'en-tête et le pied de page des PDF
  • Convertir un PDF en fichier image
  • Comparez les licences, les options d'essai gratuit, etc

Vue d'ensemble

À propos d'IronPDF

IronPDF est une bibliothèque C# HTML vers PDF. Il permet aux ingénieurs d'effectuer des tâches telles que la création de fichiers PDF à partir de sources telles que des chaînes HTML, des pages Web, des URL, ainsi que la définition de propriétés telles que le filigrane, le signet, l'en-tête et le pied de page, etc. Il est également possible de fusionner plusieurs fichiers PDF en un seul, ou de convertir des pages PDF en images, ou vice versa.

Le logiciel est gratuit pour le développement et offre une période d'essai de 30 jours pour le déploiement de votre projet.

You can download a file project from this link.

À propos de Accusoft PrizmDoc Viewer

PrizmDoc Viewer est une API REST utilisée pour travailler avec des fichiers PDF et les convertir dans d'autres formats à distance. PrizmDoc peut convertir plus de 100 formats différents de fichiers en PDF et de PDF en PNG, JPG, TIFF et SVG. Elle peut également être utilisée pour inclure différents types d'options de signature électronique dans les applications.

Tableau de comparaison

IronPDF PrizmDoc Viewer
Travailler avec des fichiers PDF de manière programmatique. Travailler avec des fichiers PDF de manière programmatique.
Prend en charge .NET Core avec Windows, Mac ou Linux. Prend en charge .NET Core en utilisant Windows, Mac ou Linux.
Travaille localement Envoie des documents à un serveur distant.
Travailler avec ou sans utiliser la programmation asynchrone. Must use Asynchronous Programming using `System.Threading.Tasks`.
Travailler facilement hors ligne une fois qu'on a installé IronPDF dans notre système. Doit se connecter à l'internet pour envoyer la demande au serveur PrizmDoc Viewer (hébergé dans le nuage ou hébergé par l'utilisateur).
Fournit de nombreuses fonctions prédéfinies. Fournit quelques fonctions prédéfinies.
La traduction nécessite souvent un minimum de lignes de code. La traduction nécessite souvent de nombreuses lignes de code.
Conversions Illimité License par projet dans chaque plan de licence. Nombre limité de transactions dans chaque plan de licence hébergé dans le nuage.
Gratuit pour le développement sans limite de temps. Seulement 300 transactions avec essai.

Installons les deux et comparons le code.


Étape 1 : Installation

1. Installer la bibliothèque IronPDF

Il existe deux façons d'installer IronPDF dans votre projet, sans différence avec celle que vous adoptez.

1.1. Téléchargez la DLL IronPDF

Téléchargez IronPDF.dll et ajoutez sa référence à votre projet. Après cela, vous pouvez facilement accéder à l'espace de noms IronPdf de la manière suivante :

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Désormais, vous pouvez facilement accéder aux fonctions et classes fournies d'IronPDF.

1.2 Installation via le gestionnaire de paquets NuGet

  • Console du gestionnaire de paquets :

    Si vous utilisez la console du gestionnaire de paquets, exécutez la commande suivante :

    Install-Package IronPdf
  • Gérer les paquets pour la solution :

    Si vous utilisez l'interface graphique de NuGet Package Manager, parcourez IronPDF dans la barre de recherche et installez-le.


Installer le PrizmDoc Viewer d'Accusoft

PrizmDoc Viewer se compose de deux parties, l'une côté serveur appelée PrizmDoc Server qui se comporte comme une API Restful. L'autre est notre projet, qui nous permet d'accéder à l'API et d'obtenir la réponse.

Accéder au serveur PrizmDoc

Comme son nom l'indique, il s'agit d'une application côté serveur qui reçoit les informations de base du document en tant que demande (entrée) et convertit le document en fichier PDF, puis envoie le fichier PDF converti au client en tant que réponse (sortie). Il s'agit du cœur technique du produit, qui est un moteur de traitement et de conversion de documents. Nous pouvons l'utiliser de deux manières différentes, sans que cela ne change quoi que ce soit, car les deux ont la même structure et les mêmes techniques de programmation :

  1. Self-Hosted:

    Pour cette option, vous devez organiser votre serveur, et vous pouvez Télécharger PrizmDoc Server puis l'installer. En savoir plus sur l'installation de PrizmDoc Server sur Windows.

    Note: Il faut au moins 32 Go de mémoire vive et un processeur à quatre cœurs, sinon vous risquez d'avoir une mauvaise expérience.

  2. Hébergé sur Cloud:

    Il s'agit d'un service de PrizmDoc Viewer basé sur le cloud et vous n'avez pas besoin d'organiser votre serveur. Nous l'utiliserons pour notre comparaison. Pour ce faire, créez votre compte et la page d'accueil s'ouvrira. Vous pouvez copier la clé API à partir du menu clé API, nous verrons plus tard comment l'utiliser.

Tout d'abord, nous verrons la structure de base pour savoir comment travailler avec PrizmDoc Viewer pour convertir les documents en un fichier PDF, et nous interagirons directement avec Accusoft server en utilisant WebClient() dans l'application console C#.

Note: L'exemple suivant sert uniquement à comprendre comment PrizmDoc gère les fichiers PDF. Il est un peu long, donc pas de problème si vous sautez cet exemple et passez directement à la comparaison.

Structure de travail d'Accusoft

Dans cet exemple, nous allons convertir le fichier myWebpage.html en sample.pdf.

Note: Nous devons installer la bibliothèque Newtonsoft.Json et ajouter sa référence dans le projet.

Tout d'abord, ajoutez les bibliothèques suivantes à votre projet :

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager
Imports System
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Threading.Tasks
Imports Newtonsoft.Json.Linq ' Install Newtonsoft.Json via NuGet Package Manager
$vbLabelText   $csharpLabel

Créez ensuite une variable publique Clé API Accusoft et collez-y votre clé API comme suit :

static string ApiKey = "Your-API-KEY";
static string ApiKey = "Your-API-KEY";
Private Shared ApiKey As String = "Your-API-KEY"
$vbLabelText   $csharpLabel

Il y a 3 étapes pour traiter les fichiers PDF avec PrizmDoc Viewer :

  1. Téléchargez un fichier sur le serveur PrizmDoc.
  2. Convertissez le fichier téléchargé.
  3. Télécharger le fichier converti depuis le serveur PrizmDoc.

Nous allons donc créer une fonction distincte pour chaque étape.

static void Main(string[] args)
{
    //---Upload file to Server---
    JObject uploadResults = UploadToServer("myWebpage.html").Result;
    string fileID = (string)uploadResults.SelectToken("fileId");
    string affinityToken = (string)uploadResults.SelectToken("affinityToken");

    //---Convert the uploaded file to PDF---
    JObject convertResults = Convert(affinityToken, fileID).Result;
    string processId = (string)convertResults.SelectToken("processId");
    affinityToken = (string)convertResults.SelectToken("affinityToken");

    //---Check the status that conversion is completed---
    JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result;
    string convertStatus = (string)convertStatusResults.SelectToken("state");

    //---Continuously checking whether conversion completed---
    while (!(convertStatus.Equals("complete")))
    {
        System.Threading.Thread.Sleep(30000);
        convertStatusResults = ConvertStatus(processId, affinityToken).Result;
        convertStatus = (string)convertStatusResults.SelectToken("state");
    }

    //---Download the converted file from server---
    string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId");
    DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait();

    Console.WriteLine("PDF file created successfully...!");
    Console.ReadKey();
}
static void Main(string[] args)
{
    //---Upload file to Server---
    JObject uploadResults = UploadToServer("myWebpage.html").Result;
    string fileID = (string)uploadResults.SelectToken("fileId");
    string affinityToken = (string)uploadResults.SelectToken("affinityToken");

    //---Convert the uploaded file to PDF---
    JObject convertResults = Convert(affinityToken, fileID).Result;
    string processId = (string)convertResults.SelectToken("processId");
    affinityToken = (string)convertResults.SelectToken("affinityToken");

    //---Check the status that conversion is completed---
    JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result;
    string convertStatus = (string)convertStatusResults.SelectToken("state");

    //---Continuously checking whether conversion completed---
    while (!(convertStatus.Equals("complete")))
    {
        System.Threading.Thread.Sleep(30000);
        convertStatusResults = ConvertStatus(processId, affinityToken).Result;
        convertStatus = (string)convertStatusResults.SelectToken("state");
    }

    //---Download the converted file from server---
    string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId");
    DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait();

    Console.WriteLine("PDF file created successfully...!");
    Console.ReadKey();
}
Shared Sub Main(ByVal args() As String)
	'---Upload file to Server---
	Dim uploadResults As JObject = UploadToServer("myWebpage.html").Result
	Dim fileID As String = CStr(uploadResults.SelectToken("fileId"))
	Dim affinityToken As String = CStr(uploadResults.SelectToken("affinityToken"))

	'---Convert the uploaded file to PDF---
	Dim convertResults As JObject = Convert(affinityToken, fileID).Result
	Dim processId As String = CStr(convertResults.SelectToken("processId"))
	affinityToken = CStr(convertResults.SelectToken("affinityToken"))

	'---Check the status that conversion is completed---
	Dim convertStatusResults As JObject = ConvertStatus(processId, affinityToken).Result
	Dim convertStatus As String = CStr(convertStatusResults.SelectToken("state"))

	'---Continuously checking whether conversion completed---
	Do While Not (convertStatus.Equals("complete"))
		System.Threading.Thread.Sleep(30000)
		convertStatusResults = ConvertStatus(processId, affinityToken).Result
		convertStatus = CStr(convertStatusResults.SelectToken("state"))
	Loop

	'---Download the converted file from server---
	Dim newFileID As String = CStr(convertStatusResults.SelectToken("output.results[0].fileId"))
	DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait()

	Console.WriteLine("PDF file created successfully...!")
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

1. Télécharger le fichier sur le serveur:

public static async Task<JObject> UploadToServer(string fileToUpload)
{
    FileInfo input = new FileInfo(fileToUpload);
    if (input == null)
    {
        throw new ArgumentException("Missing parameter input", nameof(input));
    }
    var fileName = input.Name;
    var endpoint = new Uri("https://api.accusoft.com/PCCIS/V1/WorkFile");
    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Content-Type", "application/octet-stream");
        using (var reader = new BinaryReader(input.OpenRead()))
        {
            var data = reader.ReadBytes((int)reader.BaseStream.Length);
            var results = await client.UploadDataTaskAsync(endpoint, "POST", data);
            string getResult = Encoding.ASCII.GetString(results);
            return JObject.Parse(getResult);
        }
    }
}
public static async Task<JObject> UploadToServer(string fileToUpload)
{
    FileInfo input = new FileInfo(fileToUpload);
    if (input == null)
    {
        throw new ArgumentException("Missing parameter input", nameof(input));
    }
    var fileName = input.Name;
    var endpoint = new Uri("https://api.accusoft.com/PCCIS/V1/WorkFile");
    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Content-Type", "application/octet-stream");
        using (var reader = new BinaryReader(input.OpenRead()))
        {
            var data = reader.ReadBytes((int)reader.BaseStream.Length);
            var results = await client.UploadDataTaskAsync(endpoint, "POST", data);
            string getResult = Encoding.ASCII.GetString(results);
            return JObject.Parse(getResult);
        }
    }
}
Public Shared Async Function UploadToServer(ByVal fileToUpload As String) As Task(Of JObject)
	Dim input As New FileInfo(fileToUpload)
	If input Is Nothing Then
		Throw New ArgumentException("Missing parameter input", NameOf(input))
	End If
	Dim fileName = input.Name
	Dim endpoint = New Uri("https://api.accusoft.com/PCCIS/V1/WorkFile")
	Using client = New WebClient()
		client.Headers.Add("acs-api-key", ApiKey)
		client.Headers.Add("Content-Type", "application/octet-stream")
		Using reader = New BinaryReader(input.OpenRead())
			Dim data = reader.ReadBytes(CInt(reader.BaseStream.Length))
			Dim results = Await client.UploadDataTaskAsync(endpoint, "POST", data)
			Dim getResult As String = Encoding.ASCII.GetString(results)
			Return JObject.Parse(getResult)
		End Using
	End Using
End Function
$vbLabelText   $csharpLabel

2. convertir le fichier téléchargé en PDF:

public static async Task<JObject> Convert(string affinityToken, string fileID)
{
    var endpoint = new Uri("https://api.accusoft.com/v2/contentConverters");
    using (var client = new WebClient())
    {
        client.Headers.Add("Content-Type", "application/json");
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        JObject myJson =
            new JObject(
                new JProperty("input",
                    new JObject(
                        new JProperty("sources",
                            new JArray(
                                new JObject(
                                    new JProperty("fileId", fileID)
                                )
                            )
                        ),
                        new JProperty("dest",
                            new JObject(
                                new JProperty("format", "pdf")
                            )
                        )
                    )
                )
            );
        string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString());
        return JObject.Parse(results);
    }
}
public static async Task<JObject> Convert(string affinityToken, string fileID)
{
    var endpoint = new Uri("https://api.accusoft.com/v2/contentConverters");
    using (var client = new WebClient())
    {
        client.Headers.Add("Content-Type", "application/json");
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        JObject myJson =
            new JObject(
                new JProperty("input",
                    new JObject(
                        new JProperty("sources",
                            new JArray(
                                new JObject(
                                    new JProperty("fileId", fileID)
                                )
                            )
                        ),
                        new JProperty("dest",
                            new JObject(
                                new JProperty("format", "pdf")
                            )
                        )
                    )
                )
            );
        string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString());
        return JObject.Parse(results);
    }
}
Public Shared Async Function Convert(ByVal affinityToken As String, ByVal fileID As String) As Task(Of JObject)
	Dim endpoint = New Uri("https://api.accusoft.com/v2/contentConverters")
	Using client = New WebClient()
		client.Headers.Add("Content-Type", "application/json")
		client.Headers.Add("acs-api-key", ApiKey)
		client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
		Dim myJson As New JObject(New JProperty("input", New JObject(New JProperty("sources", New JArray(New JObject(New JProperty("fileId", fileID)))), New JProperty("dest", New JObject(New JProperty("format", "pdf"))))))
		Dim results As String = Await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString())
		Return JObject.Parse(results)
	End Using
End Function
$vbLabelText   $csharpLabel

Le JSON suivant est la valeur résultante de l'objet myJson :

{
  "input": {
    "sources": 
    [
      {"fileId": "Auto Generated FileId Value"}
    ],
    "dest": {
      "format": "pdf"
    }
  }
}

Vérifier si la conversion est terminée ou non

public static async Task<JObject> ConvertStatus(string processId, string affinityToken)
{
    string endpoint = "https://api.accusoft.com/v2/contentConverters/" + processId;
    using (var client = new WebClient())
    {
        client.BaseAddress = endpoint;
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        string results = await client.DownloadStringTaskAsync(endpoint);
        return JObject.Parse(results);
    }
}
public static async Task<JObject> ConvertStatus(string processId, string affinityToken)
{
    string endpoint = "https://api.accusoft.com/v2/contentConverters/" + processId;
    using (var client = new WebClient())
    {
        client.BaseAddress = endpoint;
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        string results = await client.DownloadStringTaskAsync(endpoint);
        return JObject.Parse(results);
    }
}
Public Shared Async Function ConvertStatus(ByVal processId As String, ByVal affinityToken As String) As Task(Of JObject)
	Dim endpoint As String = "https://api.accusoft.com/v2/contentConverters/" & processId
	Using client = New WebClient()
		client.BaseAddress = endpoint
		client.Headers.Add("acs-api-key", ApiKey)
		client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
		Dim results As String = Await client.DownloadStringTaskAsync(endpoint)
		Return JObject.Parse(results)
	End Using
End Function
$vbLabelText   $csharpLabel

<Téléchargez le fichier converti à partir du serveur

public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile)
{
    var endpoint = new Uri("https://api.accusoft.com/PCCIS/V1/WorkFile/" + fileId);

    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        FileInfo output = new FileInfo(outfile);

        using (var writeStream = output.Create())
        {
            var results = await client.DownloadDataTaskAsync(endpoint);
            await writeStream.WriteAsync(results, 0, results.Length);
        }
    }
}
public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile)
{
    var endpoint = new Uri("https://api.accusoft.com/PCCIS/V1/WorkFile/" + fileId);

    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        FileInfo output = new FileInfo(outfile);

        using (var writeStream = output.Create())
        {
            var results = await client.DownloadDataTaskAsync(endpoint);
            await writeStream.WriteAsync(results, 0, results.Length);
        }
    }
}
Public Shared Async Function DownloadFromServer(ByVal affinityToken As String, ByVal fileId As String, ByVal outfile As String) As Task
	Dim endpoint = New Uri("https://api.accusoft.com/PCCIS/V1/WorkFile/" & fileId)

	Using client = New WebClient()
		client.Headers.Add("acs-api-key", ApiKey)
		client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
		Dim output As New FileInfo(outfile)

		Using writeStream = output.Create()
			Dim results = Await client.DownloadDataTaskAsync(endpoint)
			Await writeStream.WriteAsync(results, 0, results.Length)
		End Using
	End Using
End Function
$vbLabelText   $csharpLabel

L'exemple ci-dessus demande beaucoup d'efforts ! Pour minimiser la charge de travail, Accusoft a introduit une bibliothèque .NET nommée Accusoft.PrizmDocServerSDK, il s'agit d'une enveloppe autour de l'API REST du serveur PrizmDoc. Voyons comment installer et utiliser cette bibliothèque dans notre projet .NET

Installer le Accusoft.PrizmDocServerSDK

Il existe deux façons d'installer le wrapper.

  • Console du gestionnaire de paquets :

    Si vous utilisez la console du gestionnaire de paquets, exécutez la commande suivante :

    Install-Package Accusoft.PrizmDocServerSDK
    Install-Package Accusoft.PrizmDocServerSDK
    SHELL
  • Gérer les paquets pour la solution :

    Si vous utilisez l'interface graphique du gestionnaire de paquets NuGet, parcourez Accusoft.PrizmDocServerSDK dans la barre de recherche et installez-le.

Maintenant, vous pouvez facilement accéder à l'espace de noms Accusoft.PrizmDocServer et l'utiliser en accédant :

using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer;
Imports Accusoft.PrizmDocServer
$vbLabelText   $csharpLabel

Tutoriels pratiques

2. Comparaison du code de la visionneuse IronPDF vs PrizmDoc

Après avoir lu l'introduction et l'installation des deux composants, il est maintenant temps de travailler avec les deux composants. Pour ce faire, nous prendrons quelques cas d'utilisation et les mettrons en œuvre à l'aide des deux composants. Nous espérons que cela vous permettra de comprendre facilement les deux structures de programmation et de déterminer celle qui convient le mieux à votre projet.


3. convertir HTML en fichier PDF

Dans notre première comparaison, prenons le cas d'utilisation d'une page web nommée myWebPage.html et souhaitons créer un fichier PDF à partir de celle-ci, puis l'enregistrer à l'emplacement cible.

3.1. IronPDF HTML vers PDF

using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Render HTML file to PDF
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Render HTML file to PDF
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim converter = New ChromePdfRenderer()
	' Render HTML file to PDF
	Dim PDF = converter.RenderHTMLFileAsPdf("myWebPage.html")
	' Save to target location
	PDF.SaveAs("sample.pdf")
End Sub
$vbLabelText   $csharpLabel

Le code ci-dessus crée un fichier sample.pdf et l'enregistre dans le dossier bin>debug du projet.

Vous pouvez également spécifier n'importe quel chemin d'accès comme celui-ci : PDF.SaveAs("E:/sample.pdf");

En savoir plus sur la façon de travailler avec IronPDF pour traiter les fichiers PDF.

Nous allons maintenant effectuer la même tâche en utilisant le PrizmDoc Viewer, afin de faciliter notre comparaison.

3.2. PrizmDoc Viewer HTML vers PDF

Dans l'installation de PrizmDoc Viewer, nous avons déjà discuté de la façon d'obtenir la Accusoft API Key, et nous allons maintenant voir comment l'utiliser.

Tout d'abord, nous envoyons une requête au serveur PrizmDoc et obtenons une réponse de sa part. Ce processus prendra un certain temps, c'est pourquoi nous devons utiliser la programmation asynchrone.

Note: Assurez-vous que votre système est connecté à Internet lorsque vous créez des fichiers PDF à l'aide des services Cloud de PrizmDoc Viewer.

using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ChromePdfRenderer().GetAwaiter().GetResult();
}

private static async Task ChromePdfRenderer()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");
    // Specify HTML file and convert it to a PDF.
    ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html");
    // Save PDF file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ChromePdfRenderer().GetAwaiter().GetResult();
}

private static async Task ChromePdfRenderer()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");
    // Specify HTML file and convert it to a PDF.
    ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html");
    // Save PDF file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Shared Sub Main(ByVal args() As String)
	ChromePdfRenderer().GetAwaiter().GetResult()
End Sub

Private Shared Async Function ChromePdfRenderer() As Task
	' Instantiate PrizmDocServerClient object
	Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY")
	' Specify HTML file and convert it to a PDF.
	Dim result As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("myWebPage.html")
	' Save PDF file to the target location
	Await result.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
$vbLabelText   $csharpLabel

En savoir plus sur la façon de travailler avec PrizmDoc Viewer.

3.3. Comparaison du code HTML avec le code PDF

Nous voyons dans ces exemples qu'IronPDF est une approche plus simple pour créer des fichiers PDF et qu'elle ne demande pas autant de temps.


4. image vers PDF

Dans cette comparaison, nous prenons un cas d'utilisation dans lequel nous devons créer un fichier PDF à l'aide de Image, et qui existe dans notre dossier debug du projet. Commençons par IronPDF.

4.1. IronPDF Image vers PDF

using IronPdf;

static void Main(string[] args)
{
    // Specify the image to be converted
    using var converted = ImageToPdfConverter.ImageToPdf("google.png");
    // Save PDF file to the target location
    converted.SaveAs("sample.pdf");
}
using IronPdf;

static void Main(string[] args)
{
    // Specify the image to be converted
    using var converted = ImageToPdfConverter.ImageToPdf("google.png");
    // Save PDF file to the target location
    converted.SaveAs("sample.pdf");
}
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Specify the image to be converted
	Dim converted = ImageToPdfConverter.ImageToPdf("google.png")
	' Save PDF file to the target location
	converted.SaveAs("sample.pdf")
End Sub
$vbLabelText   $csharpLabel

Output:

Cette capture d'écran représente un fichier PDF nouvellement créé sample.pdf à l'aide du code ci-dessus :

Iron 2 related to 4.1. IronPDF Image vers PDF

Nous pouvons voir à quel point il est facile de créer un fichier PDF à partir d'une image à l'aide d'IronPDF. Maintenant, nous allons effectuer la même tâche en utilisant PrizmDoc Viewer et voir le fichier PDF généré.

4.2. PrizmDoc Viewer - Image vers PDF

using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ImageToPDF().GetAwaiter().GetResult();
}

private static async Task ImageToPDF()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");
    // Specify the image to be converted
    ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
    // Save PDF file to the target location
    await results.RemoteWorkFile.SaveAsync("sample.pdf");
}
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ImageToPDF().GetAwaiter().GetResult();
}

private static async Task ImageToPDF()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");
    // Specify the image to be converted
    ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
    // Save PDF file to the target location
    await results.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Shared Sub Main(ByVal args() As String)
	ImageToPDF().GetAwaiter().GetResult()
End Sub

Private Shared Async Function ImageToPDF() As Task
	' Instantiate PrizmDocServerClient object
	Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY")
	' Specify the image to be converted
	Dim results As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("google.png")
	' Save PDF file to the target location
	Await results.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
$vbLabelText   $csharpLabel

Sortie: Cette capture d'écran est celle d'un fichier PDF nouvellement créé sample.pdf à partir du code ci-dessus :

Prizm 2 related to 4.2. PrizmDoc Viewer - Image vers PDF

4.3. Comparaison du code de conversion d'images en PDF

Nous pouvons constater qu'il nous suffit d'écrire 2 simples lignes de code à l'aide d'IronPDF. D'autre part, en utilisant le serveur PrizmDoc, nous devons écrire de nombreuses lignes de code avec la programmation asynchrone. La sortie d'IronPDF fournit également automatiquement un document pleine page utilisable.


5. Fusionner des fichiers PDF

Dans cette comparaison, supposons que nous ayons trois fichiers PDF nommés A.pdf, B.pdf, et C.pdf. Nous voulons les fusionner en un seul fichier PDF, et nous pouvons effectuer cette tâche à l'aide des deux composants. Dans un premier temps, nous verrons comment réaliser cette tâche à l'aide d'IronPDF.

5.1. IronPDF fusionne des fichiers PDF

using IronPdf;
using System.Collections.Generic;

static void Main(string[] args)
{
    // Create rendering converter  
    var Renderer = new IronPdf.ChromePdfRenderer();
    // Create a list of pdf files
    var PDFs = new List<PdfDocument>();
    PDFs.Add(PdfDocument.FromFile("A.pdf"));
    PDFs.Add(PdfDocument.FromFile("B.pdf"));
    PDFs.Add(PdfDocument.FromFile("C.pdf"));
    // Merge the list of pdf file
    using PdfDocument PDF = PdfDocument.Merge(PDFs);
    // Save merged file to the target location
    PDF.SaveAs("sample.pdf");

    foreach(var pdf in PDFs)
    {
        pdf.Dispose();
    }
}
using IronPdf;
using System.Collections.Generic;

static void Main(string[] args)
{
    // Create rendering converter  
    var Renderer = new IronPdf.ChromePdfRenderer();
    // Create a list of pdf files
    var PDFs = new List<PdfDocument>();
    PDFs.Add(PdfDocument.FromFile("A.pdf"));
    PDFs.Add(PdfDocument.FromFile("B.pdf"));
    PDFs.Add(PdfDocument.FromFile("C.pdf"));
    // Merge the list of pdf file
    using PdfDocument PDF = PdfDocument.Merge(PDFs);
    // Save merged file to the target location
    PDF.SaveAs("sample.pdf");

    foreach(var pdf in PDFs)
    {
        pdf.Dispose();
    }
}
Imports IronPdf
Imports System.Collections.Generic

Shared Sub Main(ByVal args() As String)
	' Create rendering converter  
	Dim Renderer = New IronPdf.ChromePdfRenderer()
	' Create a list of pdf files
	Dim PDFs = New List(Of PdfDocument)()
	PDFs.Add(PdfDocument.FromFile("A.pdf"))
	PDFs.Add(PdfDocument.FromFile("B.pdf"))
	PDFs.Add(PdfDocument.FromFile("C.pdf"))
	' Merge the list of pdf file
	Using PDF As PdfDocument = PdfDocument.Merge(PDFs)
		' Save merged file to the target location
		PDF.SaveAs("sample.pdf")
	
'INSTANT VB NOTE: The variable pdf was renamed since Visual Basic will not allow local variables with the same name as parameters or other local variables:
		For Each .pdf_Conflict In PDFs
			.pdf_Conflict.Dispose()
		Next pdf_Conflict
	End Using
End Sub
$vbLabelText   $csharpLabel

Le code ci-dessus créera un fichier sample.pdf, qui est la combinaison de A.pdf, B.pdf et C.pdf.

Nous allons maintenant effectuer la même tâche en utilisant PrizmDoc Viewer.

5.2. PrizmDoc Viewer Fusionner des fichiers PDF

using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfMerge().GetAwaiter().GetResult();
}

private static async Task PdfMerge()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");
    // Pass the list of pdf files to PrizmDoc Server
    ConversionResult result = await prizmDocServer.CombineToPdfAsync(
        new []
        {
            new ConversionSourceDocument("A.pdf"),
            new ConversionSourceDocument("B.pdf"),
            new ConversionSourceDocument("C.pdf"),
        });
    // Save merged file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfMerge().GetAwaiter().GetResult();
}

private static async Task PdfMerge()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");
    // Pass the list of pdf files to PrizmDoc Server
    ConversionResult result = await prizmDocServer.CombineToPdfAsync(
        new []
        {
            new ConversionSourceDocument("A.pdf"),
            new ConversionSourceDocument("B.pdf"),
            new ConversionSourceDocument("C.pdf"),
        });
    // Save merged file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports System.Threading.Tasks
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Shared Sub Main(ByVal args() As String)
	PdfMerge().GetAwaiter().GetResult()
End Sub

Private Shared Async Function PdfMerge() As Task
	' Instantiate PrizmDocServerClient object
	Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY")
	' Pass the list of pdf files to PrizmDoc Server
	Dim result As ConversionResult = Await prizmDocServer.CombineToPdfAsync( {
		New ConversionSourceDocument("A.pdf"),
		New ConversionSourceDocument("B.pdf"),
		New ConversionSourceDocument("C.pdf")
	})
	' Save merged file to the target location
	Await result.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
$vbLabelText   $csharpLabel

Le code ci-dessus créera également un fichier sample.pdf, qui est la combinaison des fichiers A.pdf, B.pdf et C.pdf.


6 En-tête et pied de page d'un PDF

Dans cette comparaison, supposons que nous ayons une simple page web nommée myWebPage.html qui a le HTML et le CSS suivants :

<html>
<head>
    <style>
        li {
            font-size: x-large;
            color: rgba(156, 89, 13, 0.897);
            list-style: square;
        }
    </style>
</head>
<body>
    <h1 style="text-align: center;">Hello World..!</h1>
    <h1>Main Menu</h1>
    <ul>
        <li>SubMenu 1</li>
        <li>SubMenu 2</li>
        <li>SubMenu 3</li>
        <li>SubMenu 4</li>
        <li>SubMenu 5</li>
    </ul>
</body>
</html>
<html>
<head>
    <style>
        li {
            font-size: x-large;
            color: rgba(156, 89, 13, 0.897);
            list-style: square;
        }
    </style>
</head>
<body>
    <h1 style="text-align: center;">Hello World..!</h1>
    <h1>Main Menu</h1>
    <ul>
        <li>SubMenu 1</li>
        <li>SubMenu 2</li>
        <li>SubMenu 3</li>
        <li>SubMenu 4</li>
        <li>SubMenu 5</li>
    </ul>
</body>
</html>
HTML

Nous voulons convertir cette page Web en fichier PDF, en définissant les propriétés suivantes pour l'en-tête et le pied de page :

  • Page Title sur le côté gauche de l'en-tête,
  • DateTime sur le côté droit de l'en-tête
  • Page Nombre total de pages sur le côté droit du pied de page.

Dans un premier temps, nous verrons comment travailler avec IronPDF pour définir l'en-tête et le pied de page.

6.1. En-tête et pied de page de PDF IronPdf

Pour traiter l'en-tête et le pied de page d'un fichier PDF, IronPDF fournit une propriété sur la classe ChromePdfRenderer nommée RenderingOptions qui peut être utilisée comme suit :

  • Pour l'en-tête:

    ChromePdfRenderer_Obj.RenderingOptions.TextHeader = new TextHeaderFooter();
    ChromePdfRenderer_Obj.RenderingOptions.TextHeader = new TextHeaderFooter();
    ChromePdfRenderer_Obj.RenderingOptions.TextHeader = New TextHeaderFooter()
    $vbLabelText   $csharpLabel
  • Pour le pied de page:

    ChromePdfRenderer_Obj.RenderingOptions.TextFooter = new TextHeaderFooter();
    ChromePdfRenderer_Obj.RenderingOptions.TextFooter = new TextHeaderFooter();
    ChromePdfRenderer_Obj.RenderingOptions.TextFooter = New TextHeaderFooter()
    $vbLabelText   $csharpLabel

Nous pouvons définir les propriétés suivantes lors de l'initialisation de TextHeaderFooter() :

  • CenterText pour imprimer le texte au centre de l'en-tête ou du pied de page.
  • LeftText pour imprimer le texte à gauche de l'en-tête ou du pied de page.
  • RightText pour imprimer le texte à droite de l'en-tête ou du pied de page.
  • DrawDividerLine il dessine une ligne qui sépare le contenu de la page de l'en-tête ou du pied de page.
  • FontFamily pour spécifier la famille de police de l'en-tête ou du pied de page.
  • FontSize pour spécifier la taille de la police de l'en-tête ou du pied de page.
  • Spacing il ajuste l'espace entre le contenu de la page et l'en-tête ou le pied de page.

Certains attributs prédéfinis sont très utiles pour définir le contenu de l'en-tête ou du pied de page. Elle peut être écrite entre crochets { } comme suit :

  • {page} il imprime le numéro de la page actuelle dans l'en-tête ou le pied de page.
  • {total-pages} il imprime le nombre total de pages dans l'en-tête ou le pied de page.
  • {url} il est utilisé pour imprimer l'URL de la page rendue.
  • {date} imprime la date du jour dans l'en-tête ou le pied de page.
  • {time} il imprime l'heure actuelle dans l'en-tête ou le pied de page.
  • {html-title} il imprime le titre de la page web rendue dans l'en-tête ou le pied de page.
  • {pdf-title} il imprime le titre du document dans l'en-tête ou le pied de page.

Lire la suite en détail sur la façon de travailler avec Header and Footer à l'aide d'IronPDF.

Voyons l'exemple suivant pour mettre en œuvre le cas d'utilisation et démontrer comment utiliser les propriétés ci-dessus pour définir l'en-tête et le pied de page d'un fichier PDF.

using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Setting Header properties
    converter.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        DrawDividerLine = true,
        LeftText = "Page Title",
        RightText = "{date} {time}",
        FontSize = 13
    };
    // Setting footer properties
    converter.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        RightText = "Page {page} of {total-pages}",
        FontSize = 12
    };
    // Specify the file to be converted
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Setting Header properties
    converter.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        DrawDividerLine = true,
        LeftText = "Page Title",
        RightText = "{date} {time}",
        FontSize = 13
    };
    // Setting footer properties
    converter.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        RightText = "Page {page} of {total-pages}",
        FontSize = 12
    };
    // Specify the file to be converted
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim converter = New ChromePdfRenderer()
	' Setting Header properties
	converter.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.DrawDividerLine = True,
		.LeftText = "Page Title",
		.RightText = "{date} {time}",
		.FontSize = 13
	}
	' Setting footer properties
	converter.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.RightText = "Page {page} of {total-pages}",
		.FontSize = 12
	}
	' Specify the file to be converted
	Dim PDF = converter.RenderHTMLFileAsPdf("myWebPage.html")
	' Save to target location
	PDF.SaveAs("sample.pdf")
End Sub
$vbLabelText   $csharpLabel

Sortie: La capture d'écran du fichier PDF nouvellement créé sample.pdf par le code ci-dessus :

Iron Hdr Ftr related to 6.1. En-tête et pied de page de PDF IronPdf

Nous pouvons voir à quel point il est simple de travailler avec l'en-tête et le pied de page en utilisant un langage intuitif tout en créant un fichier PDF à l'aide d'IronPdf. Nous allons maintenant voir comment utiliser PrizmDoc Viewer pour définir l'en-tête et le pied de page.

6.2. En-tête et pied de page PDF de PrizmDoc Viewer

PrizmDoc Viewer fournit la classe HeaderFooterOptions pour traiter l'en-tête et le pied de page, avec les propriétés suivantes :

  • Lignes il spécifie la ou les lignes pour l'en-tête et le pied de page (plus clair lorsque vous comprenez l'exemple suivant), chaque ligne a les propriétés suivantes : *Left imprime le texte à gauche de la ligne d'en-tête ou de pied de page. *Center imprime le texte à gauche de la ligne d'en-tête ou de pied de page.
    • Right imprime le texte à droite de la ligne d'en-tête ou de pied de page.
  • FontFamily pour spécifier la famille de polices du texte de l'en-tête ou du pied de page.
  • FontSize pour spécifier la taille de la police du texte de l'en-tête ou du pied de page.
  • Color pour spécifier la couleur du texte de l'en-tête ou du pied de page.

En savoir plus sur la façon de définir l'en-tête et le pied de page d'une page PDF à l'aide du serveur PrizmDoc.

Voyons comment mettre en œuvre notre cas d'utilisation à l'aide des propriétés ci-dessus.

using System.Threading.Tasks;
using System.Collections.Generic;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    SetHeaderFooter().GetAwaiter().GetResult();
}

private static async Task SetHeaderFooter()
{
    // Instantiate PrizmDocServerClient object with Header and footer properties
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");

    ConversionResult result = await prizmDocServer.ConvertToPdfAsync(
        "myWebPage.html",
        header: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() }
            },
        },
        footer: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" },
            },
        });

    // Save to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
using System.Threading.Tasks;
using System.Collections.Generic;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    SetHeaderFooter().GetAwaiter().GetResult();
}

private static async Task SetHeaderFooter()
{
    // Instantiate PrizmDocServerClient object with Header and footer properties
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");

    ConversionResult result = await prizmDocServer.ConvertToPdfAsync(
        "myWebPage.html",
        header: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() }
            },
        },
        footer: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" },
            },
        });

    // Save to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports System.Threading.Tasks
Imports System.Collections.Generic
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Shared Sub Main(ByVal args() As String)
	SetHeaderFooter().GetAwaiter().GetResult()
End Sub

Private Shared Async Function SetHeaderFooter() As Task
	' Instantiate PrizmDocServerClient object with Header and footer properties
	Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY")

	Dim result As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("myWebPage.html", header:= New HeaderFooterOptions With {.Lines = New List(Of HeaderFooterLine) _
		From {
			New HeaderFooterLine With {
				.Left = "Page Title",
				.Right = DateTime.Now.ToString()
			}
		}
		},
		footer:= New HeaderFooterOptions With {
		.Lines = New List(Of HeaderFooterLine) From {
			New HeaderFooterLine With {.Right = "Page {{pageNumber}} of {{pageCount}}"}
		}
		})

	' Save to the target location
	Await result.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
$vbLabelText   $csharpLabel

Output:

La capture d'écran du fichier PDF nouvellement créé par le code ci-dessus :

Prizm Hdr Ftr related to 6.2. En-tête et pied de page PDF de PrizmDoc Viewer

6.3. Comparaison des codes d'en-tête et de pied de page des PDF

Nous pouvons voir qu'IronPDF fournit plus de fonctions pour définir les propriétés d'en-tête et de pied de page avec une structure de programmation simple par rapport au PrizmDoc Viewer. Il est également suggéré que le fichier PDF généré par IronPDF soit plus lisible et plus attrayant que le fichier généré par PrizmDoc Viewer.


<Convertissez des pages PDF en images

Prenons un autre cas d'utilisation : nous avons un simple fichier PDF nommé Sample_PDF.pdf qui ne comporte que 2 pages.

Page1 Page2
Page 1 related to 6.3. Comparaison des codes d'en-tête et de pied de page des PDF
Page 1 related to 6.3. Comparaison des codes d'en-tête et de pied de page des PDF

Nous devons également créer une image de chaque page. Dans un premier temps, nous verrons comment réaliser cette tâche à l'aide d'IronPDF.

7.1. IronPDF Convertir les PDF en images

using IronPdf;

static void Main(string[] args)
{
    // Specify file to be converted
    var pdf = PdfDocument.FromFile("Sample_PDF.pdf");
    // Save images to the target location
    pdf.RasterizeToImageFiles("image_*.png");
}
using IronPdf;

static void Main(string[] args)
{
    // Specify file to be converted
    var pdf = PdfDocument.FromFile("Sample_PDF.pdf");
    // Save images to the target location
    pdf.RasterizeToImageFiles("image_*.png");
}
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Specify file to be converted
	Dim pdf = PdfDocument.FromFile("Sample_PDF.pdf")
	' Save images to the target location
	pdf.RasterizeToImageFiles("image_*.png")
End Sub
$vbLabelText   $csharpLabel

Output:

Le code ci-dessus créera les deux images .png suivantes :

Page1 Image Page2 Image
Iron Generated Image1 related to 7.1. IronPDF Convertir les PDF en images
Iron Generated Image2 related to 7.1. IronPDF Convertir les PDF en images

Nous pouvons constater qu'il est assez simple de créer une image de chaque page PDF à l'aide d'IronPDF. Nous allons maintenant effectuer la même tâche en utilisant PrizmDoc Viewer.

7.2. PrizmDoc Viewer PDF à l'image

using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfToImage().GetAwaiter().GetResult();
}

private static async Task PdfToImage()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");
    // Convert PDF file to images
    IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png);

    // Save each image.
    for (int i = 0; i < results.Count(); i++)
    {
        await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png");
    }
}
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfToImage().GetAwaiter().GetResult();
}

private static async Task PdfToImage()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY");
    // Convert PDF file to images
    IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png);

    // Save each image.
    for (int i = 0; i < results.Count(); i++)
    {
        await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png");
    }
}
Imports System.Linq
Imports System.Collections.Generic
Imports System.Threading.Tasks
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Shared Sub Main(ByVal args() As String)
	PdfToImage().GetAwaiter().GetResult()
End Sub

Private Shared Async Function PdfToImage() As Task
	' Instantiate PrizmDocServerClient object
	Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY")
	' Convert PDF file to images
	Dim results As IEnumerable(Of ConversionResult) = Await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png)

	' Save each image.
	For i As Integer = 0 To results.Count() - 1
		Await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png")
	Next i
End Function
$vbLabelText   $csharpLabel

Output:

Le code ci-dessus créera également les deux images .png suivantes :

Page1 Page2
Prizm Generated Image1 related to 7.2. PrizmDoc Viewer PDF à l'image
Prizm Generated Image2 related to 7.2. PrizmDoc Viewer PDF à l'image

7.3. Comparaison du code de conversion des PDF en images

Par rapport à PrizmDoc Viewer, en utilisant IronPDF, nous pouvons facilement créer l'image de chaque page avec le moins de lignes de code possible, même sans itérer les pages.


Utilisation de Bootstrap 5 avec IronPDF pour les tableaux de données

Le moteur de rendu Chrome V8 d'IronPDF offre une prise en charge exceptionnelle des tableaux de données Bootstrap 5, ce qui vous permet de générer des rapports PDF professionnels avec des mises en page tabulaires complexes. Cet exemple présente des en-têtes en dégradé, des badges d'état, des contrôles de pagination et des mesures de synthèse - des fonctionnalités qui mettent en évidence les avantages d'IronPdf par rapport aux visionneuses PDF traditionnelles comme PrizmDoc.

using IronPdf;

var renderer = new ChromePdfRenderer();

string dataTableReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .table-header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px 10px 0 0;
        }
        .table-container {
            background: white;
            border-radius: 0 0 10px 10px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
            overflow: hidden;
        }
        .table th {
            background: #f8f9fa;
            font-weight: 600;
            text-transform: uppercase;
            font-size: 0.85rem;
            letter-spacing: 0.5px;
        }
        .status-badge {
            padding: 0.35em 0.65em;
            border-radius: 0.25rem;
            font-weight: 600;
            font-size: 0.75rem;
        }
        .trend-positive { color: #198754; font-weight: 700; }
        .trend-negative { color: #dc3545; font-weight: 700; }
        @media print {
            .table-container { page-break-inside: avoid; }
        }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-5'>
        <div class='table-container'>
            <div class='table-header'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h2 class='mb-2'>Sales Performance Report</h2>
                        <p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
                    </div>
                    <div class='col-md-4 text-end'>
                        <div class='btn-group btn-group-sm'>
                            <button class='btn btn-light'>Export</button>
                            <button class='btn btn-light'>Filter</button>
                            <button class='btn btn-light'>Sort</button>
                        </div>
                    </div>
                </div>
            </div>

            <div class='p-4'>
                <div class='row mb-3'>
                    <div class='col-md-4'>
                        <input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
                    </div>
                    <div class='col-md-8 text-end'>
                        <span class='text-muted small'>Showing 1-10 of 48 results</span>
                    </div>
                </div>

                <div class='table-responsive'>
                    <table class='table table-hover align-middle'>
                        <thead>
                            <tr>
                                <th>Region</th>
                                <th>Revenue</th>
                                <th>Units Sold</th>
                                <th>Growth</th>
                                <th>Status</th>
                                <th>Action</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>
                                    <strong>North America</strong><br>
                                    <small class='text-muted'>USA, Canada, Mexico</small>
                                </td>
                                <td>$4,280,000</td>
                                <td>12,450</td>
                                <td><span class='trend-positive'>↑ 18.5%</span></td>
                                <td><span class='status-badge bg-success text-white'>Exceeding</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Europe</strong><br>
                                    <small class='text-muted'>EU, UK, Switzerland</small>
                                </td>
                                <td>$3,650,000</td>
                                <td>10,890</td>
                                <td><span class='trend-positive'>↑ 12.3%</span></td>
                                <td><span class='status-badge bg-success text-white'>On Track</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Asia Pacific</strong><br>
                                    <small class='text-muted'>Japan, Australia, Singapore</small>
                                </td>
                                <td>$2,940,000</td>
                                <td>8,320</td>
                                <td><span class='trend-positive'>↑ 24.7%</span></td>
                                <td><span class='status-badge bg-primary text-white'>Growing</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Latin America</strong><br>
                                    <small class='text-muted'>Brazil, Argentina, Chile</small>
                                </td>
                                <td>$1,580,000</td>
                                <td>4,670</td>
                                <td><span class='trend-positive'>↑ 8.9%</span></td>
                                <td><span class='status-badge bg-info text-white'>Stable</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Middle East</strong><br>
                                    <small class='text-muted'>UAE, Saudi Arabia, Israel</small>
                                </td>
                                <td>$980,000</td>
                                <td>2,890</td>
                                <td><span class='trend-negative'>↓ 3.2%</span></td>
                                <td><span class='status-badge bg-warning text-dark'>Review</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                        </tbody>
                        <tfoot class='table-light'>
                            <tr>
                                <td><strong>Total</strong></td>
                                <td><strong>$13,430,000</strong></td>
                                <td><strong>39,220</strong></td>
                                <td><strong class='trend-positive'>↑ 14.8%</strong></td>
                                <td colspan='2'></td>
                            </tr>
                        </tfoot>
                    </table>
                </div>

                <div class='d-flex justify-content-between align-items-center mt-4'>
                    <div>
                        <select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
                            <option>10 per page</option>
                            <option>25 per page</option>
                            <option>50 per page</option>
                        </select>
                    </div>
                    <nav>
                        <ul class='pagination pagination-sm mb-0'>
                            <li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
                            <li class='page-item active'><a class='page-link' href='#'>1</a></li>
                            <li class='page-item'><a class='page-link' href='#'>2</a></li>
                            <li class='page-item'><a class='page-link' href='#'>3</a></li>
                            <li class='page-item'><a class='page-link' href='#'>Next</a></li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>

        <div class='row g-3 mt-4'>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-primary mb-1'>$13.4M</h3>
                        <small class='text-muted'>Total Revenue</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-success mb-1'>39,220</h3>
                        <small class='text-muted'>Units Sold</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-info mb-1'>14.8%</h3>
                        <small class='text-muted'>Growth Rate</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-warning mb-1'>5</h3>
                        <small class='text-muted'>Active Regions</small>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(dataTableReport);
pdf.SaveAs("data-table-report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string dataTableReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .table-header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px 10px 0 0;
        }
        .table-container {
            background: white;
            border-radius: 0 0 10px 10px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
            overflow: hidden;
        }
        .table th {
            background: #f8f9fa;
            font-weight: 600;
            text-transform: uppercase;
            font-size: 0.85rem;
            letter-spacing: 0.5px;
        }
        .status-badge {
            padding: 0.35em 0.65em;
            border-radius: 0.25rem;
            font-weight: 600;
            font-size: 0.75rem;
        }
        .trend-positive { color: #198754; font-weight: 700; }
        .trend-negative { color: #dc3545; font-weight: 700; }
        @media print {
            .table-container { page-break-inside: avoid; }
        }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-5'>
        <div class='table-container'>
            <div class='table-header'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h2 class='mb-2'>Sales Performance Report</h2>
                        <p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
                    </div>
                    <div class='col-md-4 text-end'>
                        <div class='btn-group btn-group-sm'>
                            <button class='btn btn-light'>Export</button>
                            <button class='btn btn-light'>Filter</button>
                            <button class='btn btn-light'>Sort</button>
                        </div>
                    </div>
                </div>
            </div>

            <div class='p-4'>
                <div class='row mb-3'>
                    <div class='col-md-4'>
                        <input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
                    </div>
                    <div class='col-md-8 text-end'>
                        <span class='text-muted small'>Showing 1-10 of 48 results</span>
                    </div>
                </div>

                <div class='table-responsive'>
                    <table class='table table-hover align-middle'>
                        <thead>
                            <tr>
                                <th>Region</th>
                                <th>Revenue</th>
                                <th>Units Sold</th>
                                <th>Growth</th>
                                <th>Status</th>
                                <th>Action</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>
                                    <strong>North America</strong><br>
                                    <small class='text-muted'>USA, Canada, Mexico</small>
                                </td>
                                <td>$4,280,000</td>
                                <td>12,450</td>
                                <td><span class='trend-positive'>↑ 18.5%</span></td>
                                <td><span class='status-badge bg-success text-white'>Exceeding</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Europe</strong><br>
                                    <small class='text-muted'>EU, UK, Switzerland</small>
                                </td>
                                <td>$3,650,000</td>
                                <td>10,890</td>
                                <td><span class='trend-positive'>↑ 12.3%</span></td>
                                <td><span class='status-badge bg-success text-white'>On Track</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Asia Pacific</strong><br>
                                    <small class='text-muted'>Japan, Australia, Singapore</small>
                                </td>
                                <td>$2,940,000</td>
                                <td>8,320</td>
                                <td><span class='trend-positive'>↑ 24.7%</span></td>
                                <td><span class='status-badge bg-primary text-white'>Growing</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Latin America</strong><br>
                                    <small class='text-muted'>Brazil, Argentina, Chile</small>
                                </td>
                                <td>$1,580,000</td>
                                <td>4,670</td>
                                <td><span class='trend-positive'>↑ 8.9%</span></td>
                                <td><span class='status-badge bg-info text-white'>Stable</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Middle East</strong><br>
                                    <small class='text-muted'>UAE, Saudi Arabia, Israel</small>
                                </td>
                                <td>$980,000</td>
                                <td>2,890</td>
                                <td><span class='trend-negative'>↓ 3.2%</span></td>
                                <td><span class='status-badge bg-warning text-dark'>Review</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                        </tbody>
                        <tfoot class='table-light'>
                            <tr>
                                <td><strong>Total</strong></td>
                                <td><strong>$13,430,000</strong></td>
                                <td><strong>39,220</strong></td>
                                <td><strong class='trend-positive'>↑ 14.8%</strong></td>
                                <td colspan='2'></td>
                            </tr>
                        </tfoot>
                    </table>
                </div>

                <div class='d-flex justify-content-between align-items-center mt-4'>
                    <div>
                        <select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
                            <option>10 per page</option>
                            <option>25 per page</option>
                            <option>50 per page</option>
                        </select>
                    </div>
                    <nav>
                        <ul class='pagination pagination-sm mb-0'>
                            <li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
                            <li class='page-item active'><a class='page-link' href='#'>1</a></li>
                            <li class='page-item'><a class='page-link' href='#'>2</a></li>
                            <li class='page-item'><a class='page-link' href='#'>3</a></li>
                            <li class='page-item'><a class='page-link' href='#'>Next</a></li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>

        <div class='row g-3 mt-4'>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-primary mb-1'>$13.4M</h3>
                        <small class='text-muted'>Total Revenue</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-success mb-1'>39,220</h3>
                        <small class='text-muted'>Units Sold</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-info mb-1'>14.8%</h3>
                        <small class='text-muted'>Growth Rate</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-warning mb-1'>5</h3>
                        <small class='text-muted'>Active Regions</small>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(dataTableReport);
pdf.SaveAs("data-table-report.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ce code génère un rapport de tableau de données sophistiqué avec des en-têtes en dégradé, des tableaux réactifs, des badges d'état et des métriques récapitulatives. Le moteur de rendu Chrome d'IronPDF préserve tout le style Bootstrap, y compris les effets de survol des tableaux, les couleurs des badges et les contrôles de pagination - des capacités qui vont bien au-delà des visionneuses PDF traditionnelles.

Avantages clés par rapport à PrizmDoc Viewer:

  • Rendu direct des tableaux HTML sans conversion
  • Prise en charge complète des composants Bootstrap
  • Arrière-plans en dégradé et CSS moderne
  • Mises en page de tableaux réactives avec une pagination appropriée

Pour plus de détails sur la génération de PDF Bootstrap, voir HTML to PDF Bootstrap Guide.

8 Prix des licences

Les comparaisons ci-dessus montrent la structure technique et les fonctions des deux composants. Nous allons maintenant examiner les prix des licences des deux composants. C'est très important car nous faisons toujours de notre mieux pour répondre à nos exigences en utilisant le budget minimum.

8.1. Options de licence IronPDF

La licence IronPDF démarre à partir de 699$ pour un seul projet avec un développeur.

Si vous êtes un ingénieur dans une entreprise ou une agence qui propose du travail à plusieurs clients, les licences commencent à 699 $ et peuvent être ajustées en fonction de la taille de l'équipe et du nombre de projets.

La licence suivante ne nécessite qu'un paiement unique.

Nombre de développeurs Prix
1-5 $699
6-10 $799
11-20 $899
21-50 $1,199
Illimité $1,199
  • Pour les entreprises ayant plusieurs sites, la licence commence à 1 199 $.
  • Pour les services SaaS, les licences commencent à 1 099 $.
  • Pour la redistribution OEM sans redevance, les licences commencent à 1 599 $.

Remarque : Tous les forfaits de licence ci-dessus incluent 1 an de support et de mises à jour.

En savoir plus sur tous les forfaits de licence disponibles pour IronPDF.

8.2. Options de licence PrizmDoc Viewer

Option d'auto-hébergement

Si vous gérez votre propre serveur, le prix de la licence est de 7 900 $/annuellement avec support standard.

En savoir plus sur toutes les informations sur les forfaits fournis de PrizmDoc Viewer.

Option basée sur l'informatique dématérialisée

Cette licence prend en compte les services basés sur le cloud de PrizmDoc Viewer, qui sont évolutifs sur une base de nombre de transactions.

Terminologies :

Transaction signifie que nous sollicitons le serveur PrizmDoc Viewer et obtenons le résultat (document obtenu).

Seaux prépayés signifie que vous payez une fois et obtenez les transactions, qui n'expirent pas.

Nombre de transactions Seaux prépayés Mensuel Chaque année
200 $18
1,000 $89
2,000 $119
6,000 $254 $169 1 859 $ (6 000 transactions/mois)
12,000 $434 $289 3 179 $ (12 000 transactions/mois)
25,000 $699 $499 5 459 $ (25 000 transactions/mois)
50,000 $1,199 $799 8 789 $ (50 000 transactions/mois)
100,000 $1,199 $1,199 10 989 $ (100 000 transactions/mois)
200,000 $2,549 $1,699 19 188 $ (200 000 transactions/mois)
300,000 $3,299 $2,199 25 188 $ (300 000 transactions/mois)
400,000 $4,049 $2,699 31 188 $ (400 000 transactions/mois)
500,000 $4,799 $3,199 37 188 $ (500 000 transactions/mois)

Accès rapide au tutoriel

Html To Pdf Icon related to Accès rapide au tutoriel

Obtenir le manuel de démarrage rapide d'IronPDF C#

Nous avons créé un guide de ressources PDF gratuit pour faciliter le développement de PDF pour .NET, avec des présentations de fonctions courantes et des exemples de manipulation, d'édition, de génération et d'enregistrement de PDFS en C# et VB.NET pour votre projet.

Télécharger le guide

Explorer la référence de l'API IronPDF

Explorez la référence API de la bibliothèque C# d'IronPDF, y compris les détails de toutes les fonctionnalités, classes, champs de méthodes, espaces de noms et enums d'IronPDF.

Voir la référence API
Documentation related to Accès rapide au tutoriel

Veuillez noterAccusoft's PrizmDoc Viewer est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié, approuvé ou sponsorisé par PrizmDoc Viewer d'Accusoft. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont faites à titre d'information uniquement et reflètent les informations publiquement disponibles 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.

Quels sont les avantages d'utiliser IronPDF par rapport à PrizmDoc pour la conversion de PDF ?

IronPDF offre une solution de rendu PDF locale simple, prenant en charge le travail hors ligne sans nécessiter de programmation asynchrone. En contraste, PrizmDoc fonctionne via une API REST, nécessitant une connectivité Internet pour interagir avec le serveur distant.

Puis-je fusionner plusieurs documents PDF en utilisant une bibliothèque PDF ?

Oui, avec IronPDF, vous pouvez fusionner plusieurs PDFs en utilisant la méthode MergePdf, vous permettant de combiner des documents en toute transparence.

Comment IronPDF gère-t-il la conversion de PDF en images ?

IronPDF vous permet de convertir facilement des pages PDF en images en utilisant ses méthodes intégrées, offrant une approche simplifiée par rapport à d'autres logiciels.

Quelles sont les options de personnalisation d'en-tête et de pied de page dans IronPDF ?

IronPDF fournit des fonctions étendues pour définir les propriétés d'en-tête et pied de page avec une structure de programmation simple, ce qui facilite la personnalisation de vos documents.

IronPDF est-il adapté au traitement de PDF hors ligne ?

Oui, IronPDF permet le traitement de PDF hors ligne, ce qui signifie que vous pouvez travailler sans connectivité Internet, contrairement à certaines autres solutions qui nécessitent une interaction avec un serveur distant.

Quelle est la structure tarifaire des licences IronPDF ?

Les licences IronPDF commencent à 699 $ pour un seul projet avec un développeur, avec des options évolutives pour les entreprises et les services SaaS, offrant une solution de paiement unique et économique.

Puis-je développer avec IronPDF gratuitement ?

Oui, IronPDF est gratuit pour le développement sans limite de temps et offre un essai de déploiement de 30 jours pour mettre en production votre projet.

Comment PrizmDoc gère-t-il la conversion HTML en PDF ?

PrizmDoc utilise une API REST pour la conversion de HTML en PDF, nécessitant une programmation asynchrone et une connectivité Internet pour interagir avec un serveur distant.

Quelles sont les exigences système pour héberger un serveur PrizmDoc ?

L'auto-hébergement du serveur PrizmDoc nécessite un minimum de 32 Go de RAM et un processeur 4 Cœurs, pour répondre à ses besoins de traitement.

IronPDF est-il entièrement compatible avec .NET 10 ?

Oui. IronPDF est compatible avec .NET 10 (ainsi qu'avec .NET 9, 8, 7, 6, .NET Core, .NET Standard et .NET Framework). Il s'installe via NuGet, fonctionne sous Windows, Linux et macOS, et utilise son moteur de rendu natif basé sur Chrome pour une conversion HTML vers PDF d'une précision optimale dans les applications .NET 10.

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