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 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.

  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 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")
$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")
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")
VB .NET

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
$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 dosya boyutlarını optimize etmek için bu uygulamaları izleyin:

  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
Icon Quote related to Base64 Kodlaması Dosya Boyutunu Nasıl Etkiler?

Bu türden favori kütüphanem IronPDF'dir. PDF dosyalarının hızlı ve verimli bir şekilde işlenmesine olanak tanır. Ayrıca, PDF/A formatına dışa aktarma ve dijital imzalama gibi birçok değerli özelliğe sahiptir.

Milan Jovanovic related to Base64 Kodlaması Dosya Boyutunu Nasıl Etkiler?

Milan Jovanovic

Microsoft MVP

Vaka çalışmasını görüntüle
Icon Quote related to Base64 Kodlaması Dosya Boyutunu Nasıl Etkiler?

IronOCR, manuel işleme maliyetinden yıllık 40.000 USD tasarruf etmemizi sağlıyor, üretkenliği artırıyor ve yüksek etkili görevler için kaynakları serbest bırakıyor. Kesinlikle tavsiye ederim.

Brent Matzelle related to Base64 Kodlaması Dosya Boyutunu Nasıl Etkiler?

Brent Matzelle

Teknoloji Müdürü, OPYN

Vaka çalışmasını görüntüle
Icon Quote related to Base64 Kodlaması Dosya Boyutunu Nasıl Etkiler?

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.

David Jones related to Base64 Kodlaması Dosya Boyutunu Nasıl Etkiler?

David Jones

Baş Yazılım Mühendisi, Agorus Build

Vaka çalışmasını görüntüle

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.

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,936,792 | Sürüm: 2026.7 yeni yayınlandı
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.