Görüntüleri C# ve VB'de PDF Rendering ile DataURI'leri Beşır
IronPDF ile C# ve VB.NET'te DataURIs kullanarak resimleri doğrudan PDF belgelerine gömün, resim byte'larını base64 dizelerine çevirerek ve HTML işaretleme içinde satır içi olarak dahil ederek harici dosya bağımlılıklarını ortadan kaldırarak sorunsuz PDF render etme.
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, resimlerin, dosyaların ve yazı tiplerinin bir HTML belgesine bir dize olarak doğrudan eklenmesine olanak tanır.
Hızlı Başlangıç: VeriURI'ler Kullanarak PDF'lere Görüntü Gömme
IronPDF ile DataURIs kullanarak HTML içeriğini resimleri gömerek 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 PDF belgenize doğrudan bir resmi gömmenin nasıl yapılacağını gösteren basit bir örnek.
-
IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin
-
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 kullanarak resimleri doğrudan HTML işaretleme içine eklemek, harici dosyaları referans göstermeden içerir. 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üşüm işlemi, gömülü resimlerle profesyonel PDF oluşturmayı sağlayarak DataURIs'yi tam olarak destekler.
Bu süreç üç adım içerir: resim verilerini okuma, onu base64 formatına çevirme ve HTML img etiketi içinde gömme. 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")
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 kıyasla 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, raporlar, faturalar veya arşivleme veya e-posta ile dağıtım gerektiren belgeler oluşturmak için ideal kılar.
Üçü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 resim formatlarını destekler, 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 dosya boyutlarını optimize etmek için bu uygulamaları izleyin:
- 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
IronSuite, operasyonlarımızda kritik bir rol oynar. Bunlar, iş süreçlerinde verimliliği artıran, kat planları oluşturmak ve envanter yönetimini geliştirmek gibi araçlardır.
Gelişmiş Teknikler ve En İyi Uygulamalar
Üretim ortamlarında DataURIs ile çalışırken, aynı resimlerin tekrar tekrar kodlanmasını önlemek için önbellekleme mekanizmalarını uygulayın. Bu, paylaşılan kaynaklarla birden fazla PDF oluştururken özellikle önemlidir. Birden çok resmi işlerken daha iyi performans için IronPDF'nin async yeteneklerinden yararlanın.
Birçok resim içeren karmaşık belgeler için, kritik resimleri DataURIs olarak yerleştirirken, daha büyük, isteğe bağlı resimleri harici olarak referans göstermek için hibrit bir 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 projelerinizde IronPdf ad alanını dahil etmek için using IronPdf direktifini kullanın.
AddBookmarkAtEnd yöntemi, PDF anahatı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.

