Comment rendre des images dans Azure Blob Storage en C# | IronPDF

Rendu des PDF avec les images Azure Blob Storage en C#35;

This article was translated from English: Does it need improvement?
Translated
View the article in English

Pour rendre des PDF avec des images Azure Blob Storage en C#, récupérez les données blob en binaire, convertissez-les en chaîne base64, intégrez-les dans une balise HTML img et utilisez IronPDF's ChromePdfRenderer pour convertir le HTML en PDF.

Azure Blob Storage est un service de stockage en nuage fourni par Microsoft Azure. Il stocke de grandes quantités de données non structurées, telles que des données textuelles ou binaires, accessibles via HTTP ou HTTPS. Lorsque vous travaillez avec des PDF en C#, IronPDF offre de puissantes fonctionnalités pour gérer divers formats et sources d'images, y compris celles stockées dans des services de cloud comme Azure Blob Storage.

Pour utiliser les images stockées dans Azure Blob Storage, vous devez gérer le format de données binaires plutôt que les références directes aux fichiers. La solution consiste à convertir les images en chaînes base64 et à les intégrer dans des balises img. Cette approche fonctionne de manière transparente avec les fonctionnalités de conversion HTML vers PDF d'IronPDF, en conservant la qualité de l'image et le formatage.

Quickstart : Render PDFs with Azure Blob Storage Images

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronPDF avec le gestionnaire de packages NuGet

    PM > Install-Package IronPdf

  2. Copiez et exécutez cet extrait de code.

    var blobBase64 = Convert.ToBase64String(new BlobContainerClient("conn","cont").GetBlobClient("img.jpg").DownloadContent().Value.Content.ToArray());
    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf($"<img src=\"data:image/jpeg;base64,{blobBase64}\" />").SaveAs("blobImage.pdf");
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronPDF dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer


Comment convertir des images Azure Blob en HTML?

<TODO : Ajouter une image ici -->

Configurez un compte Azure Storage avec un conteneur contenant des blobs, puis gérez l'authentification et la connexion dans votre projet C#. Utilisez le package NuGet Azure.Storage.Blobs aux côtés d'IronPDF. Pour les scénarios d'authentification complexes, explorez les capacités de l'en-tête de requête HTTP d'IronPDF pour un accès sécurisé aux blobs.

Utilisez la méthode DownloadToStreamAsync pour télécharger des images sous forme de flux. Convertissez les données de flux en Base64 et intégrez-les dans des balises HTML img. Insérez la variable imageTag dans votre document HTML. Cette technique fonctionne bien pour la création de rapports ou de documents avec des images de stockage en nuage chargées dynamiquement.

using Azure.Storage.Blobs;
using System;
using System.IO;
using System.Threading.Tasks;

public async Task ConvertBlobToHtmlAsync()
{
    // Define your connection string and container name
    string connectionString = "your_connection_string";
    string containerName = "your_container_name";

    // Initialize BlobServiceClient with the connection string
    BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

    // Get the BlobContainerClient for the specified container
    BlobContainerClient blobContainer = blobServiceClient.GetBlobContainerClient(containerName);

    // Get the reference to the blob and initialize a stream
    BlobClient blobClient = blobContainer.GetBlobClient("867.jpg");
    using var stream = new MemoryStream();

    // Download the blob data to the stream
    await blobClient.DownloadToAsync(stream);
    stream.Position = 0; // Reset stream position

    // Convert the stream to a byte array
    byte[] array = stream.ToArray();

    // Convert bytes to base64
    var base64 = Convert.ToBase64String(array);

    // Create an img tag with the base64-encoded string
    var imageTag = $"<img src=\"data:image/jpeg;base64,{base64}\"/><br/>";

    // Use the imageTag in your HTML document as needed
}
using Azure.Storage.Blobs;
using System;
using System.IO;
using System.Threading.Tasks;

