Bilder einbetten mit DataURIs in C# & VB PDF Rendering
Binden Sie Bilder direkt in PDF-Dokumente ein, indem Sie DataURIs in C# und VB.NET mit IronPDF verwenden. Dadurch entfallen externe Dateiabhängigkeiten, indem Bildbytes in Base64-Strings umgewandelt und direkt im HTML-Markup eingebettet werden, um ein nahtloses PDF-Rendering zu ermöglichen.
Bei der Arbeit mit HTML-Strings und -Dokumenten ist die Vermeidung von Abhängigkeiten von Asset-Verzeichnissen oft unerlässlich. Das Daten-URI-Schema bietet eine effektive Lösung.
Das Daten-URI-Schema bettet die Daten direkt in den HTML- oder CSS-Code ein, sodass keine separaten Dateien erforderlich sind. DataURIs ermöglicht es, Bilder, Dateien und Schriftarten direkt als Zeichenfolge in ein HTML-Dokument einzufügen.
Verwandeln Sie HTML-Inhalte in PDF-Dokumente, indem Sie Bilder mit DataURIs unter Verwendung von IronPDF einbetten. Dieser Leitfaden zeigt, wie man PDFs mit eingebetteten Bildern mit einfachem, effizientem Code rendert. IronPDF konvertiert HTML in PDF, wobei die Bildintegrität erhalten bleibt. Hier ist ein einfaches Beispiel, das zeigt, wie Sie ein Bild mit minimalem Code direkt in Ihr PDF-Dokument einbetten können, indem Sie DataURI verwenden.
-
1Install IronPDF with NuGet Package Manager
-
2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
new IronPdf.ChromePdfRenderer.StaticRenderHtmlAsPdf("<img src='data:image/png;base64,...' />").SaveAs("output.pdf");C# -
3Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronPDF in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Minimaler Arbeitsablauf (5 Schritte)
- IronPDF von NuGet herunterladen
- Lesen Sie die Bildbytes mit der Methode
ReadAllBytes - Verwenden Sie die Methode
ToBase64String, um Bytes in base64 zu konvertieren - Fügen Sie die base64-Informationen in den
img-Tag ein - Rendering des HTML in PDF
Wie kann ich Bilder mit DataURIs in PDFs einbetten?
Das Einbetten von Bildern mit DataURIs umfasst das direkte Einschließen von Bildern innerhalb des HTML-Markups, ohne auf externe Dateien zu verweisen. Dieser Ansatz eignet sich gut für die Erstellung von PDFs in Cloud-Umgebungen, verteilten Systemen oder wenn sichergestellt werden soll, dass alle Ressourcen in sich geschlossen sind. IronPDFs HTML-zu-PDF-Konvertierung unterstützt vollständig DataURIs und ermöglicht so die Erstellung professioneller PDFs mit eingebetteten Bildern.
Der Prozess umfasst drei Schritte: das Lesen der Bilddaten, das Konvertieren in das Base64-Format und das Einbetten in ein HTML-img-Tag. Diese Methode funktioniert mit verschiedenen Bildformaten, darunter PNG, JPEG, GIF und SVG, und bietet Flexibilität bei der PDF-Erstellung. Die Technik bleibt gleich, egal ob mit Azure Blob Storage Images oder lokalen Dateien gearbeitet wird.
Grundlegendes Beispiel für die Einbettung von Bildern
Dieses vollständige Beispiel zeigt, wie ein Bild mithilfe von DataURIs in eine PDF-Datei eingebettet werden kann:
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");Imports IronPdf
Imports System
' Read byte from image file
Private pngBinaryData = System.IO.File.ReadAllBytes("My_image.png")
' Convert bytes to base64
Private ImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)
' Import base64 to img tag
Private ImgHtml = $"<img src='{ImgDataURI}'>"
Private Renderer As New ChromePdfRenderer()
' Render the HTML string
Private pdf = Renderer.RenderHtmlAsPdf(ImgHtml)
pdf.SaveAs("datauri_example.pdf")VB.NET-Entwickler können die gleiche Funktionalität mit der VB.NET-PDF-Bibliothek von IronPDF erreichen:
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")
Warum sollte ich DataURIs anstelle von Dateiverweisen verwenden?
DataURIs bietet mehrere Vorteile gegenüber herkömmlichen Dateireferenzen bei der PDF-Erstellung. Erstens beseitigen sie Abhängigkeiten von externen Dateien und machen die PDF-Erstellung zuverlässiger und portabler. Dies ist besonders wichtig in Cloud-Umgebungen wie Azure oder AWS Lambda, wo der Zugriff auf das Dateisystem begrenzt oder leistungsabhängig sein kann.
Zweitens stellt DataURIs sicher, dass PDFs vollständig eigenständig sind. Bei der Weitergabe oder Verteilung der generierten PDFs sind defekte Bildlinks oder fehlende Ressourcen kein Problem. Dies macht DataURIs ideal für die Erstellung von Berichten, Rechnungen oder Dokumenten, die archiviert oder per E-Mail versendet werden müssen.
Drittens kann DataURIs in bestimmten Szenarien die Leistung verbessern. Da die Bilddaten direkt in HTML eingebettet sind, fallen beim Rendern keine zusätzlichen HTTP-Anfragen oder Dateisystemoperationen an. Dies führt zu einer schnelleren PDF-Erzeugung, insbesondere bei der Bearbeitung mehrerer kleiner Bilder.
Welche Bildformate werden unterstützt?
IronPDF unterstützt alle gängigen Bildformate durch DataURIs und bietet Flexibilität in PDF-Generierungs-Workflows:
- PNG: Ideal für Bilder mit Transparenz oder Grafiken mit scharfen Kanten. Verwenden Sie
data:image/png;base64, - JPEG: Am besten geeignet für Fotos und komplexe Bilder mit vielen Farben. Verwenden Sie
data:image/jpeg;base64, - GIF: Geeignet für einfache Animationen oder Bilder mit wenigen Farben. Verwenden Sie
data:image/gif;base64, - SVG: Perfekt für skalierbare Vektorgrafiken. Verwenden Sie
data:image/svg+xml;base64, - WebP: Modernes Format mit hervorragender Komprimierung. Verwenden Sie
data:image/webp;base64,
Das folgende Beispiel zeigt, wie man mit verschiedenen Bildformaten umgeht:
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");
}
}Imports IronPdf
Imports System
Imports System.IO
Public Class MultiFormatImageEmbedding
Public Shared Sub EmbedVariousImageFormats()
Dim renderer = New ChromePdfRenderer()
' Function to create DataURI from image file
Function CreateDataUri(filePath As String, mimeType As String) As String
Dim imageBytes = File.ReadAllBytes(filePath)
Return $"data:{mimeType};base64,{Convert.ToBase64String(imageBytes)}"
End Function
' Create HTML with multiple image formats
Dim 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>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("multi_format_images.pdf")
End Sub
End ClassIronPDF bietet umfassende Unterstützung für fortgeschrittene Bildbearbeitung, einschließlich Hinzufügen von Bildern zu bestehenden PDFs.
Wie wirkt sich die Base64-Kodierung auf die Dateigröße aus?
Die Base64-Kodierung erhöht die Datengröße um etwa 33 %. Base64 stellt binäre Daten mit nur 64 ASCII-Zeichen dar, wobei 4 Zeichen für jeweils 3 Bytes der Originaldaten benötigt werden. Dadurch erhöht sich zwar der Gesamtumfang, aber die Auswirkungen auf die PDF-Erstellung sind im Vergleich zu den Vorteilen von in sich geschlossenen Dokumenten oft minimal.
Optimieren Sie die Dateigrößen bei der Verwendung von DataURIs, indem Sie diese Praktiken befolgen:
- Komprimieren Sie Bilder vor der Kodierung: Verwenden Sie Werkzeuge oder Bibliotheken zur Optimierung von Bilddateien vor der Konvertierung in Base64
- Wählen Sie geeignete Formate: Verwenden Sie JPEG für Fotos, PNG für Grafiken mit Transparenz
- Größe der Bilder angemessen ändern: Betten Sie keine größeren Bilder ein als für die PDF-Ausgabe erforderlich
- Komprimierung von PDF-Dateien in Betracht ziehen: Verwenden Sie die Komprimierungsfunktionen von IronPDF nach der Erstellung
Dieses Beispiel demonstriert die Bildoptimierung vor dem Einbetten:
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();
}
}
}Imports IronPdf
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO
Public Class OptimizedImageEmbedding
Public Shared Sub EmbedOptimizedImage(ByVal imagePath As String, Optional ByVal maxWidth As Integer = 800)
' Load and resize image if necessary
Using originalImage = Image.FromFile(imagePath)
Dim resizedImage = originalImage
If originalImage.Width > maxWidth Then
Dim ratio = CDbl(maxWidth) / originalImage.Width
Dim newHeight = CInt(originalImage.Height * ratio)
resizedImage = New Bitmap(originalImage, maxWidth, newHeight)
End If
' Convert to optimized JPEG
Using ms = New MemoryStream()
Dim encoder = ImageCodecInfo.GetImageEncoders().First(Function(c) c.FormatID = ImageFormat.Jpeg.Guid)
Dim encoderParams = New EncoderParameters(1)
encoderParams.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 85L)
resizedImage.Save(ms, encoder, encoderParams)
Dim imageBytes = ms.ToArray()
' Create DataURI
Dim dataUri = $"data:image/jpeg;base64,{Convert.ToBase64String(imageBytes)}"
' Generate PDF
Dim html = $"
<html>
<body>
<h1>Optimized Image Example</h1>
<img src='{dataUri}' style='max-width: 100%;' />
</body>
</html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("optimized_image.pdf")
End Using
If resizedImage IsNot originalImage Then
resizedImage.Dispose()
End If
End Using
End Sub
End ClassDie Iron Suite spielt eine entscheidende Rolle in unseren Operationen. Diese Werkzeuge erhöhen die Effizienz im gesamten Unternehmen, einschließlich der Erstellung von Grundrissen und der Verbesserung des Bestandsmanagements.
Fortgeschrittene Techniken und bewährte Praktiken
Wenn Sie mit DataURIs in Produktionsumgebungen arbeiten, implementieren Sie Caching-Mechanismen, um zu vermeiden, dass die gleichen Bilder wiederholt kodiert werden. Dies ist besonders wichtig, wenn mehrere PDFs mit gemeinsamen Ressourcen erstellt werden. Nutzen Sie die async-Fähigkeiten von IronPDF für eine bessere Leistung bei der Verarbeitung mehrerer Bilder.
Für komplexe Dokumente mit vielen Bildern verwenden Sie einen hybriden Ansatz, bei dem kritische Bilder als DataURIs eingebettet werden, während größere, optionale Bilder extern referenziert werden. Dabei werden in sich geschlossene Dokumente mit angemessenen Dateigrößen berücksichtigt.
Mit der ASP.NET MVC-Integration von IronPDF können Sie auch einen ganzen HTML-String oder ein PDF-Dokument als Byte-Array bereitstellen. Diese Technik eignet sich gut für die Erstellung von Webanwendungen, die PDFs dynamisch erzeugen und bereitstellen.
Für fortgeschrittene PDF-Manipulationstechniken, einschließlich Wasserzeichen, digitale Signaturen und Formularerstellung, bietet IronPDF eine umfassende Dokumentation und Beispiele für die Erstellung robuster PDF-Lösungen.
Verwenden Sie die using IronPdf-Direktive, um das IronPdf-Namespace in Ihre C#- oder VB.NET-Projekte einzuschließen.
Die AddBookmarkAtEnd-Methode wird verwendet, um neue Lesezeichen zum PDF-Inhaltsverzeichnis hinzuzufügen.
Häufig gestellte Fragen
Was sind DataURIs und warum sollte man sie für die PDF-Erstellung verwenden?
DataURIs sind ein Schema, mit dem Daten direkt in HTML- oder CSS-Code als base64-kodierte Strings eingebettet werden, sodass keine separaten Bilddateien erforderlich sind. IronPDF unterstützt DataURIs in vollem Umfang und ist damit ideal für Cloud-Umgebungen, verteilte Systeme oder wenn Sie in sich geschlossene PDFs ohne externe Dateiabhängigkeiten benötigen.
Wie konvertiere ich ein Bild in ein DataURI-Format für die PDF-Einbettung?
Mit IronPDF umfasst die Konvertierung eines Bildes in DataURI drei Schritte: Erstens: Lesen der Bildbytes mit System.IO.File.ReadAllBytes(). Zweitens werden die Bytes mit Convert.ToBase64String() in base64 konvertiert. Schließlich wird der base64-String in ein HTML-img-Tag mit dem Format 'data:image/png;base64,[base64string]' eingebettet.
Welche Bildformate werden beim Einbetten von Bildern als DataURIs unterstützt?
IronPDF unterstützt die Einbettung verschiedener Bildformate als DataURIs, einschließlich PNG, JPEG, GIF und SVG. Diese Flexibilität ermöglicht es Ihnen, mit verschiedenen Bildtypen zu arbeiten und gleichzeitig die volle Kontrolle über den PDF-Generierungsworkflow zu behalten.
Kann ich mehrere Bilder mit DataURIs in eine einzige PDF-Datei einbetten?
Ja, IronPDF ermöglicht das Einbetten mehrerer Bilder mithilfe von DataURIs in ein einzelnes PDF-Dokument. Konvertieren Sie einfach jedes Bild in seine base64-Darstellung und fügen Sie es in Ihr HTML-Markup ein, bevor Sie es mit dem ChromePdfRenderer von IronPDF rendern.
Hat die Verwendung von DataURIs anstelle von Dateiverweisen Auswirkungen auf die Leistung?
Während DataURIs die Größe der HTML-Zeichenfolge aufgrund der base64-Kodierung erhöht, wickelt IronPDF die Konvertierung effizient ab. Der Kompromiss lohnt sich, wenn Sie in sich geschlossene PDFs ohne externe Abhängigkeiten benötigen, insbesondere in Cloud- oder verteilten Umgebungen.
What are the steps to convert an image to a DataURI for embedding?
To convert an image to a DataURI, read the image bytes using a method like ReadAllBytes, convert these bytes to a base64 string with ToBase64String, then form a DataURI by prepending the mime type, such as 'data:image/png;base64,'. Use this as the src in an HTML img tag within your PDF rendering code.
How can I optimize images when using DataURIs in PDFs?
Optimize images by compressing them before encoding to base64, choosing the appropriate image format, and resizing images to reduce unnecessary file size. Additionally, IronPDF's PDF compression features can help manage file sizes after generation.
Can I handle multiple image formats in a single PDF using DataURIs with IronPDF?
Yes, you can handle multiple image formats by creating DataURIs for each format and including them within an HTML document. IronPDF can render this HTML into a PDF, preserving each image format such as PNG, JPEG, and SVG within the same document.
What are the advantages of using IronPDF for embedding images with DataURIs?
IronPDF simplifies the process of embedding images with DataURIs by offering smooth conversion of HTML with inline images to PDFs. It supports reliable PDF generation, including advanced features like compression and dynamic content processing suitable for professional use.
How can I improve performance when generating PDFs with multiple images?
Improve performance by caching encoded DataURI images, using async capabilities, and considering a hybrid approach where critical images are embedded while larger images are referenced externally. This keeps PDFs efficient without compromising on essential embedded content.

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.