Görüntüleri C# ve VB'de PDF Rendering ile DataURI'leri Beşır
IronPDF ile C# ve VB.NET'te DataURIs kullanarak görüntüleri doğrudan PDF belgelerine gömün, görüntü baytlarını base64 dizelerine dönüştürerek ve sorunsuz PDF oluşturma için bunları HTML işaretlemesine satır içi olarak ekleyerek harici dosya bağımlılıklarını ortadan kaldırın.
HTML dizeleri ve belgelerle çalışırken, varlık dizinlerine olan bağımlılıktan kaçınmak genellikle önemlidir. Veri URI düzeni etkili bir çözüm sağlar.
Veri URI düzeni, ayrı dosyalara ihtiyaç duymadan verileri doğrudan HTML veya CSS koduna gömer. DataURIs, görüntülerin, dosyaların ve yazı tiplerinin bir HTML belgesine doğrudan bir dize olarak eklenmesine olanak tanır.
Hızlı Başlangıç: VeriURI'ler Kullanarak PDF'lere Görüntü Gömme
IronPDF ile DataURIs kullanarak resimleri gömerek HTML içeriğini PDF belgelerine dönüştürün. Bu kılavuz, basit, verimli kod kullanarak gömülü görüntülerle PDF'leri nasıl işleteceğinizi gösterir. IronPDF, HTML'yi PDF'ye çevirirken görüntü bütünlüğünü korur. İşte, DataURI kullanarak minimum kodla bir görüntüyü PDF belgenize doğrudan nasıl yerleştirebileceğinizi gösteren basit bir örnek.
-
IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin
PM > Install-Package IronPdf -
Bu kod parçacığını kopyalayın ve çalıştırın.
new IronPdf.ChromePdfRenderer.StaticRenderHtmlAsPdf("<img src='data:image/png;base64,...' />").SaveAs("output.pdf"); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın
Asgari İş Akışı (5 adım)
- IronPDF'yu NuGet'ten İndirin
ReadAllBytesyöntemiyle görüntü baytlarını okuyun- Baytları base64 formatına dönüştürmek için
ToBase64Stringyöntemini kullanın - Base64 bilgisini
imgetiketi içinde dahil edin - HTML'yi PDF'ye işle
VeriURI'leri Kullanarak PDF'lere Görüntüleri Nasıl Gömülebilirim?
DataURIs kullanılarak resimlerin gömülmesi, harici dosyalara başvurmadan resimleri doğrudan HTML işaretlemesi içine dahil eder. Bu yaklaşım, bulut ortamlarında, dağıtık sistemlerde veya tüm kaynakların yerleşik olduğundan emin olmak için PDF oluştururken iyi çalışır. IronPDF'nin HTML'den PDF'ye dönüştürme özelliği DataURIs'yi tam olarak destekler ve gömülü resimler içeren Professional PDF'ler oluşturulmasını sağlar.
Süreç üç adımdan oluşur: görüntü verilerini okumak, bunları base64 formatına dönüştürmek ve bir HTML img etiketine gömmek. Bu yöntem, PNG, JPEG, GIF ve SVG dahil olmak üzere çeşitli görüntü formatlarıyla çalışır, böylece PDF oluşturma iş akışlarında esneklik sağlar. Bu teknik, Azure Blob Storage görüntüleri veya yerel dosyalarla çalışırken de tutarlıdır.
Temel Görüntü Gömme Örneği
Bu eksiksiz örnek, bir resmi DataURIs kullanarak PDF'ye gömmeyi gösterir:
: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");
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 geliştiricileri, IronPDF'nin VB.NET PDF kütüphanesi kullanarak aynı işlevselliği elde edebilir:
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")
Dosya Referansları Yerine Neden VeriURIs Kullanmalıyım?
DataURIs, PDF oluştururken geleneksel dosya referanslarına göre birçok avantaj sunar. Öncelikle, harici dosyalara olan bağımlılığı ortadan kaldırır, böylece PDF oluşturma daha güvenilir ve taşınabilir hale gelir. Bu, dosya sistemi erişiminin sınırlı olduğu veya performans açısından hassas olduğu Azure veya AWS Lambda gibi bulut ortamlarında çok önemlidir.
İkincisi, DataURIs, PDF'lerin tamamen bağımsız olmasını sağlar. Oluşturulan PDF'leri paylaşırken veya dağıtırken, kırık resim bağlantıları veya eksik kaynaklar endişe sebebi değildir. Bu, DataURIs'yi rapor, fatura veya arşivleme ya da e-posta dağıtımı gerektiren belgeler oluşturmak için ideal hale getirir.
Üçüncüsü, DataURIs belirli senaryolarda performansı artırabilir. Görüntü verileri HTML'de doğrudan gömüldüğü için, işleme sırasında ek HTTP istekleri veya dosya sistemi işlemleri gerçekleşmez. Bu, özellikle çok küçük görüntülerle uğraşırken daha hızlı PDF oluşturma sağlar.
Hangi Görüntü Formatları Destekleniyor?
IronPDF, DataURIs aracılığıyla tüm önemli görüntü formatlarını destekler ve PDF oluşturma iş akışlarında esneklik sağlar:
- PNG: Şeffaflık veya keskin kenarlı grafikler içeren görüntüler için idealdir.
data:image/png;base64,kullanın - JPEG: Birçok renk içeren fotoğraflar ve karmaşık görüntüler için en iyisidir.
data:image/jpeg;base64,kullanın - GIF: Basit animasyonlar veya sınırlı renk içeren görüntüler için uygundur.
data:image/gif;base64,kullanın - SVG: Ölçeklenebilir vektör grafikleri için mükemmeldir.
data:image/svg+xml;base64,kullanın - WebP: Mükemmel sıkıştırma ile modern format.
data:image/webp;base64,kullanın
Farklı görüntü formatlarını nasıl ele alacağınızı gösteren aşağıdaki örnek:
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");
}
}
Imports IronPdf
Imports System
Imports System.IO
Public Class MultiFormatImageEmbedding
Public Shared Sub EmbedVariousImageFormats()
Dim renderer As 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 Class
Mevcut PDF'lere resim ekleme dahil gelişmiş görüntü işleme için IronPDF kapsamlı destek sunar.
Base64 Kodlaması Dosya Boyutunu Nasıl Etkiler?
Base64 kodlaması veri boyutunu yaklaşık %33 artırır. Base64, yalnızca 64 ASCII karakteri kullanarak ikili verileri temsil eder ve orijinal verilerin her 3 baytını temsil etmek için 4 karakter gerektirir. Bu, toplam boyutu artırsa da, kendi içinde yerleşik belgelerin yararlarına kıyasla PDF oluşturma üzerindeki etkisi genellikle minimumdur.
DataURIs kullanırken aşağıdaki uygulamaları takip ederek dosya boyutlarını optimize edin:
- Görüntüleri kodlamadan önce sıkıştırın: Base64'e dönüştürmeden önce görüntü dosyalarını optimize etmek için araçlar veya kütüphaneler kullanın
- Uygun formatları seçin: Fotoğraflar için JPEG, şeffaflığa sahip grafikler için PNG kullanın
- Görüntüleri uygun şekilde yeniden boyutlandırın: PDF çıktısı için gerektiğinden daha büyük görüntüler gömmeyin
- PDF sıkıştırmayı düşünün: Oluşturma sonrası IronPDF'nin sıkıştırma özelliklerini kullanın
Bu örnek, gömme öncesi görüntü optimizasyonunu gösterir:
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();
}
}
}
Imports IronPdf
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO
Public Class OptimizedImageEmbedding
Public Shared Sub EmbedOptimizedImage(imagePath As String, Optional maxWidth As Integer = 800)
' Load and resize image if necessary
Using originalImage As Image = Image.FromFile(imagePath)
Dim resizedImage As Image = originalImage
If originalImage.Width > maxWidth Then
Dim ratio As Double = CDbl(maxWidth) / originalImage.Width
Dim newHeight As Integer = CInt(originalImage.Height * ratio)
resizedImage = New Bitmap(originalImage, maxWidth, newHeight)
End If
' Convert to optimized JPEG
Using ms As New MemoryStream()
Dim encoder As ImageCodecInfo = ImageCodecInfo.GetImageEncoders().First(Function(c) c.FormatID = ImageFormat.Jpeg.Guid)
Dim encoderParams As New EncoderParameters(1)
encoderParams.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 85L)
resizedImage.Save(ms, encoder, encoderParams)
Dim imageBytes As Byte() = ms.ToArray()
' Create DataURI
Dim dataUri As String = $"data:image/jpeg;base64,{Convert.ToBase64String(imageBytes)}"
' Generate PDF
Dim html As String = $"
<html>
<body>
<h1>Optimized Image Example</h1>
<img src='{dataUri}' style='max-width: 100%;' />
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("optimized_image.pdf")
End Using
If resizedImage IsNot originalImage Then
resizedImage.Dispose()
End If
End Using
End Sub
End Class
Gelişmiş Teknikler ve En İyi Uygulamalar
Üretim ortamlarında DataURIs ile çalışırken, aynı görüntülerin tekrar tekrar kodlanmasını önlemek için önbellekleme mekanizmaları uygulayın. Bu, paylaşılan kaynaklarla birden fazla PDF oluştururken özellikle önemlidir. Birden fazla görüntüyü işlerken daha iyi performans elde etmek için IronPDF'nin async özelliklerinden yararlanın.
Çok sayıda resim içeren karmaşık belgeler için, önemli resimler DataURIs olarak gömülürken, daha büyük ve isteğe bağlı resimler harici olarak referanslandırılan bir karma yaklaşım kullanın. Bu, kendi başına bütünleşik belgeler ile makul dosya boyutlarını dengeler.
IronPDF'nin ASP.NET MVC Entegrasyonu'nu kullanarak bir HTML Dizesi veya PDF belgesinin tamamını Bayt Dizisi olarak da sunabilirsiniz. Bu teknik, önceden oluşturulmuş ve PDF'ler olarak sunulan web uygulamaları oluştururken iyi çalışır.
Sayfa numaralandırma, dijital imza ve form oluşturma gibi gelişmiş PDF manipülasyon teknikleri için IronPDF, sağlam PDF çözümleri oluşturmak için kapsamlı dokümantasyon ve örnekler sunar.
C# veya VB.NET projelerinize IronPdf ad alanını eklemek için using IronPdf yönergesini kullanın.
AddBookmarkAtEnd yöntemi, PDF taslağına yeni yer imleri eklemek için kullanılır.
Sıkça Sorulan Sorular
DataURI'ler nedir ve neden PDF oluşturma için kullanılır?
DataURI'ler, verileri HTML veya CSS koduna base64 kodlanmış dizeler olarak doğrudan gömerek ayrı resim dosyalarına olan ihtiyacı ortadan kaldıran bir şemadır. IronPDF, DataURI'leri tam olarak destekler, bu da onları bulut ortamları, dağıtılmış sistemler veya dış dosya bağımlılıkları olmaksızın kendinden bağımsız PDF'lere ihtiyaç duyduğunuz durumlar için ideal hale getirir.
Bir resmi PDF gömme için DataURI formatına nasıl dönüştürebilirim?
IronPDF ile, bir resmi DataURI'ye dönüştürme üç adımda gerçekleşir: Öncelikle, resmi System.IO.File.ReadAllBytes() kullanarak baytlar olarak okuyun. İkinci olarak, baytları Convert.ToBase64String() ile base64'e dönüştürün. Son olarak, base64 dizgisini 'data:image/png;base64,[base64string]' formatında bir HTML img etiketine gömün.
Görüntüleri DataURI olarak gömerken desteklenen resim formatları nelerdir?
IronPDF, PNG, JPEG, GIF ve SVG dahil çeşitli resim formatlarını DataURI olarak gömmeyi destekler. Bu esneklik, farklı resim türleriyle çalışmanıza olanak tanırken PDF oluşturma iş akışınızı tamamen kontrol etmenizi sağlar.
Tek bir PDF'de birden fazla resmi DataURI kullanarak gömebilir miyim?
Evet, IronPDF tek bir PDF belgesinde birden fazla resmi DataURI kullanarak gömmenize izin verir. Her resmi base64 temsiline dönüştürün ve IronPDF'nin ChromePdfRenderer'ı ile işlemden önce HTML işaretlemenize dahil edin.
Dosya referansları yerine DataURI kullanmanın bir performans etkisi var mı?
DataURI'ler base64 kodlama nedeniyle HTML dizesinin boyutunu artırsa da, IronPDF dönüşümü verimli bir şekilde işler. Özellikle bulut veya dağıtılmış ortamlarda dış bağımlılıkları olmayan kendinden bağımsız PDF'lere ihtiyaç duyduğunuzda, bu değişiklik değerlidir.