public async Task ConvertBlobToHtmlAsync()
{
    // Define your connection string and container name
    string connectionString = "your_connection_string";
    string containerName = "your_container_name";

    // Initialize BlobServiceClient with the connection string
    BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

    // Get the BlobContainerClient for the specified container
    BlobContainerClient blobContainer = blobServiceClient.GetBlobContainerClient(containerName);

    // Get the reference to the blob and initialize a stream
    BlobClient blobClient = blobContainer.GetBlobClient("867.jpg");
    using var stream = new MemoryStream();

    // Download the blob data to the stream
    await blobClient.DownloadToAsync(stream);
    stream.Position = 0; // Reset stream position

    // Convert the stream to a byte array
    byte[] array = stream.ToArray();

    // Convert bytes to base64
    var base64 = Convert.ToBase64String(array);

    // Create an img tag with the base64-encoded string
    var imageTag = $"<img src=\"data:image/jpeg;base64,{base64}\"/><br/>";

    // Use the imageTag in your HTML document as needed
}
$vbLabelText   $csharpLabel

Lorsque vous travaillez avec plusieurs images ou différents formats, tirez parti de la prise en charge par IronPDF de divers types d'images, notamment JPG, PNG, SVG et GIF. La méthode d'encodage base64 fonctionne universellement dans tous ces formats.

Travailler avec différents formats d'image

Azure Blob Storage prend en charge différents formats d'image, et IronPDF les gère tous lorsqu'ils sont correctement encodés. Voici un exemple amélioré qui détermine dynamiquement le type MIME :

public string GetImageMimeType(string blobName)
{
    var extension = Path.GetExtension(blobName).ToLower();
    return extension switch
    {
        ".jpg" or ".jpeg" => "image/jpeg",
        ".png" => "image/png",
        ".gif" => "image/gif",
        ".svg" => "image/svg+xml",
        ".webp" => "image/webp",
        _ => "image/jpeg" // default fallback
    };
}

public async Task<string> CreateImageTagFromBlob(BlobClient blobClient)
{
    using var stream = new MemoryStream();
    await blobClient.DownloadToAsync(stream);
    stream.Position = 0;

    var base64 = Convert.ToBase64String(stream.ToArray());
    var mimeType = GetImageMimeType(blobClient.Name);

    return $"<img src=\"data:{mimeType};base64,{base64}\" alt=\"{Path.GetFileNameWithoutExtension(blobClient.Name)}\"/>";
}
public string GetImageMimeType(string blobName)
{
    var extension = Path.GetExtension(blobName).ToLower();
    return extension switch
    {
        ".jpg" or ".jpeg" => "image/jpeg",
        ".png" => "image/png",
        ".gif" => "image/gif",
        ".svg" => "image/svg+xml",
        ".webp" => "image/webp",
        _ => "image/jpeg" // default fallback
    };
}

public async Task<string> CreateImageTagFromBlob(BlobClient blobClient)
{
    using var stream = new MemoryStream();
    await blobClient.DownloadToAsync(stream);
    stream.Position = 0;

    var base64 = Convert.ToBase64String(stream.ToArray());
    var mimeType = GetImageMimeType(blobClient.Name);

    return $"<img src=\"data:{mimeType};base64,{base64}\" alt=\"{Path.GetFileNameWithoutExtension(blobClient.Name)}\"/>";
}
$vbLabelText   $csharpLabel

Comment convertir le HTML en PDF?

<TODO : Ajouter une image ici -->

Convertissez le imageTag en PDF à l'aide de la méthode RenderHtmlAsPdf de ChromePdfRenderer. Le moteur de rendu Chrome d'IronPDF préserve la qualité et le positionnement des images pendant la conversion. Pour des résultats optimaux, configurez les options de rendu pour contrôler la qualité de la sortie PDF.

Voici comment appeler RenderHtmlAsPdf :

:path=/static-assets/pdf/content-code-examples/how-to/images-azure-blob-storage-html-to-pdf.cs
using IronPdf;

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

// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf(imageTag);

// Export to a file
pdf.SaveAs("imageToPdf.pdf");
$vbLabelText   $csharpLabel

Ajustez la variable "htmlContent" pour inclure votre contenu HTML réel avec le imageTag.

Exemple de travail complet

Voici un exemple complet combinant la récupération d'Azure Blob Storage et le rendu d'IronPDF, y compris la gestion des erreurs et l'optimisation :

using Azure.Storage.Blobs;
using IronPdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;

