C# Kullanarak PDF Üretiminde Temel URL'ler Nasıl Kullanılır

How to Use Base URLs & Asset Encoding in C# .NET 10

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

IronPDF'deki temel URL'ler, BaseUrlOrPath parametresini belirterek HTML'den PDF'ye dönüştürme sırasında CSS, JavaScript ve görüntü varlıklarının düzgün bir şekilde yüklenmesini sağlar. Bu parametre, göreceli varlık çözümlemesi için bir web URL'si veya yerel dosya yolu olabilir.

Hızlı Başlangıç: IronPDF'te Taban URL'leri Uygulama

.NET C# içinde HTML'den PDF'ye dönüştürme sırasında sorunsuz varlık yüklemesi için taban URL'leri uygulayarak IronPDF ile başlayın. Bu örnek, tüm CSS, JavaScript ve resimlerin doğru şekilde referanslanmasını sağlamak için BaseUrlOrPath'nin nasıl ayarlanacağını gösterir ve minimum kurulumla PDF oluşturmayı basitleştirir.

  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().RenderHtmlAsPdf("<img src='icons/logo.png'>", @"C:\site\assets\").SaveAs("with-assets.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

Convert.ToBase64String


Resim ve CSS Varlıklarıyla HTML Dizgilerinden PDF Nasıl İşlenir?

HTML dizelerini PDF'ye dönüştürürken, CSS, JavaScript dosyaları ve görüntüler gibi varlıklar için BaseUrlOrPath parametresini ayarlayın. BaseUrlOrPath, tüm varlıkların göreli olarak yüklendiği temel URL'yi belirtir. CustomCssUrl

Bu, uzak varlıkları yüklemek için 'http' ile başlayan bir web URL'si veya disk üzerindeki varlıklara erişmek için yerel bir dosya yolu olabilir. BaseUrlOrPath öğesinin doğru ayarlanması, dönüştürme sırasında varlıkların düzgün bir şekilde yüklenmesini sağlar. HTML'den PDF'ye dönüştürme hakkında daha fazla ayrıntı için kapsamlı HTML'den PDF'ye kılavuzumuzu inceleyin.

:path=/static-assets/pdf/content-code-examples/how-to/base-urls-baseurl.cs
using IronPdf;

// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

string baseUrl = @"C:\site\assets\";
string html = "<img src='icons/iron.png'>";

// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html, baseUrl);

// Export PDF
pdf.SaveAs("html-with-assets.pdf");
Imports IronPdf

' Instantiate ChromePdfRenderer
Private renderer As New ChromePdfRenderer()

Private baseUrl As String = "C:\site\assets\"
Private html As String = "<img src='icons/iron.png'>"

' Render HTML to PDF
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, baseUrl)

' Export PDF
pdf.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

Dış varlıkları içeren karmaşık senaryolar için font yönetimi veya PDF'lere resim ekleme rehberimize göz atın.

MVC Uygulamalarında Taban URL'leri Nasıl Yapılandırırım?

MVC uygulamalarında resim dosya yollarını belirtirken dikkatli yapılandırma gereklidir. IronPDF'nin resimleri bulup web sitesinde doğru şekilde görüntüleyebilmesi için baseUrl ve HTML src="" özniteliklerini doğru şekilde yapılandırın.

Aşağıda gösterilen dosya hiyerarşisi ayarlanmış olarak

  • baseUrlOrPath yerine @"wwwroot/image"
  • src özniteliği "../image/Sample.jpg"
wwwroot
└── image
    ├── Sample.jpg
    └── Sample.png

Örneğin:

:path=/static-assets/pdf/content-code-examples/how-to/base-mvc.cs
// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("html.Result", @"wwwroot/image");
' Instantiate ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()

' Render HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("html.Result", "wwwroot/image")
$vbLabelText   $csharpLabel

<img src="../image/Sample.jpg"/>
<img src="../image/Sample.png"/>

<img src="../image/Sample.jpg"/>
<img src="../image/Sample.png"/>
HTML

ASP.NET Core MVC'ye özgü uygulamalar için CSHTML'den PDF'ye (MVC Core) kılavuzumuza bakın.

