如何在 C# 中渲染存储在 Azure Blob 存储中的图像 | IronPDF

使用 C# 中的 Azure Blob 存储图像渲染 PDF 要在 C# 中使用 Azure Blob Storage 图像渲染 PDF,需要以二进制形式检索 Blob 数据,将其转换为 base64 字符串,嵌入 HTML img 标记中,然后使用 IronPDF 的 ChromePdfRenderer 将 HTML 转换为 PDF。 Azure Blob Storage 是由微软 Azure 提供的基于云的存储服务。 它存储大量非结构化数据,如文本或二进制数据,可通过 HTTP 或 HTTPS 访问。 在 C# 中处理 PDF 时,[IronPDF 提供了强大的功能](https://ironpdf.com/features/create/),可处理各种图像格式和来源,包括存储在 Azure Blob Storage 等云服务中的图像。 要使用存储在 Azure Blob Storage 中的图像,您必须处理二进制数据格式,而不是直接引用文件。 解决方案是将图片转换为 base64 字符串并嵌入 img 标记中。 这种方法可与[IronPDF的HTML到PDF转换功能](https://ironpdf.com/tutorials/html-to-pdf/)无缝配合,保持图像质量和格式。 *as-heading:2(快速入门:使用 Azure Blob 存储图像渲染 PDF)* ```cs :title=Render an Azure Blob image into a PDF in one line! var blobBase64 = Convert.ToBase64String(new BlobContainerClient("conn","cont").GetBlobClient("img.jpg").DownloadContent().Value.Content.ToArray()); new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf($"Jpeg;base64,{blobBase64}\").SaveAs("blobImage.pdf"); ```