public class AzureBlobToPdfConverter
{
    private readonly string _connectionString;
    private readonly ChromePdfRenderer _renderer;

    public AzureBlobToPdfConverter(string connectionString)
    {
        _connectionString = connectionString;
        _renderer = new ChromePdfRenderer();

        // Configure rendering options for better image quality
        _renderer.RenderingOptions.ImageQuality = 100;
        _renderer.RenderingOptions.DpiResolution = 300;
    }

    public async Task<PdfDocument> ConvertBlobImagesToPdfAsync(string containerName, List<string> blobNames)
    {
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<html><body style='margin: 20px;'>");

        var blobServiceClient = new BlobServiceClient(_connectionString);
        var containerClient = blobServiceClient.GetBlobContainerClient(containerName);

        foreach (var blobName in blobNames)
        {
            try
            {
                var blobClient = containerClient.GetBlobClient(blobName);
                var imageTag = await CreateImageTagFromBlob(blobClient);
                htmlBuilder.Append(imageTag);
                htmlBuilder.Append("<br/><br/>"); // Add spacing between images
            }
            catch (Exception ex)
            {
                // Log error and continue with other images
                Console.WriteLine($"Error processing blob {blobName}: {ex.Message}");
            }
        }

        htmlBuilder.Append("</body></html>");

        // Convert the complete HTML to PDF
        return _renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
    }

    private async Task<string> CreateImageTagFromBlob(BlobClient blobClient)
    {
        using var stream = new MemoryStream();
        await blobClient.DownloadToAsync(stream);
        stream.Position = 0;

        var base64 = Convert.ToBase64String(stream.ToArray());
        var mimeType = GetImageMimeType(blobClient.Name);

        return $"<img src=\"data:{mimeType};base64,{base64}\" " +
               $"alt=\"{Path.GetFileNameWithoutExtension(blobClient.Name)}\" " +
               $"style=\"max-width: 100%; height: auto;\"/>";
    }

    private string GetImageMimeType(string blobName)
    {
        var extension = Path.GetExtension(blobName).ToLower();
        return extension switch
        {
            ".jpg" or ".jpeg" => "image/jpeg",
            ".png" => "image/png",
            ".gif" => "image/gif",
            ".svg" => "image/svg+xml",
            ".webp" => "image/webp",
            _ => "image/jpeg"
        };
    }
}
using Azure.Storage.Blobs;
using IronPdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;

public class AzureBlobToPdfConverter
{
    private readonly string _connectionString;
    private readonly ChromePdfRenderer _renderer;

    public AzureBlobToPdfConverter(string connectionString)
    {
        _connectionString = connectionString;
        _renderer = new ChromePdfRenderer();

        // Configure rendering options for better image quality
        _renderer.RenderingOptions.ImageQuality = 100;
        _renderer.RenderingOptions.DpiResolution = 300;
    }

    public async Task<PdfDocument> ConvertBlobImagesToPdfAsync(string containerName, List<string> blobNames)
    {
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<html><body style='margin: 20px;'>");

        var blobServiceClient = new BlobServiceClient(_connectionString);
        var containerClient = blobServiceClient.GetBlobContainerClient(containerName);

        foreach (var blobName in blobNames)
        {
            try
            {
                var blobClient = containerClient.GetBlobClient(blobName);
                var imageTag = await CreateImageTagFromBlob(blobClient);
                htmlBuilder.Append(imageTag);
                htmlBuilder.Append("<br/><br/>"); // Add spacing between images
            }
            catch (Exception ex)
            {
                // Log error and continue with other images
                Console.WriteLine($"Error processing blob {blobName}: {ex.Message}");
            }
        }

        htmlBuilder.Append("</body></html>");

        // Convert the complete HTML to PDF
        return _renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
    }

    private async Task<string> CreateImageTagFromBlob(BlobClient blobClient)
    {
        using var stream = new MemoryStream();
        await blobClient.DownloadToAsync(stream);
        stream.Position = 0;

        var base64 = Convert.ToBase64String(stream.ToArray());
        var mimeType = GetImageMimeType(blobClient.Name);

        return $"<img src=\"data:{mimeType};base64,{base64}\" " +
               $"alt=\"{Path.GetFileNameWithoutExtension(blobClient.Name)}\" " +
               $"style=\"max-width: 100%; height: auto;\"/>";
    }