Hangi Dosya Yol Formatlarından Kaçınmalıyım?

Uyarı

Çalışmayan Dosya Yol Formatları

Bu biçimler Chrome tarayıcısında çalışır, ancak MVC uygulamalarında yanlış dizinlere yönlendirir. baseUrlOrPath yöntemi içinde RenderHtmlAsPdf sağlanırsa IronPDF ile çalışırlar:

<img src="image/footer.png"/>  
<img src="./image/footer.png"/>  
<img src="image/footer.png"/>  
<img src="./image/footer.png"/>  
HTML

Bu formatlar MVC uygulamalarıyla çalışır ancak IronPDF dosya yollarıyla çalışmaz:

<img src="/image/footer.png"/>  
<img src="~/image/footer.png"/>
<img src="/image/footer.png"/>  
<img src="~/image/footer.png"/>
HTML

)}]

Varlık Yüklemeyle İlgili Yaygın Sorun Giderme İpuçları Nelerdir?

Varlıklar yüklenemediğinde, şu sorun giderme adımlarını göz önünde bulundurun:

  1. Mutlak yolları doğrulayın: Geliştirme sırasında dosya yollarının erişilebilirliğini doğrulamak için mutlak dosya yollarını kullanın
  2. Dosya izinlerini kontrol edin: Uygulamanın varlık dizinlerine okuma erişimi olduğundan emin olun
  3. Uzaktan URL'lerle test edin: Yol sorunlarını izole etmek için tam nitelikli URL'ler kullanın
  4. Loglamayı etkinleştirin: Varlık yüklemeyi hatalık ayıklamak için IronPDF'in özel loglamasını kullanın
// Example: Debug asset loading with absolute paths
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Enable debug logging
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500); // Give assets time to load

// Use absolute path for testing
string absoluteBasePath = Path.GetFullPath(@"C:\MyProject\wwwroot\assets");
string html = @"
    <html>
    <head>
        <link rel='stylesheet' href='styles/main.css'>
    </head>
    <body>
        <img src='images/logo.png' />
        <script src='scripts/app.js'></script>
    </body>
    </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdf(html, absoluteBasePath);
// Example: Debug asset loading with absolute paths
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Enable debug logging
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500); // Give assets time to load

// Use absolute path for testing
string absoluteBasePath = Path.GetFullPath(@"C:\MyProject\wwwroot\assets");
string html = @"
    <html>
    <head>
        <link rel='stylesheet' href='styles/main.css'>
    </head>
    <body>
        <img src='images/logo.png' />
        <script src='scripts/app.js'></script>
    </body>
    </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdf(html, absoluteBasePath);
Imports System.IO

' Example: Debug asset loading with absolute paths
Dim renderer As New ChromePdfRenderer()

' Enable debug logging
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(500) ' Give assets time to load

' Use absolute path for testing
Dim absoluteBasePath As String = Path.GetFullPath("C:\MyProject\wwwroot\assets")
Dim html As String = "
    <html>
    <head>
        <link rel='stylesheet' href='styles/main.css'>
    </head>
    <body>
        <img src='images/logo.png' />
        <script src='scripts/app.js'></script>
    </body>
    </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, absoluteBasePath)
$vbLabelText   $csharpLabel

Resimli HTML Başlıklar ve Altbilgiler Nasıl Eklenir?

HTML üstbilgileri ve altbilgileri yeni veya mevcut PDF'lere aktarılırken, bunlar bağımsız HTML belgeleri olarak ele alınır ve PDF'den BaseURL öğesini devralmaz. Kapsamlı başlık ve alt bilgi seçenekleri için, başlık ve alt bilgilere dair kılavuzumuzu görün.

Varlıkların yüklenebileceği bir BaseURL ayarlayın: ChromePdfRenderOptions

Başlıklar Neden Ana Belgeden Taban URL'lerini Almıyor?

Başlıklar ve altbilgiler performans ve izolasyon için ayrı HTML belgeleri olarak işlenir. Bu tasarım şunları sağlar:

  • Ana içeriği etkilemeden bağımsız stil
  • Tüm sayfalarda tutarlı render
  • Büyük belgeler için daha iyi hafıza yönetimi
  • Farklı varlık kaynakları kullanabilme esnekliği

