C#'da Veri URI'leriyle Görselleri Nasıl Gömülür | IronPDF

C# ve VB'de PDF İşleme için VeriURIs ile Görüntüleri Gömme

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

IronPDF ile C# ve VB.NET kullanarak resimleri PDF belgelerine doğrudan gömün, görsel baytlarını base64 dizelerine çevirerek ve onları HTML biçimlendirme içine dahil ederek harici dosya bağımlılıklarını ortadan kaldırın, böylece kesintisiz PDF oluşturma sağlanır. DataURIs kullandığınızda.

HTML dizgeleri ve belgelerle çalışırken, varlık dizinlerine olan bağımlılıktan kaçınmak genellikle gereklidir. veri URI şeması, etkili bir çözüm sunar.

Veri URI şeması, HTML veya CSS kodu içine doğrudan veri gömer, ayrı dosya gereksinimini ortadan kaldırır. DataURIs, görsellerin, dosyaların ve yazı tiplerinin bir HTML belgesine doğrudan bir dize olarak eklenmesine izin verir.

Hızlı Başlangıç: VeriURIs Kullanarak PDF'lere Görüntü Gömme

IronPDF kullanarak DataURIs ile resimleri gömerek HTML içeriğini PDF belgelerine dönüştürün. Bu kılavuz, yerleşik görüntülerle PDF oluşturmayı basit ve verimli kod kullanarak nasıl yapacağınızı göstermektedir. IronPDF, görüntü bütünlüğünü korurken HTML'yi PDF'e dönüştürür. DataURI ile çok az kod kullanarak resminizi PDF belgenize doğrudan nasıl gömebileceğinizi gösteren basit bir örnek.

  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronPdf yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçasını kopyalayıp çalıştırın.

    new IronPdf.ChromePdfRenderer.StaticRenderHtmlAsPdf("<img src='data:image/png;base64,...' />").SaveAs("output.pdf");
  3. Canlı ortamınızda test etmek için dağıtın

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

    arrow pointer


PDF'lerde DataURIs Kullanarak Görüntüleri Nasıl Gömülür?

DataURIs kullanarak resim gömme, görselleri dış dosyalara referans vermeden doğrudan HTML biçimlendirmesi içinde içerir. Bu yaklaşım, bulut ortamlarında, dağıtık sistemlerde PDF oluştururken veya tüm kaynakların kendi içerisinde olması gerektiği durumlarda iyi çalışır. IronPDF'in HTML'den PDF'ye dönüştürmesi, gömülü görseller ile profesyonel PDF oluşturmayı mümkün kılarak DataURIs'yi tamamen destekler.

Bu süreç üç adım içerir: görüntü verisinin okunması, base64 formatına dönüştürülmesi ve bir HTML img etiketi içerisine gömme. Bu yöntem, PNG, JPEG, GIF ve SVG dahil olmak üzere çeşitli görüntü formatlarıyla çalışır ve PDF oluşturma iş akışlarında esneklik sağlar. Teknik, Azure Blob Storage görüntüleri veya yerel dosyalarla çalışırken tutarlıdır.

Temel Görüntü Gömme Örneği

Bu eksiksiz örnek, bir görüntünün DataURIs kullanılarak bir PDF'ye nasıl gömüleceğini 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 de aynı işlevselliği IronPDF'nin VB.NET PDF kütüphanesi kullanarak 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 DataURIs Kullanmalı mıyım?

DataURIs, PDF oluştururken geleneksel dosya referanslarına üstün birçok avantaj sunar. Öncelikle, harici dosyalara bağımlılığı ortadan kaldırırlar, bu da PDF oluşturmayı daha güvenilir ve taşınabilir hale getirir. Bu, dosya sistemine erişimin sınırlı veya performans duyarlı olabileceği Azure veya AWS Lambda gibi bulut ortamlarında hayati öneme sahiptir.

İkinci olarak, DataURIs PDF'lerin tamamen kendi kendine yeten olmasını sağlar. Üretilen PDF'leri paylaşırken veya dağıtırken, bozuk resim bağlantıları veya eksik kaynaklar sorun teşkil etmez. Bu, DataURIs'yı raporlar, faturalar veya arşivleme ya da e-posta dağıtımı gerektiren belgelerin oluşturulması için ideal hale getirir.

Üçüncü olarak, DataURIs belirli senaryolarda performansı artırabilir. Görüntü verisi doğrudan HTML'de gömüldüğü için, rendering sırasında ek HTTP istekleri veya dosya sistemi işlemleri gerçekleşmez. Bu, özellikle birden fazla küçük görüntü ile çalışılırken daha hızlı PDF oluşturulmasına yol açar.

Hangi Resim Formatları Destekleniyor?

IronPDF, DataURIs ile tüm büyük imaj formatlarını destekler, böylece PDF oluşturma iş akışlarına esneklik sağlar:

  • PNG: Şeffaflık veya keskin kenarlara sahip grafikler için idealdir. Kullanın data:image/png;base64,
  • JPEG: Fotoğraflar ve çok renkli karmaşık görseller için en iyisidir. Kullanın data:image/jpeg;base64,
  • GIF: Basit animasyonlar veya sınırlı renkli görseller için uygundur. Kullanın data:image/gif;base64,
  • SVG: Ölçeklenebilir vektör grafikleri için mükemmeldir. Kullanın data:image/svg+xml;base64,
  • WebP: Mükemmel sıkıştırma sunan modern format. Kullanın data:image/webp;base64,

