How to Use Base URLs & Asset Encoding in C# .NET 10
IronPDF'teki temel URL'ler, BaseUrlOrPath parametresini belirleyerek HTML'den PDF'e dönüştürme sırasında CSS, JavaScript ve görüntü varlıklarının doğru bir şekilde yüklenmesini sağlar. Bu parametre, rölatif varlık çözümü için bir web URL'si veya yerel dosya yolu olabilir.
Hızlı Başlangıç: IronPDF'de Temel URL'leri Uygulayın
HTML'den PDF'ye dönüştürme sırasında sorunsuz varlık yüklemesi için IronPDF ile temel URL'ler uygulayarak başlayın. Bu örnek, tüm CSS, JavaScript ve görüntülerin doğru bir şekilde referans alındığından emin olmak için BaseUrlOrPath nasıl ayarlanacağını gösterir. Bu da minimum kurulumla PDF oluşturmayı basitleştirir.
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronPdf yükleyin
PM > Install-Package IronPdf -
Bu kod parçasını kopyalayıp çalıştırın.
new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<img src='icons/logo.png'>", @"C:\site\assets\").SaveAs("with-assets.pdf"); -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronPDF kullanmaya başlayın ücretsiz deneme ile
Minimal Is Akisi (5 adimda)
- HTML'den CSS'e Görsel Destek için IronPDF'yi İndirin
- HTML'deki dış görseller için
BaseUrlOrPathparametresini belirtin - Web ve PDF ekranı için MVC'de doğru
srcyapılandırın - Özel başlıklar ve alt bilgi için
BaseUrlözelliğini belirtin - Çıktı PDF'sini kontrol edin
Görsel ve CSS Varlıklarıyla HTML Dizelerinden PDF Nasıl Oluşturulabilir?
HTML dizelerini PDF'ye dönüştürürken, CSS, JavaScript dosyaları ve görseller gibi varlıklar için bir BaseUrlOrPath parametresi ayarlayın. BaseUrlOrPath, tüm varlıkların yüklenmesinin temel URL'sini belirler.
Bu, yerel ögeleri yüklemek için 'http' ile başlayan bir web bağlantısı veya diskteki ögeleri erişmek için yerel bir dosya yolu olabilir. BaseUrlOrPath doğru bir şekilde ayarlandığında, dönüşüm sırasında varlıkların doğru bir şekilde yüklendiğinden emin olunur. HTML'den PDF'ye dönüştürme hakkında daha fazla ayrıntı için kapsamlı HTML'den PDF'ye tutorialımıza göz atın.
: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")
Dış varlıkları içeren karmaşık senaryolar için fontları yönetme veya PDF'lere görüntü ekleme konulu rehberimize göz atın.
MVC Uygulamalarında Temel URL'ler Nasıl Ayarlanır?
MVC uygulamalarında görsel dosya yollarını belirtmek dikkatli bir yapılandırma gerektirir. To ensure IronPDF finds images and displays them correctly on the website, configure the baseUrl and HTML src="" attribute properly.
Aşağıda gösterilen dosya hiyerarşisi ayarlandığında
baseUrlOrPath, "wwwroot/image" olarak ayarlayınsrcözniteliği için "../image/Sample.jpg" kullanın
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")
<img src="../image/Sample.jpg"/>
<img src="../image/Sample.png"/>
<img src="../image/Sample.jpg"/>
<img src="../image/Sample.png"/>
ASP.NET Core MVC özel uygulamaları için CSHTML'den PDF'ye (MVC Core) rehberimize başvurun.
Hangi Dosya Yolu Formatlarından Kaçınmalıyım?
Çalışmayan Dosya Yolu Formatları
Bu formatlar Chrome tarayıcısında çalışır ancak MVC uygulamalarında yanlış dizinleri işaret eder. IronPDF ile baseUrlOrPath, RenderHtmlAsPdf metoduyla sağlanarak çalışır.
<img src="image/footer.png"/>
<img src="./image/footer.png"/>
<img src="image/footer.png"/>
<img src="./image/footer.png"/>
Bu formatlar MVC uygulamaları ile çalışır ancak IronPDF dosya yollarında başarısız olur:
<img src="/image/footer.png"/>
<img src="~/image/footer.png"/>
<img src="/image/footer.png"/>
<img src="~/image/footer.png"/>
)}]
Varlık Yükleme İçin Yaygın Sorun Giderme İpuçları Nelerdir?
Varlıklar yüklenemediğinde, bu sorun giderme adımlarını göz önünde bulundurun:
- Mutlak yolları doğrulayın: Geliştirme sırasında erişilebilirliği doğrulamak için mutlak dosya yollarını kullanın
- Dosya izinlerini kontrol edin: Uygulamanın varlık dizinlerine okuma erişimi olduğundan emin olun
- Uzaktan bağlantıları test edin: Yol sorunlarını izole etmek için tam nitelikli URL'leri kullanın
- Günlüğü etkinleştirin: Varlık yüklemeyi hata ayıklamak için IronPDF'in özel günlüğü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)
Görsellerle HTML Başlıkları ve Alt Bilgileri Nasıl Eklenir?
Yeni veya mevcut PDF'lere HTML başlıkları ve alt bilgileri oluştururken, bunlar bağımsız HTML belgeleri olarak kabul edilir ve PDF'den Temel URL'yi devralmazlar. Kapsamlı başlık ve alt bilgi seçenekleri için başlıklar ve alt bilgiler rehberimize bakın.
Varlıkların yüklenebileceği bir Temel URL ayarlayın:
:path=/static-assets/pdf/content-code-examples/how-to/base-header-footer.cs
using IronPdf;
using System;
// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Add header
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
MaxHeight = 20,
HtmlFragment = "<img src='logo.png'>",
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
Imports IronPdf
Imports System
' Instantiate ChromePdfRenderer
Private renderer As New ChromePdfRenderer()
' Add header
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.MaxHeight = 20,
.HtmlFragment = "<img src='logo.png'>",
.BaseUrl = (New Uri("C:\assets\images\")).AbsoluteUri
}
Başlıklar Neden Ana Belgeden Temel URL'leri Devralmaz?
Başlıklar ve alt bilgiler performans ve izolasyon için ayrı HTML belgeleri olarak oluşturulur. Bu tasarım şunları sağlar:
- Ana içeriği etkilemeden bağımsız stilizasyon
- Tüm sayfalarda tutarlı bir biçimde oluşturma
- Büyük belgeler için daha iyi hafıza yönetimi
- Farklı varlık kaynaklarını kullanma esnekliği
Başlıklar ve İçerik İçin Farklı Temel URL'ler Nasıl Ayarlanır?
Varlıkları etkili bir şekilde düzenlemek için başlıklara, alt bilgilere ve ana içeriğe farklı temel URL'ler atayın:
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)
Yerel Varlıklarla HTML Dosyaları PDF'ye Nasıl Dönüştürülür?
HTML dosyaları PDF'ye dönüştürülürken, tüm varlıkların o dosyaya özgü olduğu varsayılır. HTML dosyalarının dönüştürülmesi hakkında daha fazla bilgi için HTML Dosyası PDF'ye rehberimize göz atın.
: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")
Yukarıdaki örnekte tüm JS, CSS ve görüntü dosyaları - HTML dosyası ile aynı dizinde olan- C:\Assets klasöründen yüklenir.
For convenience, use CustomCssUrl in ChromePdfRenderOptions for Additional Stylesheets to specify an additional stylesheet used only for .NET PDF rendering if desired. Ö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")
ChromePdfRenderOptions.CustomCssUrl özelliği, şu anda yalnızca RenderHtmlAsPdf metodu kullanılarak HTML dizelerinden PDF'lere dönüştürürken çalışır.Ek Stil için Ne Zaman CustomCssUrl Kullanmalıyım?
CustomCssUrl ideal olarak:
- Yazdırma özel stil: Navigasyon menülerini veya etkileşimli öğeleri gizlemek
- PDF düzen optimizasyonu: Yazdırma için marjları ve sayfa kırılmalarını ayarlamak
- Koşullu biçimlendirme: Yalnızca PDF oluştururken stilleri uygulamak
- A/B testi: Kaynak HTML'yi değiştirmeden farklı PDF düzenlerini test etmek
HTML Dosyalarında Göreli Varlık Yolları Nasıl Yönetilir?
Göreli yollara sahip HTML dosyaları ile ç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")
Görseller HTML İçine Base64 Kullanarak Nasıl Kodlanır?
Görüntü varlıkları doğrudan HTML dosyalarına veya dizelerine kodlanabilir, eksik görüntülerle ilgili sorunlardan kaçının. Bu yaklaşım için base64 kodlamasını kullanın. Çeşitli görüntü formatları ile çalışmak için görseller rehberimize göz atın.
- İlk olarak, dosyayı okuyarak veya ağ isteği aracılığıyla alarak görüntünün ikili verilerini elde edin.
- İkili verileri base64'e dönüştürmek için Microsoft .NET'te
Convert.ToBase64Stringmetodunu kullanın. - Base64 verileri öncesinde HTML'de 'data:image/svg+xml;base64,' kullanarak görüntü etiketini oluşturun. Görsel türünün base64 verileri öncesinde belirtildiğine dikkat edin. MDN Web Dokümanlarındaki Görsel Türleri ve Formatları sayfasını farklı görüntü format türleri hakkında daha fazla bilgi için ziyaret edin.
: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")
Base64 Kodlamayı Dosya Referanslarına Karşı Neden Seçmeliyim?
Base64 kodlama birkaç avantaj sunar:
- Kendi içinde HTML: Dış bağımlılıklar yok, dağıtımı basitleştirir
- Çapraz platform uyumluluğu: Dosya sistemi fark etmeksizin çalışır
- Güvenlik: Dosya sistemi erişimi gerektirmez, güvenlik risklerini azaltır
- Güvenilirlik: Üretim sırasında eksik varlık hatalarını ortadan kaldırır
- Sürüm kontrolü: Görseller HTML'nin bir parçasıdır, sürüm kontrolünü basitleştirir
Ancak, şu uzlaşmaları göz önünde bulundurun:
- Artan HTML boyutu: Base64 kodlama boyutu yaklaşık %33 oranında artırır
- Önbellekleme yok: Gömülü görseller ayrı önbelleklenemez
- Hafıza kullanımı: Tüm görüntü hafızada yüklenmelidir
Base64 Kodlamasıyla Hangi Görüntü Formatları En İyi Çalışır?
Farklı görüntü formatları base64 kodlandığında değişen etkililik gösterir:
// 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'>"
Base64 Kodlaması PDF Dosya Boyutunu Nasıl Etkiler?
Base64 kodlaması, PDF boyutunu öngörülebilir ş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
Optimum sonuçlar için:
- Küçük simgeler ve logolar için base64 kullanın (< 50KB)
- Büyük resimler ve fotoğraflar için harici referanslar kullanın
- Kodlamadan önce sıkıştırmayı düşünün
- İçerik türü için uygun görüntü formatlarını kullanın
Gelişmiş PDF optimizasyon teknikleri için PDF sıkıştırma rehberimizi inceleyin.
Sıkça Sorulan Sorular
CSS ve JavaScript varlıklarının HTML'den PDF'ye dönüştürülürken doğru şekilde yüklendiğinden nasıl emin olabilirim?
IronPDF, HTML'den PDF'ye dönüştürme sırasında bir BaseUrlOrPath parametresi belirtmenize imkan tanır. Bu parametre, HTML'nizdeki tüm göreceli varlık yollarının temel referansı olarak hizmet eden bir web URL'si veya yerel dosya yolu olabilir, bu da CSS, JavaScript ve görüntülerin doğru şekilde yüklenmesini sağlar.
BaseUrlOrPath parametresi ne için kullanılır?
IronPDF'deki BaseUrlOrPath parametresi, tüm varlıkların (CSS, JavaScript, görseller) HTML'den PDF'ye dönüştürme sırasında yüklenmesinin göreceli olarak temel URL'sini belirler. Uzaktaki varlıklar için 'http' ile başlayan bir web URL'si veya disk tabanlı varlıklar için bir yerel dosya yolu olarak ayarlanabilir.
Bir satır kodla varlıklarla birlikte PDF nasıl işlenir?
IronPDF'nin ChromePdfRenderer'ını kullanarak HTML'yi varlıklarla bir satırda işleyebilirsiniz: `new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("", @"C:\site\assets\").SaveAs("with-assets.pdf");`. Bu, BaseUrlOrPath'i ayarlayarak tüm varlıkların düzgün şekilde yüklendiğinden emin olur.
MVC uygulamalarında PDF oluşturma için görüntü yolları nasıl ayarlanır?
IronPDF kullanan MVC uygulamalarında, baseUrlOrPath'i wwwroot alt dizininize (ör., @"wwwroot/image") ayarlayın ve HTML src özniteliğini göreceli yol (ör., "../image/Sample.jpg") ile yapılandırın. Bu, görüntülerin hem web sitesinde hem de oluşturulan PDF'de doğru görüntülenmesini sağlar.
HTML'den PDF'ye dönüştürürken hem yerel hem de uzak varlıkları kullanabilir miyim?
Evet, IronPDF hem yerel hem de uzak varlıkları destekler. Uzak varlıklar için BaseUrlOrPath'i 'http' ile başlayan bir web URL'si olarak ayarlayın. Yerel varlıklar için, disk üzerindeki bir dosya yolunu kullanın. Bu esneklik, PDF oluşturma sırasında çeşitli kaynaklardan varlıklara referans vermenizi sağlar.
BaseUrlOrPath parametresini ayarlamazsam ne olur?
IronPDF'de BaseUrlOrPath parametresini ayarlamadan, HTML'nizdeki göreceli varlık yolları doğru çözümlenmeyecek, oluşturulan PDF'nizde eksik CSS stilleri, JavaScript işlevselliği ve görüntülerle sonuçlanacaktır. HTML'nizde göreceli varlık referansları olduğunda bu parametreyi her zaman belirtin.

