Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
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 par programmation, 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.
IronPDF est une bibliothèque C# de conversion de HTML en 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.
Il est gratuit pour le développement et offre une période d'essai de 30 jours pour le déploiement de votre projet.
Vous pouvez télécharger un projet de fichier à partir de ce site lien.
PrizmDoc Viewer est une API REST qui permet de travailler avec des fichiers PDF et de 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. Il peut également être utilisé pour inclure différents types d'options de signature électronique dans les applications.
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 Window, Mac ou Linux. | Prise en charge de .NET Core à l'aide de Window, Mac ou Linux. |
Travaille au niveau local | Envoie les documents à un serveur distant. |
Travailler avec ou sans programmation asynchrone. | Doit utiliser la programmation asynchrone en utilisant `System.Threading.Tasks`. |
Il est facile de travailler hors ligne une fois que nous avons installé IronPF dans notre système. | Doit se connecter à 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 certaines fonctions prédéfinies. |
Nécessite souvent un minimum de lignes de code. | Elle nécessite souvent de nombreuses lignes de code. |
License Unlimited conversions per project in each license plan. | 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 à l'essai. |
Installons les deux et comparons le code.
Il existe deux façons d'installer IronPDF dans votre projet, quelle que soit celle que vous adoptez.
Télécharger 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 :
utilisant IronPDF;
Désormais, vous pouvez facilement accéder aux fonctions et classes fournies par IronPDF.
Console du gestionnaire de paquets :
Si vous utilisez la console du gestionnaire de paquets, exécutez la commande suivante :
:ProductInstall
Gérer les paquets pour la solution :
Si vous utilisez l'interface graphique de [Gestionnaire de paquets NuGet](https://www.nuget.org/packages/IronPdf)puis recherchez `IronPDF` dans la barre de recherche et installez-le.
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 une réponse.
Comme son nom l'indique, il s'agit d'une application côté serveur qui obtient les informations de base avec le document sous forme de requête (entrée) et convertit le document en fichier PDF, puis envoie le fichier PDF converti au client en tant que réponse (sortie). C'est le 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 :
Self-Hosted:
Pour cette option, vous devez organiser votre serveur, et vous pouvez [Télécharger PrizmDoc Server](https://www.accusoft.com/products/prizmdoc-suite/prizmdoc-viewer-trial/) puis l'installer.[Lire la suite](https://help.accusoft.com/PrizmDoc/v13.14/HTML/install-on-windows.html) sur l'installation de PrizmDoc Server sous 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.
Hébergé sur Cloud:
Il s'agit d'un service de PrizmDoc Viewer basé sur le cloud et vous n'avez pas besoin d'installer votre serveur. Nous l'utiliserons pour notre comparaison. Pour ce faire, [créer votre compte](https://cloud.accusoft.com/signup) et la page d'accueil s'ouvre. Vous pouvez copier `API key` depuis le menu `API Key`, nous verrons plus tard comment l'utiliser.
Tout d'abord, nous verrons la structure de base pour travailler avec PrizmDoc Viewer afin de convertir les documents en un fichier PDF, et nous interagirons directement avec le serveur Accusoft
en utilisant WebClient
()` dans une application console C#.
Note: L'exemple suivant n'a pour but que d'expliquer comment PrizmDoc gère les fichiers PDF. C'est un peu long, donc pas de problème si vous sautez cet exemple et passer directement à la comparaison.
Dans cet exemple, nous allons convertir le fichier myWebpage.html
en fichier sample.pdf
.
Note: Nous devons installer la bibliothèque Newtonsoft
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
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;//install Newtonsoft
Imports System
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Threading.Tasks
Imports Newtonsoft.Json.Linq 'install Newtonsoft
Créez ensuite une variable publique Accusoft API Key
et collez-y votre API Key comme suit : ``` static string ApiKey= "Votre-API-KEY" ;
Il y a 3 étapes pour traiter un fichier PDF avec PrizmDoc Viewer :
1. Télécharger un fichier sur le serveur PrizmDoc.
2. Convertir 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.
```cs
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)convertResults.SelectToken("state");
//---Continuously checking whether conversion completed or not until 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();
}
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", "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 = "";
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", "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 = "";
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", "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 = ""
getResult = Encoding.ASCII.GetString(results)
Return JObject.Parse(getResult)
End Using
End Using
End Function
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
Le JSON suivant est la valeur résultante de l'objet myJson
:
{
"input": {
"sources":
[
{"fileId": "Auto Generated FileId Value"}
],
"dest": {
"format": "pdf"
}
}
}
Vérifier l'état de la conversion, qu'elle soit 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
3. Télécharger le fichier converti depuis le 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);
}
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
L'exemple ci-dessus demande beaucoup d'efforts! Pour minimiser la charge de travail, Accusoft a introduit une bibliothèque .NET appelée Accusoft.PrizmDocServerSDKil 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
Il y a 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 :
:InstallCmd install-package Accusoft.PrizmDocServerSDK
Gérer les paquets pour la solution :
Si vous utilisez l'interface graphique de NuGet Package Manager, recherchez `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 à :
utilisant Accusoft.PrizmDocServer;
Après avoir lu l'introduction et l'installation des deux composants, il est maintenant temps de travailler avec les deux composants. Pour cela, nous allons prendre quelques cas d'utilisation et les mettre en œuvre en utilisant les 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.
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 cette page, puis l'enregistrer à l'emplacement cible.
/**
HTML to PDF
anchor-ironpdf-html-to-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");
}
/**
HTML to PDF
anchor-ironpdf-html-to-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");
}
'''
'''HTML to PDF
'''anchor-ironpdf-html-to-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
Le code ci-dessus créera un fichier sample.pdf
et l'enregistrera dans le dossier bin>debug
du projet.
Vous pouvez également spécifier n'importe quel chemin comme ceci : PDF.SaveAs("E:/sample.pdf");
Lire la suite sur la façon d'utiliser 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.
Dans l'installation de PrizmDoc Viewer, nous avons déjà discuté de la façon d'obtenir la Clé API d'Accusoft
, et nous allons maintenant voir comment l'utiliser.
Tout d'abord, nous envoyons une requête au serveur PrizmDoc et obtenons une réponse. 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 en utilisant les 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
En savoir plus sur la façon de travailler avec PrizmDoc Viewer.
Ces exemples montrent qu'IronPDF est une approche plus simple de la création de fichiers PDF et qu'elle ne demande pas autant de temps.
Dans cette comparaison, nous prenons un cas d'utilisation où nous devons créer un fichier PDF à l'aide de la fonction Imageet il existe dans le dossier debug
du projet. Commençons par IronPDF.
/**
Image to PDF
anchor-ironpdf-image-to-pdf
**/
using IronPdf;
static void Main(string [] args)
{
//specify the image to be convert
using var converted = ImageToPdfConverter.ImageToPdf("google.png");
//save PDF file to the target location
converted.SaveAs("sample.pdf");
}
/**
Image to PDF
anchor-ironpdf-image-to-pdf
**/
using IronPdf;
static void Main(string [] args)
{
//specify the image to be convert
using var converted = ImageToPdfConverter.ImageToPdf("google.png");
//save PDF file to the target location
converted.SaveAs("sample.pdf");
}
'''
'''Image to PDF
'''anchor-ironpdf-image-to-pdf
'''*
Imports IronPdf
Shared Sub Main(ByVal args() As String)
'specify the image to be convert
Dim converted = ImageToPdfConverter.ImageToPdf("google.png")
'save PDF file to the target location
converted.SaveAs("sample.pdf")
End Sub
Output:
Cette capture d'écran montre un fichier PDF nouvellement créé sample.pdf
à l'aide du code ci-dessus :
Nous pouvons voir à quel point il est facile de créer un fichier PDF à partir d'une image à l'aide d'IronPDF. Nous allons maintenant effectuer la même tâche en utilisant PrizmDoc Viewer et voir le fichier PDF généré.
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 convert
ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
//save pdf file to the target location
await results.RemoteWorkFile.SaveAsync("sample.pdf");
}
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 convert
ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
//save pdf file to the target location
await results.RemoteWorkFile.SaveAsync("sample.pdf");
}
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 convert
Dim results As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("google.png")
'save pdf file to the target location
Await results.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
Sortie: Cette capture d'écran montre un fichier PDF nouvellement créé sample.pdf
à partir du code ci-dessus :
Nous pouvons voir qu'il nous suffit d'écrire 2 lignes de code simples en utilisant 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 aussi automatiquement un document pleine page utilisable.
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. Nous verrons tout d'abord comment effectuer cette tâche avec IronPDF.
/**
Merge PDF Files
anchor-ironpdf-merge-pdf-files
**/
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();
}
}
/**
Merge PDF Files
anchor-ironpdf-merge-pdf-files
**/
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();
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
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.
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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Le code ci-dessus créera également un fichier sample.pdf
, qui est la combinaison des fichiers A.pdf
, B.pdf
et C.pdf
.
Dans cette comparaison, supposons que nous ayons une simple page Web nommée "myWebPage.html" qui contient les éléments HTML et 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>
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
à droite de l'en-têteNombre de pages du total des pages
sur le côté droit du pied de page.
Tout d'abord, nous verrons comment utiliser IronPDF pour définir l'en-tête et le pied de page.
Pour gérer 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 le pied de page: ``C# ChromePdfRenderer_Obj.RenderingOptions.TextFooter=new TextHeaderFooter()```
Nous pouvons définir les propriétés suivantes lors de l'initialisation de TextHeaderFooter()
:
Espacement permet d'ajuster 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. Il peut être écrit entre crochets { }
comme suit :
{titre du pdf} 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 l'en-tête et le pied de page avec 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.
/**
Set Header and Footer
anchor-ironpdf-pdf-header-and-footer
**/
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");
}
/**
Set Header and Footer
anchor-ironpdf-pdf-header-and-footer
**/
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");
}
'''
'''Set Header and Footer
'''anchor-ironpdf-pdf-header-and-footer
'''*
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
Sortie: La capture d'écran du fichier PDF nouvellement créé sample.pdf
par le code ci-dessus :
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 lors de la création d'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.
PrizmDoc Viewer fournit la classe HeaderFooterOptions
pour gérer l'en-tête et le pied de page, avec les propriétés suivantes :
Color pour spécifier la couleur du texte de l'en-tête ou du pied de page.
Lire la suite 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
Output:
La capture d'écran du fichier PDF nouvellement créé par le code ci-dessus :
Nous pouvons constater qu'IronPDF offre plus de fonctions pour définir les propriétés de l'en-tête et du pied de page avec une structure de programmation simple que PrizmDoc Viewer. Il est également suggéré que le fichier PDF généré par IronPDF est plus lisible et plus attrayant que le fichier généré par PrizmDoc Viewer.
Prenons un autre cas d'utilisation : nous avons un simple fichier PDF nommé Sample_PDF.pdf
qui ne contient que 2 pages.
Et nous devons créer une image de chaque page. Nous verrons tout d'abord comment effectuer cette tâche avec IronPDF.
/**
PDF to Image
anchor-ironpdf-convert-pdf-to-image
**/
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");
}
/**
PDF to Image
anchor-ironpdf-convert-pdf-to-image
**/
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");
}
'''
'''PDF to Image
'''anchor-ironpdf-convert-pdf-to-image
'''*
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
Output:
Le code ci-dessus créera les deux images .png
suivantes :
Nous pouvons voir à quel point il est 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.
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
Output:
Le code ci-dessus créera également les deux images .png
suivantes :
Par rapport à PrizmDoc Viewer, IronPDF nous permet de créer facilement l'image de chaque page avec le moins de lignes de code possible, même sans itérer les pages.
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 besoins en utilisant le budget minimum.
La licence IronPDF commence à $749 pour un seul projet avec un seul développeur.
Si vous êtes ingénieur dans une entreprise ou une agence qui fournit 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 | $999 |
Illimité | $1,199 |
Pour la redistribution OEM libre de droits, les licences commencent à partir de $1599.
Note: Toutes les licences ci-dessus sont fournies avec 1 an de support et de mises à jour.
Lire la suite sur tous les paquets de licences fournis par IronPDF.
Si vous gérez votre propre serveur, le prix de la licence est de $7,900/an avec support standard.
Lire la suite à propos de toutes les informations fournies sur les paquets de PrizmDoc Viewer.
Cette licence couvre les services de PrizmDoc Viewer basés sur le cloud, qui sont mis à l'échelle sur la base du nombre de transactions.
Terminologies:
Transaction
signifie que l'on frappe le serveur PrizmDoc Viewer et que l'on obtient la sortie (document résultant).
Prepaid Buckets
signifie que vous payez une fois et que vous obtenez les transactions, qui n'expirent pas.
Nombre de transactions | Seaux prépayés | Mensuel | Annuellement |
---|---|---|---|
200 | $18 | ||
1,000 | $89 | ||
2,000 | $119 | ||
6,000 | $254 | $169 | 1 859 $ (6 000 transactions par mois) |
12,000 | $434 | $289 | 3 179 $ (12 000 transactions/mois) |
25,000 | $749 | $749 | 5 459 $ (25 000 transactions/mois) |
50,000 | $1,199 | $799 | 8 789 $ (50 000 transactions par mois) |
100,000 | $1,499 | $999 | 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 par mois) |
400,000 | $4,049 | $2,699 | 31 188 $ (400 000 transactions par mois) |
500,000 | $4,799 | $3,199 | 37 188 $ (500 000 transactions par mois) |
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 PDF en C# et VB.NET pour votre projet.
Télécharger le guideExplorez 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 de l'API9 produits de l'API .NET pour vos documents de bureau