Başlıklar İçin Farklı Taban URL'leri Nasıl Ayarlarım?

Varlıkları etkili bir şekilde düzenlemek için başlıklar, altbilgiler ve ana içerik için farklı taban URL'leri belirtin:

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Main content base URL
string contentBaseUrl = @"C:\website\public\";

// Header specific assets
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<img src='header-logo.png'><link rel='stylesheet' href='header.css'>",
    BaseUrl = new Uri(@"C:\website\headers\").AbsoluteUri
};

// Footer specific assets
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div class='footer'>© 2024 Company</div><link rel='stylesheet' href='footer.css'>",
    BaseUrl = new Uri(@"C:\website\footers\").AbsoluteUri
};

// Render main content with its own base URL
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Main Content</h1>", contentBaseUrl);
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Main content base URL
string contentBaseUrl = @"C:\website\public\";

// Header specific assets
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<img src='header-logo.png'><link rel='stylesheet' href='header.css'>",
    BaseUrl = new Uri(@"C:\website\headers\").AbsoluteUri
};

// Footer specific assets
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div class='footer'>© 2024 Company</div><link rel='stylesheet' href='footer.css'>",
    BaseUrl = new Uri(@"C:\website\footers\").AbsoluteUri
};

// Render main content with its own base URL
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Main Content</h1>", contentBaseUrl);
Dim renderer As New ChromePdfRenderer()

' Main content base URL
Dim contentBaseUrl As String = "C:\website\public\"

' Header specific assets
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "<img src='header-logo.png'><link rel='stylesheet' href='header.css'>",
    .BaseUrl = New Uri("C:\website\headers\").AbsoluteUri
}

' Footer specific assets
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div class='footer'>© 2024 Company</div><link rel='stylesheet' href='footer.css'>",
    .BaseUrl = New Uri("C:\website\footers\").AbsoluteUri
}

' Render main content with its own base URL
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Main Content</h1>", contentBaseUrl)
$vbLabelText   $csharpLabel

HTML Dosyalarını Yerel Varlıklarla PDF'ye Nasıl Dönüştürürüm?

HTML dosyalarını PDF'ye işlenirken, tüm varlıkların o dosyaya yerel olduğu varsayılır. HTML dosyalarından PDF'ye dönüştürme hakkında daha fazla bilgi edinin HTML Dosyasından PDF'ye rehberimizde inceleyin.

:path=/static-assets/pdf/content-code-examples/how-to/base-html-file.cs
using IronPdf;

// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render HTML file to PDF
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("C:\\Assets\\TestInvoice1.html");

// Export PDF
pdf.SaveAs("Invoice.pdf");
Imports IronPdf

' Instantiate ChromePdfRenderer
Private renderer As New ChromePdfRenderer()

' Render HTML file to PDF
Private pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("C:\Assets\TestInvoice1.html")

' Export PDF
pdf.SaveAs("Invoice.pdf")
$vbLabelText   $csharpLabel

Yukarıdaki örnekte, tüm JS, CSS ve resim dosyaları diskteki C:\Assets klasöründen yüklenir - HTML dosyasıyla aynı dizin.

Kolaylık olması açısından, istenirse HtmlToPdf içindeki CustomCssUrl öğesini kullanarak, yalnızca .NET PDF oluşturma için kullanılan ek bir stil sayfasını belirtebilirsiniz. Örneğin:

:path=/static-assets/pdf/content-code-examples/how-to/base-html-file-baseurl.cs
using IronPdf;

// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Set additional CSS url
renderer.RenderingOptions.CustomCssUrl = "./style.css";

// Render HTML file to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export PDF
pdf.SaveAs("tryCss.pdf");
Imports IronPdf

' Instantiate ChromePdfRenderer
Private renderer As New ChromePdfRenderer()

' Set additional CSS url
renderer.RenderingOptions.CustomCssUrl = "./style.css"

' Render HTML file to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

' Export PDF
pdf.SaveAs("tryCss.pdf")
$vbLabelText   $csharpLabel

CustomCssUrl

