Veri URI'ları ile C# ile Görüntüler Nasıl Gömülür | IronPDF

Görüntüleri C# ve VB'de PDF Rendering ile DataURI'leri Beşır

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

  1. IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPdf
  2. 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");
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın

    arrow pointer


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")
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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:

  1. 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
  2. Uygun formatları seçin: Fotoğraflar için JPEG, şeffaflığa sahip grafikler için PNG kullanın
  3. 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
  4. 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
$vbLabelText   $csharpLabel

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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,014,616 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.