C#'ta Azure Blob Storage Resimleriyle PDF Görüntüleme
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
-
IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin
PM > Install-Package IronPdf -
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"); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın
Asgari İş Akışı (5 adım)
- Azure Blob'da depolanan resimlerin görüntülenmesi için IronPDF'i indirin
- Blob çekme işlemine hakim olun
- Baytları base64 formatına dönüştürmek için
ToBase64Stringyöntemini kullanın - Base64 bilgisini
imgetiketi içinde dahil edin - HTML'yi PDF'ye işle
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
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
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")
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
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.