如何将 Azure Blob 图像转换为 HTML? --> <!--说明:显示代码执行输出或结果的截图 --> 使用包含 blobs 的容器设置 Azure 存储账户,然后在 C# 项目中处理身份验证和连接。 与 IronPDF 一起使用 Azure.Storage.Blobs NuGet 包。 对于复杂的身份验证场景,请探索 [IronPDF 的 HTTP 请求标头功能](https://ironpdf.com/how-to/http-request-header/),以实现安全的 blob 访问。 使用 `DownloadToStreamAsync` 方法将图像下载为流。 将流数据转换为 Base64 并嵌入 HTML img 标记中。 将 `imageTag` 变量合并到您的 HTML 文档中。 这种技术非常适用于创建带有动态加载的云存储图像的报告或文档。 ```csharp 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 = $"Jpeg;base64,{base64}\
"; // Use the imageTag in your HTML document as needed } ``` 在处理多张图片或不同格式的图片时,请利用 [IronPDF 对各种图片类型](https://ironpdf.com/how-to/add-images-to-pdfs/)的支持,包括 JPG、PNG、SVG 和 GIF。 base64 编码方法适用于所有这些格式。 ### 使用不同的图像格式 Azure Blob Storage 支持各种图像格式,IronPDF 在正确编码后可处理所有这些格式。 下面是一个可动态确定 MIME 类型的增强示例: ```csharp 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 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 $"\"{Path.GetFileNameWithoutExtension(blobClient.Name)}\"/"; } ```

如何将 HTML 转换为 PDF? <!--说明:说明代码概念的图表或截图 --> 使用 **ChromePdfRenderer** 的 `RenderHtmlAsPdf` 方法将 `imageTag` 转换为 PDF。 IronPDF 的 Chrome 渲染引擎可在转换过程中保持图像质量和定位。 为获得最佳效果,请配置[渲染选项](https://ironpdf.com/how-to/rendering-options/)以控制 PDF 输出质量。 以下是调用 `RenderHtmlAsPdf` 的方法: ```csharp :path=/static-assets/pdf/content-code-examples/how-to/images-azure-blob-storage-html-to-pdf.cs ``` 调整 `"htmlContent"` 变量,使其包含带有 `imageTag` 的实际 HTML 内容。 ### 完整工作示例 下面是一个将 Azure Blob Storage 检索与 IronPDF 渲染相结合的综合示例,包括错误处理和优化: ```csharp 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 ConvertBlobImagesToPdfAsync(string containerName, List blobNames) { var htmlBuilder = new StringBuilder(); htmlBuilder.Append(""); 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("

"); // Add spacing between images } catch (Exception ex) { // Log error and continue with other images Console.WriteLine($"Error processing blob {blobName}: {ex.Message}"); } } htmlBuilder.Append(""); // Convert the complete HTML to PDF return _renderer.RenderHtmlAsPdf(htmlBuilder.ToString()); } private async Task 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 $"\"; } 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" }; } } ``` ### 性能考虑 <!--说明:显示性能指标和优化结果的仪表板 --> 在处理大型图像或多个 blob 时,实施 [async 和多线程技术](https://ironpdf.com/how-to/async/) 以提高性能。 添加缓存机制,避免重复下载相同的 blob。 对于生产环境,尤其是 Azure 部署,请查看 [IronPDF 的 Azure 部署指南](https://ironpdf.com/how-to/azure/),了解最佳实践和配置建议。 对于内存密集型操作,请使用[IronPDF的内存流功能](https://ironpdf.com/how-to/pdf-memory-stream/)来优化资源使用。 ### 安全性和身份验证 访问 Azure Blob Storage 时确保正确的身份验证。 为增强安全性,请在访问受保护资源时执行 [ 定制 HTTP 标头](https://ironpdf.com/how-to/http-request-header/)。 考虑为包含 Azure blob 图像的敏感文档实施 [PDF 密码保护](https://ironpdf.com/how-to/pdf-permissions-passwords/)。 ### 常见问题的故障排除 如果遇到 blob 存储集成问题,请查阅 [IronPDF 的 Azure 故障排除指南](https://ironpdf.com/troubleshooting/blob-storage/),了解常见问题的解决方案。 对于图像的具体问题,[图像呈现文档](https://ironpdf.com/how-to/add-images-to-pdfs/)提供了处理各种情况的详细指导。

常见问题解答

如何使用存储在 Azure Blob Storage 中的图像生成 PDF?

要使用 Azure Blob Storage 图像生成 PDF,可以二进制形式检索 Blob 数据,将其转换为 base64 字符串,嵌入 HTML img 标签,然后使用 IronPDF 的 ChromePdfRenderer 将 HTML 转换为 PDF。这种方法可与 IronPDF 的 HTML 至 PDF 转换功能无缝配合,同时保持图像质量。

将 Azure Blob 图像渲染为 PDF 的最快方法是什么?

最快捷的方法是使用 IronPDF 的单行方法:使用 BlobContainerClient 获取 blob,使用 Convert.ToBase64String() 将其转换为 base64,将其嵌入 img 标签,然后使用 IronPDF 的 ChromePdfRenderer().RenderHtmlAsPdf() 方法进行渲染。

为什么不能在 PDF 文件中直接使用 Azure Blob Storage 图像的文件引用?

Azure Blob 存储需要处理二进制数据格式,而不是直接引用文件。解决方案是将图片转换为 base64 字符串并嵌入 img 标记中,然后 IronPDF 可以通过其 HTML 到 PDF 的转换功能进行处理。

在 PDF 中使用 Azure Blob 图像需要哪些 NuGet 软件包?

您需要使用 Azure.Storage.Blobs NuGet 包进行 blob 存储操作,同时使用 IronPDF 进行 PDF 渲染。IronPDF 提供 ChromePdfRenderer,用于将带有嵌入式 base64 图像的 HTML 转换为 PDF 文档。

生成 PDF 时,如何处理安全 Azure Blob 访问的身份验证?

在 C# 项目中使用正确的身份验证和连接设置 Azure Storage 帐户。对于复杂的身份验证场景,您可以探索 IronPDF 的 HTTP 请求头功能,以便在渲染 PDF 时处理安全 blob 访问。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 16,685,821 | 版本: 2025.12 刚刚发布