    private string GetImageMimeType(string blobName)
    {
        var extension = Path.GetExtension(blobName).ToLower();
        return extension switch
        {
            ".jpg" or ".jpeg" => "image/jpeg",
            ".png" => "image/png",
            ".gif" => "image/gif",
            ".svg" => "image/svg+xml",
            ".webp" => "image/webp",
            _ => "image/jpeg"
        };
    }
}
$vbLabelText   $csharpLabel

Considérations de performance

<TODO : Ajouter une image ici -->

Lorsque vous travaillez avec de grandes images ou plusieurs blobs, mettez en œuvre des techniques async et multithreading pour améliorer les performances. Ajoutez des mécanismes de mise en cache pour éviter de télécharger les mêmes blobs à plusieurs reprises.

Pour les environnements de production, en particulier les déploiements Azure, consultez le guide de déploiement Azure d'IronPDF pour connaître les meilleures pratiques et les recommandations de configuration. Pour les opérations gourmandes en mémoire, utilisez les capacités de flux de mémoire d'IronPDF pour optimiser l'utilisation des ressources.

Sécurité et authentification

Garantir une authentification correcte lors de l'accès à Azure Blob Storage. Pour une sécurité renforcée, mettez en œuvre des en-têtes HTTP personnalisés lors de l'accès à des ressources protégées. Envisagez de mettre en place une protection par mot de passe des PDF pour les documents sensibles contenant des images blob Azure.

Dépannage des problèmes courants

Si vous rencontrez des problèmes d'intégration du stockage blob, consultez le guide de dépannage Azure d'IronPDF pour trouver des solutions aux problèmes courants. Pour les questions spécifiques à l'image, la documentation sur le rendu des images fournit des conseils détaillés sur le traitement de divers scénarios.

Questions Fréquemment Posées

Comment générer des PDF avec des images stockées dans Azure Blob Storage ?

Pour générer des PDF avec des images Azure Blob Storage, récupérez les données blob en binaire, convertissez-les en chaîne base64, intégrez-les dans une balise HTML img et utilisez IronPDF's ChromePdfRenderer pour convertir le HTML en PDF. Cette approche fonctionne de manière transparente avec les fonctions de conversion HTML vers PDF d'IronPDF tout en préservant la qualité de l'image.

Quel est le moyen le plus rapide de convertir une image Azure Blob en PDF ?

La méthode la plus rapide consiste à utiliser IronPDF avec une approche en une ligne : récupérer le blob à l'aide de BlobContainerClient, le convertir en base64 avec Convert.ToBase64String(), l'intégrer dans une balise img et effectuer le rendu avec la méthode ChromePdfRenderer().RenderHtmlAsPdf() d'IronPDF.

Pourquoi ne puis-je pas utiliser des références de fichiers directes pour les images Azure Blob Storage dans les PDF ?

Azure Blob Storage nécessite de traiter des formats de données binaires plutôt que des références directes à des fichiers. La solution consiste à convertir les images en chaînes base64 et à les intégrer dans des balises img, qu'IronPDF peut ensuite traiter grâce à ses capacités de conversion HTML en PDF.

Quels sont les packages NuGet dont j'ai besoin pour travailler avec les images Azure Blob dans les PDF ?

Vous aurez besoin du package NuGet Azure.Storage.Blobs pour les opérations de stockage de blobs, ainsi que d'IronPDF pour le rendu des PDF. IronPDF fournit le ChromePdfRenderer pour convertir le HTML avec des images base64 intégrées en documents PDF.

Comment gérer l'authentification pour l'accès sécurisé à Azure Blob lors de la génération de PDF ?

Configurez un compte Azure Storage avec une authentification et une connexion appropriées dans votre projet C#. Pour les scénarios d'authentification complexes, vous pouvez explorer les capacités de l'en-tête de requête HTTP d'IronPDF pour gérer l'accès sécurisé aux blobs lors du rendu des PDF.

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
Prêt à commencer?
Nuget Téléchargements 17,012,929 | Version : 2025.12 vient de sortir