如何在 C# | IronPDF 中使用数据 URI 嵌入图片

在 C## & VB PDF 渲染中使用 DataURIs 嵌入图像。

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

使用 IronPDF 在 C# 和 VB.NET 中使用 DataURIs 将图像直接嵌入 PDF 文档,通过将图像字节转换为 base64 字符串并将其包含在 HTML 标记中以实现无缝 PDF 渲染,从而消除外部文件依赖性。

在处理 HTML 字符串和文档时,避免依赖资产目录往往至关重要。 data URI 方案提供了一个有效的解决方案。

数据 URI 方案可将数据直接嵌入 HTML 或 CSS 代码,无需单独文件。 DataURIs 允许将图像、文件和字体作为字符串直接注入 HTML 文档。

快速入门:使用DataURIs在PDF中嵌入图像

通过 IronPDF 使用 DataURIs 嵌入图像,将 HTML 内容转换为 PDF 文档。 本指南演示了如何使用简单、高效的代码呈现带有嵌入式图像的 PDF。 IronPDF 可将 HTML 转换为 PDF,同时保持图像的完整性。 下面是一个简单明了的示例,展示了如何使用 DataURI 以最少的代码将图像直接嵌入 PDF 文档。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronPDF

    PM > Install-Package IronPdf

  2. 复制并运行这段代码。

    new IronPdf.ChromePdfRenderer.StaticRenderHtmlAsPdf("<img src='data:image/png;base64,...' />").SaveAs("output.pdf");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronPDF,免费试用!
    arrow pointer


