Azure Blob Depolamada Saklanan Resimleri C# ile İşleme | IronPDF

C# ile Azure Blob Storage Görüntüleriyle PDF'leri İşleme

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

C#'ta Azure Blob Storage görüntüleriyle PDF işlemek için blob verilerini ikili olarak alın, base64 dizgesine dönüştürün, HTML img etiketine yerleştirin ve HTML'yi PDF'ye dönüştürmek için IronPDF'in ChromePdfRenderer'ını kullanın.

Azure Blob Storage, Microsoft Azure tarafından sunulan bulut tabanlı bir depolama hizmetidir. HTTP veya HTTPS üzerinden erişilebilen metin veya ikili veri gibi büyük miktarda yapılandırılmamış veriyi depolar. C#'ta PDF'lerle çalışırken, IronPDF, çeşitli resim formatlarını ve kaynaklarını, Azure Blob Storage gibi bulut hizmetlerinde saklananlar dahil, işlemek için güçlü yetenekler sunar.

Azure Blob Storage'da saklanan resimleri kullanmak için doğrudan dosya referansları yerine ikili veri formatını ele almanız gerekir. Çözüm, resimleri base64 dizgilerine dönüştürüp img etiketlerine yerleştirmektir. Bu yaklaşım, IronPDF'in HTML'den PDF'ye dönüşüm özellikleri ile sorunsuz bir şekilde çalışır ve resim kalitesini ve formatını korur.

Hızlı Başlangıç: Azure Blob Storage Görüntüleriyle PDF'leri İşleme

  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronPdf yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçasını kopyalayıp ç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 etmek için dağıtın

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

    arrow pointer


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

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

Gorselleri akış olarak indirmek için DownloadToStreamAsync yöntemini kullanın. Akış verilerini Base64'e dönüştürün ve HTML img etiketlerine yerleştirin. HTML belgenize imageTag değişkenini birleştirin. Bu teknik, dinamik olarak yüklenen bulut depolama görüntüleriyle raporlar veya belgeler oluşturmak için iyi çalışır.

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

Birden fazla resim veya farklı formatlarla çalışırken, JPG, PNG, SVG ve GIF dahil çeşitli resim türleri için IronPDF'in desteğini kullanın. 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ın hepsini düzgün bir şekilde kodlandığında işler. Mime türünü dinamik olarak belirleyen geliştirilmiş bir örnek:

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ürürüm?

ChromePdfRenderer'in RenderHtmlAsPdf yöntemini kullanarak imageTag'yi PDF'ye dönüştürün. IronPDF'in Chrome işleme motoru, dönüşüm sırasında resim kalitesini ve konumlandırmayı korur. En iyi sonuçlar için, PDF çıktısı kalitesini kontrol etmek üzere işleme seçeneklerini yapılandırın.

İşte RenderHtmlAsPdf çağırma şekli:

: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

Gerçek HTML içeriğinizi imageTag ile dahil etmek için "htmlContent" değişkenini ayarlayın.

Tam Çalışma Örneği

Hata ayıklama ve optimizasyon dahil olmak üzere, IronPDF işleme ile Azure Blob Storage geri alma işlemini birleştiren kapsamlı bir örnek:

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 Dikkatleri

Büyük resimler veya birden fazla blob ile çalışırken performansı artırmak için eşzamanlı ve çoklu iş parçacığı tekniklerini uygulayın. Aynı blobları tekrar tekrar indirmekten kaçınmak için önbellekleme mekanizmaları ekleyin.

Özellikle Azure dağıtımları için üretim ortamlarında, en iyi uygulamalar ve yapılandırma önerileri için IronPDF'in Azure dağıtım kılavuzunu inceleyin. Bellek açısından yoğun işlemler için, kaynak kullanımını optimize etmek amacıyla IronPDF'in bellek akışı yeteneklerini kullanın.

Güvenlik ve Kimlik Doğrulama

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

Yaygın Sorunların Giderilmesi

Blob depolama entegrasyon sorunlarıyla karşılaşırsanız, yaygın problemler için çözümler bulmak amacıyla IronPDF'in Azure sorun giderme kılavuzuna danışın. Resim özel sorunları için, resim işleme belgeleri çeşitli senaryoları ele almak için ayrıntılı kılavuz sağlar.

Sıkça Sorulan Sorular

Azure Blob Storage görselleriyle PDF'ler nasıl oluşturabilirim?

Azure Blob Storage görselleriyle PDF'ler oluşturmak için blob verilerini ikili format olarak alin, base64 string'ine dönüştürun, HTML img etiketine ekleyin ve HTML'yi PDF'ye dönüştürmek için IronPDF'nin ChromePdfRenderer'i kullanin. Bu yöntem, IronPDF'nin HTML'den PDF'ye dönüşüm özellikleriyle sorunsuz çalışirken resim kalitesini korur.

Azure Blob görüntüsunu en hizli şekilde PDF'ye nasıl işlerim?

En hizli yöntem, basit bir satirla IronPDF kullanarak: BlobContainerClient ile blob'u alin, Convert.ToBase64String() ile base64'e dönüştürun, img etiketi icine ekleyin ve IronPDF'nin ChromePdfRenderer().RenderHtmlAsPdf() metodu ile render edin.

Azure Blob Storage görselleri için neden doğrudan dosya referanslari kullanamam?

Azure Blob Storage ikili veri formatinda işleme gerektirir, doğrudan dosya referanslari yerine. Çözüm, görüntüleri base64 string'lerine dönüştürmek ve img etiketlerinde gommektir, ardından IronPDF, HTML'den PDF'ye dönüşüm yetenekleriyle bunu işleyebilir.

Azure Blob resimleri ile çalışmak için hangi NuGet paketlerine ihtiyaçim var?

Blob depolama işlemleri için Azure.Storage.Blobs NuGet paketine ihtiyaçiniz olacak, IronPDF ile birlikte PDF render işlemleri için. IronPDF, gomulu base64 görüntüleriyle HTML'yi PDF dokümanlarina dönüştürmek için ChromePdfRenderer'i saglar.

PDF'ler oluştururken güvenli Azure Blob erişiminde kimlik doğrulamayi nasıl yönetirim?

Azure Storage hesabi ile uygun kimlik doğrulama ve proje icinde baglantiyi ayarlayin. Karmasik kimlik doğrulama senaryolari için, IronPDF'nin HTTP istek basligi yeteneklerini, PDF'leri render ederken güvenli blob erişimini yönetmek için kesfedin.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget Indirmeler 18,332,619 | Sürüm: 2026.4 yeni yayınlandı
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizin PDF olduğunu izleyin.