IronPDF | C# içinde Azure Blob Storage'da Depolanan Görüntüler Nasıl İşlenir?

C#'ta Azure Blob Storage Resimleriyle PDF Görüntüleme

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

C#'da Azure Blob Storage görüntüleriyle PDF'leri oluşturmak için, blob verilerini ikili olarak alın, bunları base64 dizesine dönüştürün, bir HTML img etiketine gömün ve HTML'yi PDF/A'ya dönüştürmek için IronPDF'nin ChromePdfRenderer işlevini kullanın.

Azure Blob Storage, Microsoft Azure tarafından sağlanan bulut tabanlı bir depolama hizmetidir. Metin veya ikili veriler gibi büyük miktarda yapılandırılmamış veriyi, HTTP veya HTTPS üzerinden erişilebilir şekilde depolar. C#'ta PDF'lerle çalışırken, IronPDF, bulut hizmetlerinde saklananlar da dahil olmak üzere çeşitli resim formatları ve kaynaklarıyla başa çıkmak için güçlü yetenekler sunar.

Azure Blob Storage'da saklanan resimleri kullanmak için, doğrudan dosya referanslarından ziyade ikili veri biçimiyle başa çıkmanız gerekir. Çözüm, görüntüleri base64 dizelerine dönüştürmek ve bunları img etiketlerine gömmektir. Bu yaklaşım, IronPDF'in HTML'den PDF'ye dönüştürme özellikleriyle sorunsuz bir şekilde çalışarak görüntü kalitesini ve formatını korur.

Hızlı Başlangıç: Azure Blob Storage Resimleriyle PDF Görüntüleyin

  1. IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    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. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın

    arrow pointer


Azure Blob Resimlerini HTML'ye Nasıl Dönüştürürüm?

Blob'lar içeren bir konteyner ile bir Azure Depolama hesabı kurun, ardından C# projenizde kimlik doğrulama ve bağlantıyı yönetin. IronPDF ile birlikte Azure.Storage.Blobs NuGet paketini kullanın. Karmaşık kimlik doğrulama senaryoları için, güvenli blob erişimi için IronPDF'in HTTP istek başlığı yeteneklerini keşfedin.

Görüntüleri akış olarak indirmek için DownloadAsync yöntemini kullanın. Akış verilerini Base64'e dönüştürün ve HTML img etiketlerine gömün. htmlContent değişkenini HTML belgenize ekleyin. Bu teknik, dinamik olarak yüklenen bulut depolama resimleriyle raporlar veya belgeler oluşturmak için çok uygundur.

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
}
Imports Azure.Storage.Blobs
Imports System
Imports System.IO
Imports System.Threading.Tasks

Public Async Function ConvertBlobToHtmlAsync() As Task
	' Define your connection string and container name
	Dim connectionString As String = "your_connection_string"
	Dim containerName As String = "your_container_name"

	' Initialize BlobServiceClient with the connection string
	Dim blobServiceClient As New BlobServiceClient(connectionString)

	' Get the BlobContainerClient for the specified container
	Dim blobContainer As BlobContainerClient = blobServiceClient.GetBlobContainerClient(containerName)

	' Get the reference to the blob and initialize a stream
	Dim blobClient As BlobClient = blobContainer.GetBlobClient("867.jpg")
	Dim 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
	Dim array() As Byte = stream.ToArray()

	' Convert bytes to base64
	Dim base64 = Convert.ToBase64String(array)

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

	' Use the imageTag in your HTML document as needed
End Function
$vbLabelText   $csharpLabel

IronPDF'in çeşitli resim türleri için desteğinden yararlanın, örneğin JPG, PNG, SVG ve GIF. Base64 kodlama yöntemi, tüm bu formatlar arasında evrensel olarak çalışır.

Farklı Resim Formatlarıyla Çalışmak

Azure Blob Storage, çeşitli resim formatlarını destekler ve IronPDF bunları doğru kodlandığında tümünü işler. MIME türünü dinamik olarak belirleyen geliştirilmiş bir örnek burada:

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)}\"/>";
}
Imports System.IO
Imports System.Threading.Tasks