Lütfen dikkate alınChromePdfRenderOptions.CustomCssUrl özelliği şu anda yalnızca RenderHtmlAsPdf yöntemi kullanılarak HTML dizelerinden PDF'lere dönüştürme sırasında çalışmaktadır.)})]

Ek Stil İçin CustomCssUrl'i Ne Zaman Kullanmalıyım?

CustomCssUrl şunlar için idealdir:

  • Yazı özgü stiller: Navigasyon menülerini veya etkileşimli öğeleri gizle
  • PDF düzen optimizasyonu: Yazdırma için kenar boşluklarını ve sayfa kırılmalarını ayarlayın
  • Koşullu formatlama: Yalnızca PDF oluştururken stilleri uygula
  • A/B testi: Kaynak HTML'yi değiştirmeden farklı PDF düzenlerini test edin

HTML Dosyalarındaki Göreli Varlık Yollarını Nasıl Ele Alırım?

Göreli yollar içeren HTML dosyalarıyla çalışırken, dosya yapınızın referansları desteklediğinden emin olun:

// Example HTML file structure
/*
C:\Projects\Reports\
    ├── invoice.html
    ├── css\
    │   └── styles.css
    ├── js\
    │   └── calculations.js
    └── images\
        └── logo.png
*/

// HTML content with relative paths
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
    <link rel='stylesheet' href='css/styles.css'>
    <script src='js/calculations.js'></script>
</head>
<body>
    <img src='images/logo.png' alt='Company Logo'>
    <h1>Invoice #12345</h1>
</body>
</html>";

// Save HTML and render
File.WriteAllText(@"C:\Projects\Reports\invoice.html", htmlContent);
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlFileAsPdf(@"C:\Projects\Reports\invoice.html");
pdf.SaveAs("invoice-output.pdf");
// Example HTML file structure
/*
C:\Projects\Reports\
    ├── invoice.html
    ├── css\
    │   └── styles.css
    ├── js\
    │   └── calculations.js
    └── images\
        └── logo.png
*/

// HTML content with relative paths
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
    <link rel='stylesheet' href='css/styles.css'>
    <script src='js/calculations.js'></script>
</head>
<body>
    <img src='images/logo.png' alt='Company Logo'>
    <h1>Invoice #12345</h1>
</body>
</html>";

// Save HTML and render
File.WriteAllText(@"C:\Projects\Reports\invoice.html", htmlContent);
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlFileAsPdf(@"C:\Projects\Reports\invoice.html");
pdf.SaveAs("invoice-output.pdf");
Imports System.IO
Imports IronPdf

' Example HTML file structure
'
' C:\Projects\Reports\
'     ├── invoice.html
'     ├── css\
'     │   └── styles.css
'     ├── js\
'     │   └── calculations.js
'     └── images\
'         └── logo.png
'

' HTML content with relative paths
Dim htmlContent As String = "
<!DOCTYPE html>
<html>
<head>
    <link rel='stylesheet' href='css/styles.css'>
    <script src='js/calculations.js'></script>
</head>
<body>
    <img src='images/logo.png' alt='Company Logo'>
    <h1>Invoice #12345</h1>
</body>
</html>"

' Save HTML and render
File.WriteAllText("C:\Projects\Reports\invoice.html", htmlContent)
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("C:\Projects\Reports\invoice.html")
pdf.SaveAs("invoice-output.pdf")
$vbLabelText   $csharpLabel

Görüntüleri Base64 Kullanarak HTML İçinde Doğrudan Nasıl Kodlarım?

Görüntü varlıkları HTML dosyalarına veya dizgilerine doğrudan kodlanabilir, eksik görüntü sorunlarını önler. Bu yaklaşım için base64 kodlamasını kullanın. Bu yaklaşım için base64 kodlamasını kullanın. Bu yaklaşım için base64 kodlamasını kullanın:

  1. İlk olarak, dosyanın okunarak veya bir ağ isteği üzerinden alınarak görüntünün ikili verisini edin.
  2. İkili verileri base64'e dönüştürmek için Microsoft .NET'te Convert.ToBase64String yöntemini kullanın.
  3. Base64 verilerinin öncesine "data:image/svg+xml;base64," ekleyerek HTML içinde img etiketini oluşturun. Görüntü türünün base64 verilerinden önce belirtildiğine dikkat edin. Görüntü format türleri hakkında daha fazla bilgi için MDN Web Docs on Image Types and Formats inceleyin.
