AzureブロブストレージイメージでPDFをC#でレンダリングする
Azure Blob Storage の画像を使用して C# で PDF をレンダリングするには、バイナリとして BLOB データを取得し、それを base64 文字列に変換し、HTML の img タグに埋め込み、IronPDFの ChromePdfRenderer を使用して HTML を PDF に変換します。
Azure Blob Storage は、Microsoft Azure が提供するクラウドベースのストレージサービスです。 HTTP または HTTPS 経由でアクセス可能な、テキストまたはバイナリデータなどの大量の非構造化データを保存します。 C#でPDFを扱う場合、IronPDFは、Azure Blob Storageのようなクラウドサービスに保存されたものを含め、様々な画像形式やソースを扱うための強力な機能を提供します。
Azure Blob Storageに保存された画像を使用するには、直接のファイル参照ではなく、バイナリデータ形式を扱う必要があります。 解決策は、画像を base64 文字列に変換し、img タグに埋め込むことです。 このアプローチは、IronPDFのHTMLからPDFへの変換機能とシームレスに連携し、画質とフォーマットを維持します。
-
1Install IronPDF with NuGet Package Manager
-
2このコード スニペットをコピーして実行します。
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");C# -
3実際の環境でテストするためにデプロイする
今日プロジェクトで IronPDF を使い始めましょう無料トライアル
最小限のワークフロー(5ステップ)
- Azureブロブに保存された画像をレンダリングするIronPDFをダウンロードする。
- ブロブを取得するプロセスを処理する
- バイトを base64 に変換するには、
ToBase64Stringメソッドを使用します。 imgタグにbase64の情報を含めてください。- HTMLをPDFにレンダリング
Azureブロブ画像をHTMLに変換するにはどうすればよいですか?
Blob を含むコンテナで Azure Storage アカウントを設定し、C# プロジェクトで認証と接続を処理します。 IronPDF と並行して Azure.Storage.Blobs NuGet パッケージを使用します。 複雑な認証シナリオについては、安全なブロブアクセスのためのIronPDFのHTTPリクエストヘッダ機能をご覧ください。
画像をストリームとしてダウンロードするには DownloadAsync メソッドを使用します。 ストリームデータを Base64 に変換し、HTML の img タグに埋め込みます。 HTML ドキュメントに htmlContent 変数を統合します。 このテクニックは、動的に読み込まれるクラウドストレージの画像を使用してレポートや文書を作成する場合に効果的です。
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")
Using stream As 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 As String = Convert.ToBase64String(array)
' Create an img tag with the base64-encoded string
Dim imageTag As String = $"<img src=""data:image/jpeg;base64,{base64}""/><br/>"
' Use the imageTag in your HTML document as needed
End Using
End Function複数の画像や異なるフォーマットを扱う場合は、JPG、PNG、SVG、GIFを含むさまざまな画像タイプに対するIronPDFのサポートを活用してください。 base64エンコーディング方式は、これらすべてのフォーマットで汎用的に機能します。
さまざまな画像フォーマットで作業する
Azure Blob Storageは様々な画像フォーマットに対応しており、IronPDFは適切にエンコードされた画像フォーマットに対応しています。 以下は、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 Function GetImageMimeType(ByVal 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(ByVal 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 FunctionHTMLをPDFに変換するにはどうすればよいですか?
ChromePdfRenderer の RenderHtmlAsPdf() メソッドを使用して htmlContent を PDF に変換します。 IronPDFのChromeレンダリングエンジンは変換中も画質と位置を維持します。 最適な結果を得るためには、レンダリングオプションを設定して、PDF出力の品質をコントロールしてください。
SaveAs() を呼び出す方法は次のとおりです。
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")bodyHtml と共に実際の HTML コンテンツを含めるように pdfOptions 変数を調整します。
完全な作業例
ここでは、エラー処理と最適化を含む、Azure Blob Storageの取得とIronPDFレンダリングを組み合わせた包括的な例を示します:
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 = New StringBuilder()
htmlBuilder.Append("<html><body style='margin: 20px;'>")
Dim blobServiceClient = 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 = 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
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パフォーマンスの考慮事項
大きな画像や複数のblobを扱う場合は、asyncとマルチスレッド技術を実装して、パフォーマンスを向上させてください。 同じブロブを繰り返しダウンロードしないように、キャッシュ機構を追加してください。
本番環境、特にAzureデプロイメントについては、IronPDFのAzureデプロイメントガイドでベストプラクティスと推奨設定を確認してください。 メモリを大量に消費する操作には、IronPDFのメモリストリーム機能を使用して、リソースの使用量を最適化してください。
セキュリティと認証
Azure Blob Storageにアクセスする際に、適切な認証を確保すること。 セキュリティを強化するために、保護されたリソースにアクセスするときは、カスタムHTTPヘッダーを実装してください。 Azure blob イメージを含む機密文書には、PDF パスワード保護の実装を検討してください。
よくある問題のトラブルシューティング
BLOBストレージの統合に関する問題が発生した場合は、IronPDFのAzureトラブルシューティングガイドを参照して、一般的な問題の解決策を確認してください。 画像固有の問題については、画像レンダリング・ドキュメントが、さまざまなシナリオの処理に関する詳細なガイダンスを提供しています。
DownloadToStreamAsync
imageTag
imageTag
RenderHtmlAsPdf
RenderHtmlAsPdf
"htmlContent"
imageTag
よくある質問
Azure Blob Storageに保存された画像でPDFを生成するには?
Azure Blob Storageの画像を使ってPDFを生成するには、BLOBデータをバイナリとして取得し、それをbase64文字列に変換してHTMLのimgタグに埋め込み、IronPDFのChromePdfRendererを使ってHTMLをPDFに変換します。この方法はIronPDFのHTMLからPDFへの変換機能とシームレスに動作し、画質を維持します。
Azure BlobイメージをPDFにレンダリングする最も速い方法は?
BlobContainerClientでblobを取得し、Convert.ToBase64String()でbase64に変換し、imgタグに埋め込み、IronPDFのChromePdfRenderer().RenderHtmlAsPdf()メソッドでレンダリングする。
PDFでAzure Blob Storageイメージのファイル参照を直接使用できないのはなぜですか?
Azure Blob Storageでは、直接ファイルを参照するのではなく、バイナリデータ形式を扱う必要があります。解決策は画像をbase64文字列に変換してimgタグに埋め込み、それをIronPDFのHTMLからPDFへの変換機能で処理することです。
PDFでAzure Blobイメージを扱うには、どのNuGetパッケージが必要ですか?
PDFレンダリング用のIronPDFと一緒にブロブストレージ操作用のAzure.Storage.Blobs NuGetパッケージが必要です。IronPDFはBase64画像を埋め込んだHTMLをPDFドキュメントに変換するChromePdfRendererを提供します。
PDFを生成する際、セキュアなAzure Blobアクセスの認証をどのように処理すればよいですか?
C# プロジェクトで、適切な認証と接続を使用して Azure Storage アカウントを設定します。複雑な認証シナリオについては、IronPDFのHTTPリクエストヘッダ機能を使用して、PDFレンダリング時のセキュアなブロブアクセスを処理することができます。
How does base64 encoding aid in using images from Azure Blob Storage with IronPDF?
Base64 encoding allows binary data to be converted into a text format. Images from Azure Blob Storage are encoded into base64, embedded in HTML, and rendered by IronPDF into a PDF.
What methods does IronPDF offer for image insertion within PDFs?
IronPDF provides features to embed images by rendering HTML content containing base64-encoded image data, supporting dynamic and versatile PDF document creation.
How can I enhance performance when generating PDFs with large Azure Blob Storage images using IronPDF?
Implement async processes and caching strategies to handle large images more efficiently. IronPDF supports techniques to reduce redundant downloads and optimize rendering time.
Is it possible to secure documents with Azure Blob images using IronPDF?
Yes, IronPDF allows setting PDF password protection for documents that include sensitive images retrieved from Azure Blob Storage, enhancing security and compliance.
What steps should be followed if encountering issues with Azure Blob and IronPDF?
Consult IronPDF's troubleshooting guides for blob storage integration issues. Common solutions involve verifying connection strings, blob path accuracy, and proper authentication.

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。