Aşağıdaki örnek, farklı görüntü formatlarının nasıl ele alınacağını gösterir:

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

İleri düzey görüntü işleme için, mevcut PDF'lere görüntü ekleme dahil, IronPDF kapsamlı destek sağlar.

Base64 Kodlaması Dosya Boyutunu Nasıl Etkiler?

Base64 kodlaması veri boyutunu yaklaşık %33 artırır. Base64, ikili veriyi yalnızca 64 ASCII karakteri kullanarak temsil eder ve orijinal verinin her 3 byte'ını temsil etmek için 4 karakter gerektirir. Bu genel boyutu artırsa da, kendi içerisinde yeterli olan belgelerin avantajlarına kıyasla PDF oluşturma üzerindeki etkileri genellikle minimaldir.

DataURIs kullanırken dosya boyutlarını optimize etmek için bu uygulamaları takip edin:

  1. Görüntüleri kodlamadan önce sıkıştırın: Görüntü dosyalarını base64'ye dönüştürmeden önce optimize etmek için araçlar veya kütüphaneler kullanın
  2. Uygun formatları seçin: Fotoğraflar için JPEG, şeffaflık içeren grafikler için PNG kullanın
  3. Görüntüleri uygun boyutlandırın: PDF çıktısı için gerekli olandan daha büyük görselleri gömmeyin
  4. PDF sıkıştırmayı düşünün: Oluşturulduktan sonra IronPDF'nin sıkıştırma özelliklerini kullanın

Bu örnek, gömmeden önce 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

İleri Düzey Teknikler ve En İyi Uygulamalar

DataURIs ile üretim ortamlarında çalışırken, aynı görselleri tekrar tekrar kodlamaktan kaçınmak için önbellekleme mekanizmalarını uygulayın. Bu, paylaşılan kaynaklara sahip birden fazla PDF üretildiğinde özellikle önemlidir. Birden fazla görseli işlerken daha iyi performans için IronPDF'in async yeteneklerinden yararlanın.

Birçok resim içeren karmaşık belgeler için, kritik öneme sahip görsellerin DataURIs olarak gömüldüğü, daha büyük ve isteğe bağlı görsellerin ise harici olarak referans verildiği hibrit bir yaklaşım kullanın. Bu, kendi içerisinde yeterli olan belgelerle makul dosya boyutlarını dengelemektedir.

IronPDF'nin ASP.NET MVC Entegrasyonu'nu kullanarak bir HTML Dizesini veya PDF belgesini Byte Dizi olarak tümden sunabilirsiniz. Bu teknik, PDF'leri dinamik olarak üreten ve sunan web uygulamaları oluştururken iyi çalışır.

İleri düzey PDF manipülasyon teknikleri için, damgalama, dijital imzalar ve form oluşturma dahil, IronPDF sağlam PDF çözümleri oluşturmak için kapsamlı dokümantasyon ve örnekler sunar.

Sıkça Sorulan Sorular

DataURIs nedir ve PDF oluşturma için neden kullanılır?

DataURIs, verileri doğrudan HTML veya CSS koduna base64 kodlu dizeler olarak gömen bir şemadır ve ayrı resim dosyalarına ihtiyaç duymayı ortadan kaldırır. IronPDF, DataURIs'i tamamen destekler ve onları bulut ortamları, dagıtılmış sistemler veya harici dosya bağımlılıkları olmadan kendi kendine yeten PDF'lere ihtiyaç duydugunuzda ideal hale getirir.

Resmi PDF gömme için DataURI formatına nasıl dönüştürürüm?

IronPDF ile, bir resmi DataURI'ye dönüştürmek üç adım içerir: İlk olarak, resim baytlarını System.IO.File.ReadAllBytes() kullanarak okuyun. İkinci olarak, baytları Convert.ToBase64String() kullanarak base64'e dönüştürün. Son olarak, base64 dizisini 'data:image/png;base64,[base64string]' formatında bir HTML img etiketinde gömün.

Resimleri DataURIs olarak gömerken hangi resim formatları desteklenir?

IronPDF, PNG, JPEG, GIF ve SVG dahil olmak üzere çeşitli resim formatlarını DataURIs olarak gömeyi destekler. Bu esneklik, farklı resim türleriyle çalışmanıza izin verirken, PDF oluşturma iş akısınız üzerinde tam kontrol saglar.

Tek bir PDF'de birden fazla resmi DataURIs kullanarak gömebilir miyim?

Evet, IronPDF, tek bir PDF belgesinde birden fazla resmi DataURIs kullanarak gömmenize izin verir. Her resmi base64 temsilcisine dönüştürün ve IronPDF'nin ChromePdfRenderer'ı ile render etmeden önce bunları HTML işaretlemeniz içine dahil edin.

Veri URI'lerini dosya referansları yerine kullanmanın bir performans etkisi var mı?

Veri URI'leri, base64 kodlama nedeniyle HTML dizesi boyutunu artırsa da, IronPDF dönüşümü verimli bir şekilde yönetir. Kendi kendine yeten PDF'lere ihtiyaç duydugunuzda, özellikle bulut veya dagıtılmış ortamlarda dış bağımlılıklardan kaçınma kararsızlığı değerlidir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget Indirmeler 18,332,619 | Sürüm: 2026.4 yeni yayınlandı
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizin PDF olduğunu izleyin.