:path=/static-assets/pdf/content-code-examples/how-to/add-images-to-pdfs-base64-image.cs
using IronPdf;
using System;
using System.IO;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Import image file binary data
byte[] binaryData = File.ReadAllBytes("ironpdf-logo-text-dotnet.svg");

// Convert the binary data to base 64
string imgDataUri = Convert.ToBase64String(binaryData);

// Embed in HTML
string html = $"<img src='data:image/svg+xml;base64,{imgDataUri}'>";

// Convert HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);

// Export the PDF
pdf.SaveAs("embedImageBase64.pdf");
Imports IronPdf
Imports System
Imports System.IO

Private renderer As New ChromePdfRenderer()

' Import image file binary data
Private binaryData() As Byte = File.ReadAllBytes("ironpdf-logo-text-dotnet.svg")

' Convert the binary data to base 64
Private imgDataUri As String = Convert.ToBase64String(binaryData)

' Embed in HTML
Private html As String = $"<img src='data:image/svg+xml;base64,{imgDataUri}'>"

' Convert HTML to PDF
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

' Export the PDF
pdf.SaveAs("embedImageBase64.pdf")
$vbLabelText   $csharpLabel

Base64 Kodlamasını Dosya Referanslarına Tercih Etmemin Nedenleri Nelerdir?

Base64 kodlama birkaç avantaj sunar:

  • Kendi içinde HTML: Harici bağımlılıklar olmadan, dağıtımı basitleştirir
  • Çok platformlu uyumluluk: Dosya sistemi farklarından bağımsız olarak çalışır
  • Güvenlik: Dosya sistemi erişimi gerektirmez, güvenlik risklerini azaltır
  • Güvenilirlik: Üretimde eksik varlık hatalarını ortadan kaldırır
  • Sürüm kontrolü: Resimler HTML'nin bir parçasıdır, sürümlemeyi basitleştirir

Ancak şu değiş-tokuşları göz önünde bulundurun:

  • Artan HTML boyutu: Base64 kodlaması boyutu yaklaşık %33 artırır
  • Önbellek yok: Gömülü görüntüler ayrı ayrı önbelleğe alınamaz
  • Bellek kullanımı: Tüm görüntünün bellekte yüklenmesi gerekir

Base64 Kodlama ile En İyi Çalışan Görsel Formatlar Nelerdir?

Farklı görsel formatları, base64 kodlandığında verimlilik açısından farklılık gösterebilir:

// Example: Encoding different image formats
public string EncodeImageWithMimeType(string imagePath)
{
    byte[] imageBytes = File.ReadAllBytes(imagePath);
    string base64 = Convert.ToBase64String(imageBytes);

    // Determine MIME type based on extension
    string extension = Path.GetExtension(imagePath).ToLower();
    string mimeType = extension switch
    {
        ".png" => "image/png",      // Best for graphics with transparency
        ".jpg" or ".jpeg" => "image/jpeg",  // Best for photographs
        ".gif" => "image/gif",       // Best for simple animations
        ".svg" => "image/svg+xml",   // Best for scalable graphics
        ".webp" => "image/webp",     // Best overall compression
        _ => "image/png"             // Default fallback
    };

    return $"data:{mimeType};base64,{base64}";
}

// Usage
string encodedImage = EncodeImageWithMimeType("logo.png");
string html = $"<img src='{encodedImage}' alt='Company Logo'>";
// Example: Encoding different image formats
public string EncodeImageWithMimeType(string imagePath)
{
    byte[] imageBytes = File.ReadAllBytes(imagePath);
    string base64 = Convert.ToBase64String(imageBytes);

    // Determine MIME type based on extension
    string extension = Path.GetExtension(imagePath).ToLower();
    string mimeType = extension switch
    {
        ".png" => "image/png",      // Best for graphics with transparency
        ".jpg" or ".jpeg" => "image/jpeg",  // Best for photographs
        ".gif" => "image/gif",       // Best for simple animations
        ".svg" => "image/svg+xml",   // Best for scalable graphics
        ".webp" => "image/webp",     // Best overall compression
        _ => "image/png"             // Default fallback
    };

    return $"data:{mimeType};base64,{base64}";
}

