IronPDF 操作指南 DataUris和圖片嵌入 Embed Images with DataURIs in C# & VB PDF Rendering Curtis Chau 更新:2026年1月10日 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 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 建立 PDF 檔案: 使用 NuGet 套件管理器安裝 IronPDF PM > Install-Package IronPdf 複製並運行這段程式碼。 new IronPdf.ChromePdfRenderer.StaticRenderHtmlAsPdf("<img src='data:image/png;base64,...' />").SaveAs("output.pdf"); 部署到您的生產環境進行測試 立即開始在您的專案中使用 IronPDF,免費試用! 免費試用30天 最小工作流程(5 個步驟) 從 NuGet 下載 IronPDF 使用 ReadAllBytes 方法讀取影像位元組 使用 ToBase64String 方法將位元組轉換為 base64 在 img 標籤中包含 base64 訊息 將 HTML 渲染為 PDF 如何在 PDF 中使用 DataURIs 嵌入圖片? 使用 DataURIs 嵌入圖片,可將圖片直接包含在 HTML 標記中,而無需引用外部檔案。 在雲端環境、分散式系統中產生 PDF,或確保所有資源自成一格時,此方法非常有效。 IronPDF的HTML至PDF轉換完全支援DataURIs,能夠以內嵌圖片的方式製作專業的PDF。 這個過程包含三個步驟:讀取圖片資料、轉換成 base64 格式,以及將它嵌入 HTML img 標籤中。 此方法適用於各種圖像格式,包括 PNG、JPEG、GIF 和 SVG,為 PDF 生成工作流程提供彈性。 無論是使用 Azure Blob Storage 影像或本機檔案,技術都必須保持一致。 基本圖片嵌入範例 本完整範例示範如何使用 DataURIs 將圖片嵌入 PDF: :path=/static-assets/pdf/content-code-examples/how-to/datauris-image.cs using IronPdf; using System; // Read byte from image file var pngBinaryData = System.IO.File.ReadAllBytes("My_image.png"); // Convert bytes to base64 var ImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData); // Import base64 to img tag var ImgHtml = $"<img src='{ImgDataURI}'>"; ChromePdfRenderer Renderer = new ChromePdfRenderer(); // Render the HTML string var pdf = Renderer.RenderHtmlAsPdf(ImgHtml); pdf.SaveAs("datauri_example.pdf"); $vbLabelText $csharpLabel VB.NET 開發人員可以使用 IronPDF for .NET 的 VB.NET PDF 函式庫實現相同的功能: 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 = $"<img src='{ImgDataURI}'>" Dim Renderer As New ChromePdfRenderer() ' Render the HTML string Dim pdf = Renderer.RenderHtmlAsPdf(ImgHtml) pdf.SaveAs("datauri_example.pdf") 為什麼我應該使用 DataURIs 而不是檔案參考? 在生成 PDF 時,DataURIs 與傳統的檔案參考相比具有多項優勢。 首先,它們消除了對外部檔案的依賴,使 PDF 生成更可靠、更便於攜帶。 在 Azure 或 AWS Lambda 等檔案系統存取可能受限或對效能敏感的雲端環境中,這一點至關重要。 其次,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,。 以下範例說明如何處理不同的圖片格式: 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 = $@" <html> <body> <h1>Multi-Format Image Test</h1> <img src='{CreateDataUri("logo.png", "image/png")}' alt='PNG Logo' /> <img src='{CreateDataUri("photo.jpg", "image/jpeg")}' alt='JPEG Photo' /> <img src='{CreateDataUri("icon.svg", "image/svg+xml")}' alt='SVG Icon' /> </body> </html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("multi_format_images.pdf"); } } 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 = $@" <html> <body> <h1>Multi-Format Image Test</h1> <img src='{CreateDataUri("logo.png", "image/png")}' alt='PNG Logo' /> <img src='{CreateDataUri("photo.jpg", "image/jpeg")}' alt='JPEG Photo' /> <img src='{CreateDataUri("icon.svg", "image/svg+xml")}' alt='SVG Icon' /> </body> </html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("multi_format_images.pdf"); } } $vbLabelText $csharpLabel 對於進階的圖片處理,包括 在現有的 PDF 中加入圖片,IronPDF 提供了全面的支援。 Base64 編碼如何影響檔案大小? Base64 編碼會增加約 33% 的資料大小。 Base64 僅使用 64 個 ASCII 字元來表示二進位資料,每 3 位元組原始資料需要 4 個字元來表示。 雖然這樣會增加整體大小,但相較於獨立文件的優點,對 PDF 生成的影響通常微乎其微。 在使用 DataURIs 時,請遵循下列實務,以最佳化檔案大小: 1.在編碼前壓縮影像:在轉換為 base64 之前,使用工具或函式庫來優化影像檔案 2.選擇適當的格式:照片使用 JPEG 格式,有透明度的圖形使用 PNG 格式 3.適當調整圖片大小:不要嵌入大於 PDF 輸出所需的圖片 4.考慮 PDF 壓縮:生成後使用 IronPdf 的壓縮功能 本範例展示嵌入前的影像最佳化: 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 = $@" <html> <body> <h1>Optimized Image Example</h1> <img src='{dataUri}' style='max-width: 100%;' /> </body> </html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("optimized_image.pdf"); } if (resizedImage != originalImage) resizedImage.Dispose(); } } } 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 = $@" <html> <body> <h1>Optimized Image Example</h1> <img src='{dataUri}' style='max-width: 100%;' /> </body> </html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("optimized_image.pdf"); } if (resizedImage != originalImage) resizedImage.Dispose(); } } } $vbLabelText $csharpLabel 進階技術與最佳實務 在生產環境中使用 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 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 準備好開始了嗎? Nuget 下載 17,527,568 | 版本: 2026.2 剛剛發布 免費 NuGet 下載 總下載量:17,527,568 查看許可證