Public Function GetImageMimeType(blobName As String) As String
    Dim extension = Path.GetExtension(blobName).ToLower()
    Select Case extension
        Case ".jpg", ".jpeg"
            Return "image/jpeg"
        Case ".png"
            Return "image/png"
        Case ".gif"
            Return "image/gif"
        Case ".svg"
            Return "image/svg+xml"
        Case ".webp"
            Return "image/webp"
        Case Else
            Return "image/jpeg" ' default fallback
    End Select
End Function

Public Async Function CreateImageTagFromBlob(blobClient As BlobClient) As Task(Of String)
    Using stream As New MemoryStream()
        Await blobClient.DownloadToAsync(stream)
        stream.Position = 0

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

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

HTML'yi PDF'ye Nasıl Dönüştürebilirim?

htmlContent'yi RenderHtmlAsPdf() yöntemini kullanarak ChromePdfRenderer'ye dönüştürün. IronPDF'in Chrome görüntüleme motoru, dönüşüm sırasında görüntü kalitesini ve konumlandırmasını korur. En iyi sonuçlar için, PDF çıktı kalitesini kontrol etmek amacıyla görüntüleme seçeneklerini yapılandırın.

SaveAs()'yi çağırma yöntemi şöyledir:

: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");
Imports IronPdf

' Instantiate Renderer
Private renderer = New ChromePdfRenderer()

' Create a PDF from a HTML string using C#
Private pdf = renderer.RenderHtmlAsPdf(imageTag)

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

pdfOptions değişkenini, bodyHtml ile gerçek HTML içeriğinizi içerecek şekilde ayarlayın.

Tam Çalışma Örneği

Hata yönetimi ve optimizasyon dahil olmak üzere, Azure Blob Storage alma ve IronPDF görüntülemesini birleştiren kapsamlı bir örnek burada:

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"
        };
    }
}
Imports Azure.Storage.Blobs
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks

Public Class AzureBlobToPdfConverter
    Private ReadOnly _connectionString As String
    Private ReadOnly _renderer As ChromePdfRenderer

    Public Sub New(connectionString As String)
        _connectionString = connectionString
        _renderer = New ChromePdfRenderer()

        ' Configure rendering options for better image quality
        _renderer.RenderingOptions.ImageQuality = 100
        _renderer.RenderingOptions.DpiResolution = 300
    End Sub

    Public Async Function ConvertBlobImagesToPdfAsync(containerName As String, blobNames As List(Of String)) As Task(Of PdfDocument)
        Dim htmlBuilder As New StringBuilder()
        htmlBuilder.Append("<html><body style='margin: 20px;'>")

        Dim blobServiceClient As New BlobServiceClient(_connectionString)
        Dim containerClient = blobServiceClient.GetBlobContainerClient(containerName)

        For Each blobName In blobNames
            Try
                Dim blobClient = containerClient.GetBlobClient(blobName)
                Dim imageTag = Await CreateImageTagFromBlob(blobClient)
                htmlBuilder.Append(imageTag)
                htmlBuilder.Append("<br/><br/>") ' Add spacing between images
            Catch ex As Exception
                ' Log error and continue with other images
                Console.WriteLine($"Error processing blob {blobName}: {ex.Message}")
            End Try
        Next

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

        ' Convert the complete HTML to PDF
        Return _renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
    End Function

    Private Async Function CreateImageTagFromBlob(blobClient As BlobClient) As Task(Of String)
        Using stream As New MemoryStream()
            Await blobClient.DownloadToAsync(stream)
            stream.Position = 0

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

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

    Private Function GetImageMimeType(blobName As String) As String
        Dim extension = Path.GetExtension(blobName).ToLower()
        Return extension Select Case extension
            Case ".jpg", ".jpeg"
                Return "image/jpeg"
            Case ".png"
                Return "image/png"
            Case ".gif"
                Return "image/gif"
            Case ".svg"
                Return "image/svg+xml"
            Case ".webp"
                Return "image/webp"
            Case Else
                Return "image/jpeg"
        End Select
    End Function