// Usage
string encodedImage = EncodeImageWithMimeType("logo.png");
string html = $"<img src='{encodedImage}' alt='Company Logo'>";
Imports System.IO

Public Function EncodeImageWithMimeType(imagePath As String) As String
    Dim imageBytes As Byte() = File.ReadAllBytes(imagePath)
    Dim base64 As String = Convert.ToBase64String(imageBytes)

    ' Determine MIME type based on extension
    Dim extension As String = Path.GetExtension(imagePath).ToLower()
    Dim mimeType As String = extension.ToLower() Select Case extension
        Case ".png"
            mimeType = "image/png" ' Best for graphics with transparency
        Case ".jpg", ".jpeg"
            mimeType = "image/jpeg" ' Best for photographs
        Case ".gif"
            mimeType = "image/gif" ' Best for simple animations
        Case ".svg"
            mimeType = "image/svg+xml" ' Best for scalable graphics
        Case ".webp"
            mimeType = "image/webp" ' Best overall compression
        Case Else
            mimeType = "image/png" ' Default fallback
    End Select

    Return $"data:{mimeType};base64,{base64}"
End Function

' Usage
Dim encodedImage As String = EncodeImageWithMimeType("logo.png")
Dim html As String = $"<img src='{encodedImage}' alt='Company Logo'>"
$vbLabelText   $csharpLabel

Base64 Kodlama, PDF Dosya Boyutunu Nasıl Etkiler?

Base64 kodlama, PDF boyutunu tahmin edilebilir şekillerde etkiler:

