Convertir HTML en PDF en .NET
Aperçu
Cet article explique comment convertir HTML en PDF en utilisant C#. Il couvre les sujets suivants.
Le code suivant fonctionne également avec la bibliothèque Aspose.PDF.Drawing.
Format : HTML
Format : MHTML
Format : Page Web
Conversion de HTML en PDF en C#
Conversion de HTML en PDF en C#
Aspose.PDF pour .NET est une API de manipulation de PDF qui vous permet de convertir tout document HTML existant en PDF de manière transparente. Le processus de conversion de HTML en PDF peut être personnalisé de manière flexible.
Convertir HTML en PDF
Le code C# suivant montre comment convertir un document HTML en PDF.
Étapes : Convertir HTML en PDF en C#
- Créez une instance de la classe HtmlLoadOptions.
- Initialisez l’objet Document.
- Enregistrez le document PDF de sortie en appelant la méthode Document.Save().
public static void ConvertHTMLtoPDF()
{
HtmlLoadOptions options= new HtmlLoadOptions();
Document pdfDocument= new Document(_dataDir + "test.html", options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
Essayez de convertir HTML en PDF en ligne
Aspose vous présente l’application gratuite en ligne “HTML to PDF”, où vous pouvez explorer la fonctionnalité et la qualité de son fonctionnement.
Aspose vous présente une application gratuite en ligne “HTML en PDF”, où vous pouvez explorer la fonctionnalité et la qualité de son fonctionnement.
Conversion avancée de HTML en PDF
Le moteur de conversion HTML dispose de plusieurs options qui nous permettent de contrôler le processus de conversion.
Support des requêtes média
Les requêtes média sont une technique populaire pour fournir une feuille de style adaptée à différents appareils. Nous pouvons définir le type d’appareil en utilisant la propriété HtmlMediaType
.
public static void ConvertHTMLtoPDFAdvanced_MediaType()
{
HtmlLoadOptions options = new HtmlLoadOptions
{
// définir le mode Impression ou Écran
HtmlMediaType = HtmlMediaType.Print
};
Document pdfDocument= new Document(_dataDir + "test.html", options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
Activer (désactiver) l’incorporation de polices
Les pages HTML utilisent souvent des polices (par exemple, des polices d’un dossier local, Google Fonts, etc.). Nous pouvons également contrôler l’incorporation de polices dans un document en utilisant la propriété IsEmbedFonts
.
public static void ConvertHTMLtoPDFAdvanced_EmbedFonts()
{
// Désactivation de l'incorporation des polices
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = false};
Document pdfDocument= new Document(_dataDir + "test_fonts.html", options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
Gérer le chargement des ressources externes
Le moteur de conversion fournit un mécanisme qui vous permet de contrôler le chargement de certaines ressources associées au document HTML.
La classe HtmlLoadOptions
possède la propriété CustomLoaderOfExternalResources
avec laquelle nous pouvons définir le comportement du chargeur de ressources.
La classe HtmlLoadOptions
possède la propriété CustomLoaderOfExternalResources
avec laquelle nous pouvons définir le comportement du chargeur de ressources.
Supposons que nous devons remplacer toutes les images PNG par une image unique test.jpg
et remplacer l’URL externe par une URL interne pour d’autres ressources.
Pour ce faire, nous pouvons définir un chargeur personnalisé SamePictureLoader
et diriger CustomLoaderOfExternalResources
vers ce nom.
public static void ConvertHTMLtoPDFAdvanced_DummyImage()
{
HtmlLoadOptions options = new HtmlLoadOptions
{
CustomLoaderOfExternalResources = SamePictureLoader
};
Document pdfDocument = new Document(_dataDir + "test.html", options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
private static LoadOptions.ResourceLoadingResult SamePictureLoader(string resourceURI)
{
LoadOptions.ResourceLoadingResult result;
if (resourceURI.EndsWith(".png"))
{
byte[] resultBytes = File.ReadAllBytes(_dataDir + "test.jpg");
result = new LoadOptions.ResourceLoadingResult(resultBytes)
{
//Définir le type MIME
MIMETypeIfKnown = "image/jpeg"
};
}
else
{
result = new LoadOptions.ResourceLoadingResult(GetContentFromUrl(resourceURI));
}
return result;
}
private static byte[] GetContentFromUrl(string url)
{
var httpClient = new HttpClient();
return httpClient.GetByteArrayAsync(url).GetAwaiter().GetResult();
}
Convertir une page Web en PDF
Convertir une page Web est légèrement différent de convertir un document HTML local. Pour convertir le contenu d’une page Web en format PDF, nous pouvons d’abord récupérer le contenu de la page HTML en utilisant une instance HttpClient, créer un objet Stream, passer les contenus à l’objet Document et rendre la sortie en format PDF.
Lors de la conversion d’une page Web hébergée sur un serveur web en PDF :
Étapes : Convertir une page Web en PDF en C#
- Lire le contenu de la page en utilisant un objet HttpClient.
- Instancier l’objet HtmlLoadOptions et définir l’URL de base.
- Initialiser un objet Document en passant l’objet stream.
- Facultativement, définir la taille de la page et/ou l’orientation.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
const string url = "https://en.wikipedia.org/wiki/Aspose_API";
// Définir la taille de la page A3 et l'orientation Paysage;
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};
Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
private static Stream GetContentFromUrlAsStream(string url, ICredentials credentials = null)
{
using (var handler = new HttpClientHandler { Credentials = credentials })
using (var httpClient = new HttpClient(handler))
{
return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
}
}
Fournir des identifiants pour la conversion de pages Web en PDF
Parfois, nous devons effectuer la conversion de fichiers HTML qui nécessitent une authentification et des privilèges d’accès, afin que seuls les utilisateurs authentiques puissent récupérer le contenu de la page. Cela inclut également le scénario où certaines ressources/données référencées à l’intérieur de l’HTML sont extraites d’un serveur externe qui nécessite une authentification et, pour répondre à cette exigence, la propriété ExternalResourcesCredentials
est ajoutée à la classe HtmlLoadOptions
. Le morceau de code suivant montre les étapes pour passer des identifiants à la requête HTML et ses ressources respectives lors de la conversion du fichier HTML en PDF.
public static void ConvertHTMLtoPDFAdvanced_Authorized()
{
const string url = "http://httpbin.org/basic-auth/user1/password1";
var credentials = new NetworkCredential("user1", "password1");
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
ExternalResourcesCredentials = credentials
};
Document pdfDocument= new Document(GetContentFromUrlAsStream(url, credentials), options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
private static Stream GetContentFromUrlAsStream(string url, ICredentials credentials = null)
{
using (var handler = new HttpClientHandler { Credentials = credentials })
using (var httpClient = new HttpClient(handler))
{
return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
}
}
Rendre tout le contenu HTML sur une seule page
Aspose.PDF pour .NET offre la capacité de rendre tout le contenu sur une seule page lors de la conversion d’un fichier HTML en format PDF. Par exemple, si vous avez un contenu HTML dont la taille de sortie est supérieure à une page, vous pouvez utiliser l’option de rendu des données de sortie sur une seule page PDF. Pour utiliser cette option, la classe HtmlLoadOptions a été étendue par le drapeau IsRenderToSinglePage. Le fragment de code ci-dessous montre comment utiliser cette fonctionnalité.
// Pour des exemples complets et des fichiers de données, veuillez aller à https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Le chemin vers le répertoire des documents.
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Initialiser les options HTMLLoadSave
HtmlLoadOptions options = new HtmlLoadOptions();
// Définir la propriété de rendu sur une seule page
options.IsRenderToSinglePage = true;
// Charger le document
Document pdfDocument= new Document(dataDir + "HTMLToPDF.html", options);
// Sauvegarder
pdfDocument.Save(dataDir + "RenderContentToSamePage.pdf");
Rendre le HTML avec des données SVG
Rendu HTML avec données SVG
Aspose.PDF pour .NET permet de convertir une page HTML en document PDF. Étant donné que HTML permet d’ajouter un élément graphique SVG comme balise dans la page, Aspose.PDF prend également en charge la conversion de ces données dans le fichier PDF résultant. Le fragment de code suivant montre comment convertir des fichiers HTML avec des balises graphiques SVG en documents PDF balisés.
// Pour des exemples complets et des fichiers de données, veuillez aller à https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Le chemin vers le répertoire des documents.
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Définir le chemin du fichier d'entrée
string inFile = dataDir + "HTMLSVG.html";
// Définir le chemin du fichier de sortie
string outFile = dataDir + "RenderHTMLwithSVGData.pdf";
// Initialiser HtmlLoadOptions
HtmlLoadOptions options = new HtmlLoadOptions(Path.GetDirectoryName(inFile));
// Initialiser l'objet Document
Document pdfDocument = new Document(inFile, options);
// sauvegarder
pdfDocument.Save(outFile);
Convertir MHTML en PDF
Essayez de convertir MHTML en PDF en ligne Essayez de convertir MHTML en PDF en ligne
Aspose.PDF pour .NET vous présente une application gratuite en ligne “MHTML to PDF”, où vous pouvez essayer d’explorer la fonctionnalité et la qualité de son fonctionnement.
MHTML, abrégé pour MIME HTML, est un format d’archive de page web utilisé pour combiner des ressources qui sont généralement représentées par des liens externes (tels que des images, des animations Flash, des applets Java et des fichiers audio) avec du code HTML dans un seul fichier. MHTML, abréviation de MIME HTML, est un format d’archive de page web utilisé pour combiner des ressources qui sont généralement représentées par des liens externes (tels que des images, des animations Flash, des applets Java et des fichiers audio) avec du code HTML dans un seul fichier.
Étapes : Convertir MHTML en PDF en C#
- Créez une instance de la classe MhtLoadOptions.
- Initialisez l’objet Document.
- Enregistrez le document PDF de sortie en appelant la méthode Document.Save().
public static void ConvertMHTtoPDF()
{
MhtLoadOptions options = new MhtLoadOptions()
{
PageInfo = { Width = 842, Height = 1191, IsLandscape = true}
};
Document pdfDocument= new Document(_dataDir + "fileformatinfo.mht", options);
pdfDocument.Save(_dataDir + "mhtml_test.PDF");
}
Voir aussi
Cet article couvre également ces sujets. Cet article couvre également ces sujets.
Format : HTML
- Code C# HTML vers PDF
- API C# HTML vers PDF
- C# HTML vers PDF Programmation
- Bibliothèque C# HTML vers PDF
- C# Enregistrer HTML comme PDF
- C# Générer un PDF à partir de HTML
- C# Créer un PDF à partir de HTML
- Convertisseur C# HTML vers PDF
Format : MHTML
- Code C# MHTML vers PDF
- API C# MHTML vers PDF
- C# MHTML vers PDF Programmation
- Bibliothèque C# MHTML vers PDF
- C# Enregistrer MHTML comme PDF
- C# Générer un PDF à partir de MHTML
- C# Créer un PDF à partir de MHTML
- Convertisseur C# MHTML vers PDF
Format : WebPage
- Code C# WebPage vers PDF
- API C# WebPage vers PDF
- C# WebPage vers PDF Programmation
- C# Page Web en PDF Programmatically
- C# Bibliothèque pour convertir une Page Web en PDF
- C# Enregistrer une Page Web en tant que PDF
- C# Générer un PDF à partir d’une Page Web
- C# Créer un PDF à partir d’une Page Web
- C# Convertisseur de Page Web en PDF