End Class
$vbLabelText   $csharpLabel

Performans Hususları

Büyük resimlerle veya birden fazla blob ile çalışırken, zaman uyumsuz ve çoklu iş parçacığı tekniklerini uygulayarak performansı artırın. Aynı blobların tekrar tekrar indirilmesini önlemek için önbellekleme mekanizmaları ekleyin.

Üretim ortamları için, özellikle Azure dağıtımları için, en iyi uygulamalar ve yapılandırma önerileri için IronPDF'in Azure dağıtım kılavuzunu gözden geçirin. Bellek yoğun işlemler için, kaynak kullanımını optimize etmek için IronPDF'in bellek akışı yeteneklerini kullanın.

Güvenlik ve Kimlik Doğrulama

Azure Blob Storage'a erişirken uygun kimlik doğrulamayı sağlayın. Korunan kaynaklara erişirken özel HTTP başlıkları uygulayarak güvenliği artırın. Azure blob resimlerini içeren belgeler için PDF parola koruması uygulamayı düşünün.

Yaygın Sorunları Giderme

Blob depolama entegrasyon sorunlarıyla karşılaşırsanız, yaygın sorunlar için çözümler bulmak adına IronPDF'in Azure sorun giderme kılavuzuna bakın. Görüntülerle ilgili özel sorunlar için, görüntü işleme belgeleri çeşitli senaryoları ele alırken ayrıntılı kılavuz sağlar.

DownloadToStreamAsync imageTag imageTag RenderHtmlAsPdf RenderHtmlAsPdf "htmlContent" imageTag

Sıkça Sorulan Sorular

Azure Blob Storage'da saklanan görüntülerle PDF'ler nasıl oluştururum?

Azure Blob Storage görüntüleriyle PDF oluşturmak için blob verilerini ikili olarak alın, onu base64 stringine dönüştürün, HTML img etiketine ekleyin ve IronPDF'nin ChromePdfRenderer'ını kullanın. Bu yaklaşım, IronPDF'nin HTML'den PDF'ye dönüştürme özellikleriyle sorunsuz çalışırken görüntü kalitesini korur.

Azure Blob görüntüsünü PDF'ye dönüştürmenin en hızlı yolu nedir?

En hızlı yöntem IronPDF'yi bir satırda kullanmak: BlobContainerClient kullanarak blobu alın, Convert.ToBase64String() ile base64'e dönüştürün, img etiketine ekleyin ve IronPDF'nin ChromePdfRenderer().RenderHtmlAsPdf() yöntemiyle render edin.

PDF'lerde Azure Blob Storage görüntüleri için neden doğrudan dosya referanslarını kullanamam?

Azure Blob Storage, doğrudan dosya referansları yerine ikili veri formatı işlenmesini gerektirir. Çözüm, görüntüleri base64 string'ine dönüştürüp, img etiketlerinde gömmek ve ardından IronPDF'nin HTML'den PDF'ye dönüştürme yetenekleriyle işlemek olacaktır.

PDF'lerde Azure Blob görüntüleriyle çalışmak için hangi NuGet paketlerine ihtiyacım var?

Blob saklama işlemleri için Azure.Storage.Blobs NuGet paketine ve PDF renderi için IronPDF'ye ihtiyacınız olacak. IronPDF, base64 gömülü görüntülerle HTML'yi PDF belgelerine dönüştürmek için ChromePdfRenderer sağlar.

PDF oluştururken güvenli Azure Blob erişimi için kimlik doğrulamayı nasıl ele alırım?

C# projenizde uygun kimlik doğrulama ve bağlantı ile bir Azure Depolama hesabı ayarlayın. Karmaşık kimlik doğrulama senaryoları için, IronPDF'nin HTTP istek başlık yeteneklerini, PDF'leri render ederken güvenli blob erişimini yönetmek için keşfedebilirsiniz.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,014,616 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.