// Comparison example
public void CompareFileSizes()
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Method 1: External image reference
    string htmlExternal = "<img src='large-photo.jpg'>";
    PdfDocument pdfExternal = renderer.RenderHtmlAsPdf(htmlExternal, @"C:\images\");

    // Method 2: Base64 encoded image
    byte[] imageBytes = File.ReadAllBytes(@"C:\images\large-photo.jpg");
    string base64Image = Convert.ToBase64String(imageBytes);
    string htmlBase64 = $"<img src='data:image/jpeg;base64,{base64Image}'>";
    PdfDocument pdfBase64 = renderer.RenderHtmlAsPdf(htmlBase64);

    // Compare sizes
    Console.WriteLine($"Original image: {imageBytes.Length / 1024} KB");
    Console.WriteLine($"PDF with external image: {pdfExternal.BinaryData.Length / 1024} KB");
    Console.WriteLine($"PDF with base64 image: {pdfBase64.BinaryData.Length / 1024} KB");
}
// Comparison example
public void CompareFileSizes()
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Method 1: External image reference
    string htmlExternal = "<img src='large-photo.jpg'>";
    PdfDocument pdfExternal = renderer.RenderHtmlAsPdf(htmlExternal, @"C:\images\");

    // Method 2: Base64 encoded image
    byte[] imageBytes = File.ReadAllBytes(@"C:\images\large-photo.jpg");
    string base64Image = Convert.ToBase64String(imageBytes);
    string htmlBase64 = $"<img src='data:image/jpeg;base64,{base64Image}'>";
    PdfDocument pdfBase64 = renderer.RenderHtmlAsPdf(htmlBase64);

    // Compare sizes
    Console.WriteLine($"Original image: {imageBytes.Length / 1024} KB");
    Console.WriteLine($"PDF with external image: {pdfExternal.BinaryData.Length / 1024} KB");
    Console.WriteLine($"PDF with base64 image: {pdfBase64.BinaryData.Length / 1024} KB");
}
' Comparison example
Public Sub CompareFileSizes()
    Dim renderer As New ChromePdfRenderer()

    ' Method 1: External image reference
    Dim htmlExternal As String = "<img src='large-photo.jpg'>"
    Dim pdfExternal As PdfDocument = renderer.RenderHtmlAsPdf(htmlExternal, "C:\images\")

    ' Method 2: Base64 encoded image
    Dim imageBytes As Byte() = File.ReadAllBytes("C:\images\large-photo.jpg")
    Dim base64Image As String = Convert.ToBase64String(imageBytes)
    Dim htmlBase64 As String = $"<img src='data:image/jpeg;base64,{base64Image}'>"
    Dim pdfBase64 As PdfDocument = renderer.RenderHtmlAsPdf(htmlBase64)

    ' Compare sizes
    Console.WriteLine($"Original image: {imageBytes.Length \ 1024} KB")
    Console.WriteLine($"PDF with external image: {pdfExternal.BinaryData.Length \ 1024} KB")
    Console.WriteLine($"PDF with base64 image: {pdfBase64.BinaryData.Length \ 1024} KB")
End Sub
$vbLabelText   $csharpLabel

Optimum sonuçlar için:

  • Küçük simgeler ve logolar için base64 kullan (< 50KB)
  • Büyük görüntüler ve fotoğraflar için dış referanslar kullan
  • Kodlamadan önce sıkıştırmayı göz önünde bulundurun
  • İçerik türü için uygun görüntü formatlarını kullan

Gelişmiş PDF optimizasyon teknikleri için PDF sıkıştırma kılavuzumuzu inceleyin.

Sıkça Sorulan Sorular

HTML'yi PDF'ye dönüştürürken CSS ve JavaScript varlıklarının doğru şekilde yüklenmesini nasıl sağlarım?

IronPDF, HTML'den PDF'ye dönüştürme sırasında BaseUrlOrPath parametresinin belirtilmesine olanak tanır. Bu parametre, HTML'nizdeki tüm göreceli varlık yolları için temel referans olarak hizmet veren bir web URL'si veya yerel dosya yolu olabilir, böylece CSS, JavaScript ve görüntülerin düzgün şekilde yüklenmesini sağlar.

BaseUrlOrPath parametresi ne için kullanılır?

IronPDF'deki BaseUrlOrPath parametresi, HTML'den PDF'ye dönüştürme sırasında tüm varlıkların (CSS, JavaScript, görüntüler) yüklenebileceği temel URL'yi belirtir. Uzaktaki varlıklar için 'http' ile başlayan bir web URL'sine veya disk tabanlı varlıklar için bir yerel dosya yoluna ayarlanabilir.

Varlıklarla PDF'yi tek satır kodla nasıl oluşturabilirim?

IronPDF'in ChromePdfRenderer'ını kullanarak varlıklarla birlikte HTML'yi tek satırda işleyebilirsiniz: `new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("", @"C:\site\assets\").SaveAs("with-assets.pdf");`. Bu, tüm varlıkların düzgün yüklendiğinden emin olmak için BaseUrlOrPath'i ayarlar.

MVC uygulamalarında PDF oluşturmak için görüntü yollarını nasıl yapılandırabilirim?

IronPDF kullanan MVC uygulamalarında, baseUrlOrPath'i wwwroot alt dizininize (örn. @"wwwroot/image") ayarlayın ve HTML src özniteliğini göreceli yolla yapılandırın (örn. "../image/Sample.jpg"). Bu, hem web sitesinde hem de oluşturulan PDF'de görüntülerin doğru şekilde görüntülenmesini sağlar.

HTML'yi PDF'ye dönüştürürken hem yerel hem de uzaktaki varlıkları kullanabilir miyim?

Evet, IronPDF hem yerel hem de uzaktaki varlıkları destekler. Uzak varlıklar için BaseUrlOrPath'i 'http' ile başlayan bir web URL'sine ayarlayın. Yerel varlıklar için diskinizdeki bir dosya yolunu kullanın. Bu esneklik, PDF oluşturma sırasında çeşitli kaynaklardan varlıklara referans vermenize olanak tanır.

BaseUrlOrPath parametresini ayarlamazsam ne olur?

IronPDF'de BaseUrlOrPath parametresi ayarlanmadığında, HTML'nizdeki göreceli varlık yolları doğru çözümlenmez, bu da oluşturulan PDF'nizde eksik CSS stilleri, JavaScript işlevselliği ve görüntülerle sonuçlanır. HTML'niz göreceli varlık referansları içeriyorsa, her zaman bu parametreyi belirtin.

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.