如何在 C# | IronPDF 中使用資料 URI 嵌入圖片

Embed Images with DataURIs in C# & VB PDF Rendering

在 C# 中使用 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 文件中。

快速入門:使用 DataURI 在 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 for .NET 的 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# 中使用 DataURIs 嵌入圖片。" Dim Renderer As New ChromePdfRenderer() ' Render the HTML string Dim pdf = Renderer.RenderHtmlAsPdf(ImgHtml) pdf.SaveAs("datauri_example.pdf") ```

為什麼我應該使用 DataURIs 而不是檔案參考? 在生成 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,`。 - **JPEG**:最適合照片和具有多種顏色的複雜圖像。 使用`data:image/jpeg;base64,`。 - **GIF**:適合簡單的動畫或顏色有限的圖片。 使用`data:image/gif;base64,`。 - **SVG**:完美的可縮放向量圖形。 使用`data:image/svg+xml;base64,`。 - **WebP**:具有優異壓縮效果的現代格式。 使用`data:image/webp;base64,`。 以下範例說明如何處理不同的圖片格式: ```csharp using IronPdf; using System; using System.IO; public class MultiFormatImageEmbedding { public static void EmbedVariousImageFormats() { var renderer = new ChromePdfRenderer(); // Function to create DataURI from image file string CreateDataUri(string filePath, string mimeType) { var imageBytes = File.ReadAllBytes(filePath); return $"data:{mimeType};base64,{Convert.ToBase64String(imageBytes)}"; } // Create HTML with multiple image formats var html = $@" 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 Embed Images with DataURIs in C# & VB PDF Rendering "; 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 整合功能,以 Byte Array 的形式提供整個 HTML String 或 PDF 文件。 在建立動態產生和提供 PDF 的網路應用程式時,此技術非常有效。 對於進階的 PDF 操作技術,包括水印、數位簽章和表單建立,IronPDF 提供全面的文件和範例,以建立強大的 PDF 解決方案。

常見問題解答

什麼是 DataURIs,為什麼要使用 DataURIs 來產生 PDF?

DataURIs 是一種將資料直接以 base64 編碼字串的形式嵌入 HTML 或 CSS 程式碼的方案,省去了單獨的影像檔案。IronPdf 完全支援 DataURIs,因此非常適合雲端環境、分散式系統,或需要獨立 PDF 而無需外部檔案依賴時使用。

如何將圖片轉換成 DataURI 格式以嵌入 PDF?

使用 IronPDF,將影像轉換為 DataURI 包含三個步驟:首先,使用 System.IO.File.ReadAllBytes() 讀取圖片位元組。其次,使用 Convert.ToBase64String() 將位元組轉換為 base64。最後,將 base64 字串嵌入 HTML img 標籤中,格式為 'data:image/png;base64,[base64string]'。

以 DataURIs 嵌入圖片時,支援哪些圖片格式?

IronPDF 支援嵌入各種圖片格式作為 DataURIs,包括 PNG、JPEG、GIF 和 SVG。這種靈活性讓您可以使用不同的圖像類型,同時保持對 PDF 生成工作流程的完全控制。

我可以在單一 PDF 中使用 DataURIs 嵌入多張圖片嗎?

是的,IronPDF 允許您在單一 PDF 文件中使用 DataURIs 嵌入多張圖片。只需將每張圖片轉換為其 base64 表示形式,並在使用 IronPDF 的 ChromePdfRenderer 渲染之前將其包含在您的 HTML 標記中即可。

使用 DataURIs 取代檔案參照時會影響效能嗎?

雖然 DataURIs 會因為 base64 編碼而增加 HTML 字串的大小,但 IronPDF 能有效率地處理轉換。當您需要沒有外部依賴的獨立 PDF 時,尤其是在雲端或分散式環境中,這樣的取捨是值得的。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。

準備好開始了嗎?
Nuget 下載 17,012,929 | 版本: 2025.12 剛剛發布