如何在 PDF 中使用 DataURIs 嵌入图片? <!--说明:说明代码概念的图表或截图 --> 使用 `DataURIs` 嵌入图片可直接在 HTML 标记中包含图片,而无需引用外部文件。 在云环境、分布式系统或确保所有资源都是独立的情况下生成 PDF 时,这种方法非常有效。 [IronPDF的HTML到PDF转换](https://ironpdf.com/how-to/html-string-to-pdf/)完全支持`DataURIs`,实现了嵌入图片的专业PDF创建。 翻译过程包括三个步骤:读取图像数据,将其转换为 base64 格式,并将其嵌入 HTML img 标签。 这种方法适用于各种图像格式,包括 PNG、JPEG、GIF 和 SVG,为 PDF 生成工作流程提供了灵活性。 无论是使用 [Azure Blob Storage 图像](https://ironpdf.com/how-to/images-azure-blob-storage/)还是本地文件,技术都必须保持一致。 ### 基本图像嵌入示例 <!--说明:说明代码概念的图表或截图 --> 本完整示例演示了如何使用 DataURIs 将图像嵌入 PDF: ```csharp :path=/static-assets/pdf/content-code-examples/how-to/datauris-image.cs ``` VB.NET 开发人员可以使用 IronPDF 的 VB.NET PDF 库实现相同的功能: ```vb Imports IronPdf Imports System ' Read byte from image file Dim pngBinaryData As Byte() = System.IO.File.ReadAllBytes("My_image.png") ' Convert bytes to base64 Dim ImgDataURI As String = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData) ' Import base64 to img tag Dim ImgHtml As String = $"{ImgDataURI} related to 在 C## & VB PDF 渲染中使用 DataURIs 嵌入图像。" Dim Renderer As New ChromePdfRenderer() ' Render the HTML string Dim pdf = Renderer.RenderHtmlAsPdf(ImgHtml) pdf.SaveAs("datauri_example.pdf") ```

为什么要使用 DataURI 而不是文件引用? 在生成 PDF 时,`DataURIs` 与传统的文件引用方式相比具有多项优势。 首先,它们消除了对外部文件的依赖,使 PDF 生成更加可靠和便携。 这在[Azure](https://ironpdf.com/get-started/azure/)或[AWS Lambda](https://ironpdf.com/get-started/aws/)等文件系统访问可能受限或对性能敏感的云环境中至关重要。 其次,`DataURIs` 可确保 PDF 完全独立。 在共享或分发生成的 PDF 时,不需要担心图像链接损坏或资源丢失。 这使得 `DataURIs` 成为生成报告、发票或需要存档或通过电子邮件发送的文档的理想选择。 第三,`DataURIs` 可以在某些情况下提高性能。 由于图像数据是直接嵌入 HTML 的,因此在渲染过程中不会出现额外的 HTTP 请求或文件系统操作。 这将加快 PDF 的生成速度,尤其是在处理多个小图片时。

支持哪些图像格式? IronPDF 通过 `DataURIs` 支持所有主流图像格式,为 PDF 生成工作流程提供了灵活性: - **PNG**:透明图像或边缘锐利的图形的理想选择。 使用<代码>data:image/png;base64,data:image/jpeg;base64, PNG Logo JPEG Photo SVG Icon "; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("multi_format_images.pdf"); } } ``` 对于高级图像处理,包括[在现有 PDF 中添加图像](https://ironpdf.com/how-to/add-images-to-pdfs/),IronPDF 提供了全面的支持。

Base64 编码如何影响文件大小? --> <!--说明:说明代码概念的图表或截图 --> Base64 编码可将数据大小增加约 33%。 Base64 仅使用 64 个 ASCII 字符来表示二进制数据,每 3 个字节的原始数据需要 4 个字符来表示。 虽然这会增加整体大小,但与独立文档的优势相比,对 PDF 生成的影响往往微乎其微。 在使用 `DataURIs` 时,请遵循以下做法优化文件大小: 1.**在编码前压缩图像**:在转换为 base64 之前使用工具或库优化图像文件 2.**选择合适的格式**:照片使用 JPEG 格式,透明图形使用 PNG 格式 3.**适当调整图片大小**:不要嵌入大于 PDF 输出所需的图片 4.**考虑 PDF 压缩**:生成后使用 IronPdf 的压缩功能 本例演示了嵌入前的图像优化: ```csharp using IronPdf; using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; public class OptimizedImageEmbedding { public static void EmbedOptimizedImage(string imagePath, int maxWidth = 800) { // Load and resize image if necessary using (var originalImage = Image.FromFile(imagePath)) { var resizedImage = originalImage; if (originalImage.Width > maxWidth) { var ratio = (double)maxWidth / originalImage.Width; var newHeight = (int)(originalImage.Height * ratio); resizedImage = new Bitmap(originalImage, maxWidth, newHeight); } // Convert to optimized JPEG using (var ms = new MemoryStream()) { var encoder = ImageCodecInfo.GetImageEncoders() .First(c => c.FormatID == ImageFormat.Jpeg.Guid); var encoderParams = new EncoderParameters(1); encoderParams.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.Quality, 85L); resizedImage.Save(ms, encoder, encoderParams); var imageBytes = ms.ToArray(); // Create DataURI var dataUri = $"data:image/jpeg;base64,{Convert.ToBase64String(imageBytes)}"; // Generate PDF var html = $@" {dataUri} related to 在 C## & VB PDF 渲染中使用 DataURIs 嵌入图像。 "; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("optimized_image.pdf"); } if (resizedImage != originalImage) resizedImage.Dispose(); } } } ``` ## 高级技术和最佳实践 在生产环境中使用 `DataURIs` 时,请实施缓存机制以避免重复编码相同的图像。 在生成具有共享资源的多个 PDF 时,这一点尤为重要。 利用 IronPDF 的 `async` 功能,在处理多个图像时获得更好的性能。 对于包含大量图片的复杂文档,应使用混合方法,将关键图片作为 `DataURIs` 嵌入其中,同时从外部引用较大的可选图片。 这就需要在文件大小合理的情况下平衡文件的自足性。 您还可以使用 IronPDF for .NET 的 ASP.NET MVC 集成将整个 HTML 字符串或 PDF 文档作为字节数组提供。 在构建动态生成和提供 PDF 的网络应用程序时,这种技术非常有效。 对于高级 PDF 操作技术,包括水印、数字签名和表单创建,IronPDF 提供全面的文档和示例,以构建强大的 PDF 解决方案。

常见问题解答

什么是 DataURIs,为什么要将其用于生成 PDF?

DataURIs 是一种将数据作为 base64 编码字符串直接嵌入 HTML 或 CSS 代码的方案,无需单独的图像文件。IronPdf 完全支持 DataURIs,因此非常适合云环境、分布式系统或需要独立 PDF 而不依赖外部文件的情况。

如何将图像转换为用于嵌入 PDF 的 DataURI 格式?

使用 IronPDF,将图像转换为 DataURI 涉及三个步骤:首先,使用 System.IO.File.ReadAllBytes() 读取图像字节。其次,使用 Convert.ToBase64String() 将字节转换为 base64。最后,将 base64 字符串嵌入 HTML img 标签,格式为 "data:image/png;base64,[base64string]"。

将图片嵌入 DataURI 时支持哪些图片格式?

IronPDF 支持嵌入各种图像格式作为 DataURI,包括 PNG、JPEG、GIF 和 SVG。这种灵活性使您可以处理不同的图像类型,同时保持对 PDF 生成工作流程的完全控制。

能否在一个 PDF 中使用 DataURIs 嵌入多个图像?

是的,IronPDF 允许您在单个 PDF 文档中使用 DataURIs 嵌入多个图像。只需将每张图片转换为其 base64 表示形式,并在使用 IronPDF 的 ChromePdfRenderer 渲染之前将其包含在 HTML 标记中即可。

使用 DataURIs 代替文件引用是否会影响性能?

虽然 DataURIs 会因 base64 编码而增加 HTML 字符串的大小,但 IronPDF 可以高效地处理转换。当您需要独立的 PDF 而不需要外部依赖性时,尤其是在云或分布式环境中,这种权衡是值得的。

Curtis Chau
技术作家

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

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

准备开始了吗?
Nuget 下载 17,012,929 | 版本: 2025.12 刚刚发布