C# İsteğe Bağlı Parametreler (Geliştiriciler için Nasıl Çalışır)
Defining Optional Parameters in C
T[72] ### Temel Söz Dizimi
İsteğe bağlı bir parametre tanımlamak için, onu metodun beyanında varsayılan bir değer olarak belirlersiniz. Bu varsayılan değer, sabit bir ifade olmalıdır. Aşağıdaki kod örneğinde, biri veya daha fazla isteğe bağlı varsayılan parametrelerle bir metodun nasıl tanımlanabileceğini gösteriyoruz:
public static void DisplayGreeting(string message, string end = "!")
{
Console.WriteLine(message + end);
}
public static void DisplayGreeting(string message, string end = "!")
{
Console.WriteLine(message + end);
}
Public Shared Sub DisplayGreeting(ByVal message As String, Optional ByVal [end] As String = "!")
Console.WriteLine(message & [end])
End Sub
Yukarıdaki kod parçasında, 'end' isteğe bağlı bir parametredir ve varsayılan parametre değeri '!' olarak belirlenmiştir. Bu, metodun ikinci bir bağımsız değişken sağlanarak veya sağlanmadan çağrılmasına izin verir.
İsteğe Bağlı Parametreler Kullanarak Metod Çağrıları
Metod yukarıdaki şekilde şöyle çağrılabilir:
static void Main()
{
DisplayGreeting("Hello"); // Outputs: Hello!
DisplayGreeting("Hello", "?"); // Outputs: Hello?
}
static void Main()
{
DisplayGreeting("Hello"); // Outputs: Hello!
DisplayGreeting("Hello", "?"); // Outputs: Hello?
}
Shared Sub Main()
DisplayGreeting("Hello") ' Outputs: Hello!
DisplayGreeting("Hello", "?") ' Outputs: Hello?
End Sub
İlk çağrıda ikinci argüman atlanır ve varsayılan değer kullanılır. İkinci çağrıda ise varsayılan değeri geçersiz kılacak şekilde belirli bir değer sağlanır.
İsimlendirilmiş ve İsteğe Bağlı Parametrelerden Yararlanma
C#'da isimlendirilmiş ve isteğe bağlı parametreler, isteğe bağlı parametreleri içeren metod çağrılarının netliğini artırır. Çağrıda, onlara doğrudan adıyla değer atayarak hangi parametrelerin değerlendirildiğini belirtmek için kullanılabilirler.
İsimlendirilmiş Parametreler Kullanma Örneği
// Named parameters
public static void ConfigureDevice(string deviceName, bool enableLogging = false, int timeout = 30)
{
Console.WriteLine($"Configuring {deviceName}: Logging={(enableLogging ? "On" : "Off")}, Timeout={timeout}s");
}
// Named parameters
public static void ConfigureDevice(string deviceName, bool enableLogging = false, int timeout = 30)
{
Console.WriteLine($"Configuring {deviceName}: Logging={(enableLogging ? "On" : "Off")}, Timeout={timeout}s");
}
' Named parameters
Public Shared Sub ConfigureDevice(ByVal deviceName As String, Optional ByVal enableLogging As Boolean = False, Optional ByVal timeout As Integer = 30)
Console.WriteLine($"Configuring {deviceName}: Logging={(If(enableLogging, "On", "Off"))}, Timeout={timeout}s")
End Sub
İsimlendirilmiş parametreleri kullanarak değerleri sıradışı spesifikasyonla belirtebilir veya isteğe bağlı parametreleri atlayabilirsiniz.
static void Main()
{
ConfigureDevice("Router", timeout: 60);
}
static void Main()
{
ConfigureDevice("Router", timeout: 60);
}
Shared Sub Main()
ConfigureDevice("Router", timeout:= 60)
End Sub
Bu çağrı, enableLogging için varsayılan değeri kullanırken, bir zaman aşımı için bir değer belirtmek için isteğe bağlı bir argüman kullanır.
Sabitleştirilmiş ve İsteğe Bağlı Parametreleri Birleştirme
Metodlar hem zorunlu parametreler (sabit argümanlar) hem de isteğe bağlı parametreler içerebilir. Zorunlu parametreler her zaman isteğe bağlı olanlardan önce metod tanımında yer almalıdır, bunu aşağıdaki kod parçasında görebilirsiniz.
Kod Örneği
public static void CreateProfile(string firstName, string lastName, int age = 25, string city = "Unknown")
{
Console.WriteLine($"Name: {firstName} {lastName}, Age: {age}, City: {city}");
}
public static void CreateProfile(string firstName, string lastName, int age = 25, string city = "Unknown")
{
Console.WriteLine($"Name: {firstName} {lastName}, Age: {age}, City: {city}");
}
Public Shared Sub CreateProfile(ByVal firstName As String, ByVal lastName As String, Optional ByVal age As Integer = 25, Optional ByVal city As String = "Unknown")
Console.WriteLine($"Name: {firstName} {lastName}, Age: {age}, City: {city}")
End Sub
Metodu Çağırma
static void Main()
{
CreateProfile("John", "Doe"); // Uses default age and city
CreateProfile("Jane", "Doe", 30, "New York"); // Specifies all parameters
}
static void Main()
{
CreateProfile("John", "Doe"); // Uses default age and city
CreateProfile("Jane", "Doe", 30, "New York"); // Specifies all parameters
}
Shared Sub Main()
CreateProfile("John", "Doe") ' Uses default age and city
CreateProfile("Jane", "Doe", 30, "New York") ' Specifies all parameters
End Sub
Argümanları atlama esnekliği, aynı yöntemin farklı bağlamlarda kullanılmasına izin verir ve birçok overloading gerektirmez.
Varsayılan Değerler Sabit İfadeler Olmalıdır
İsteğe bağlı argümanlar için varsayılan parametreler, derleme sırasında değerlendirilmiş olan sabit ifadeler olmalıdır. Bu, varsayılan değerlerin daima sabit ve öngörülebilir olmasını sağlar.
Varsayılan Değerlerin Doğru Kullanımı
public static void SendEmail(string address, string subject = "No Subject", string body = "")
{
Console.WriteLine($"Sending email to {address}\nSubject: {subject}\nBody: {body}");
}
public static void SendEmail(string address, string subject = "No Subject", string body = "")
{
Console.WriteLine($"Sending email to {address}\nSubject: {subject}\nBody: {body}");
}
Imports Microsoft.VisualBasic
Public Shared Sub SendEmail(ByVal address As String, Optional ByVal subject As String = "No Subject", Optional ByVal body As String = "")
Console.WriteLine($"Sending email to {address}" & vbLf & "Subject: {subject}" & vbLf & "Body: {body}")
End Sub
Overloading vs. İsteğe Bağlı Parametreler
Metod overloading, farklı kullanım durumları için birden fazla metod imzası yaratmayı içerirken, isteğe bağlı parametreler, tek bir metodun çeşitli senaryoları ele almasına izin verir.
Kod Yoluyla Karşılaştırma
Aşırı yüklenmiş yöntemler şöyle görünebilir:
// Method overloading
public static void Alert(string message)
{
Console.WriteLine(message);
}
public static void Alert(string message, bool urgent)
{
if (urgent)
Console.WriteLine("Urgent: " + message);
else
Console.WriteLine(message);
}
// Method overloading
public static void Alert(string message)
{
Console.WriteLine(message);
}
public static void Alert(string message, bool urgent)
{
if (urgent)
Console.WriteLine("Urgent: " + message);
else
Console.WriteLine(message);
}
' Method overloading
Public Shared Sub Alert(ByVal message As String)
Console.WriteLine(message)
End Sub
Public Shared Sub Alert(ByVal message As String, ByVal urgent As Boolean)
If urgent Then
Console.WriteLine("Urgent: " & message)
Else
Console.WriteLine(message)
End If
End Sub
Opsiyonel parametreler kullanan eşdeğer bir yöntem:
public static void Alert(string message, bool urgent = false)
{
if (urgent)
Console.WriteLine("Urgent: " + message);
else
Console.WriteLine(message);
}
public static void Alert(string message, bool urgent = false)
{
if (urgent)
Console.WriteLine("Urgent: " + message);
else
Console.WriteLine(message);
}
Public Shared Sub Alert(ByVal message As String, Optional ByVal urgent As Boolean = False)
If urgent Then
Console.WriteLine("Urgent: " & message)
Else
Console.WriteLine(message)
End If
End Sub

Opsiyonel Parametrelerin Kullanımının Faydaları
Opsiyonel parametreler, yöntem arayüzlerini basitleştirir ve birçok aşırı yüklemenin gereksinimini azaltır. Yöntemleri daha esnek hale getirir ve kod tabanını sürdürmeyi ve anlamayı kolaylaştırır.
Opsiyonel Parametrelerle İlgili Zorluklar
Aşırı kullanıldığında, opsiyonel parametreler, her bir yöntemin ne beklediği ve doğru şekilde çalışması için ne gerektirdiği konusunda kafa karışıklığına yol açabilir. Özellikle birçok parametre olduğunda veya varsayılan değerler kendi kendini açıklayıcı olmadığında yöntemin amacını gizleyebilirler.
En İyi Uygulamalar
- Opsiyonel Parametreleri Sınırlayın: Çok karmaşık yöntem imzalarından kaçınmak için opsiyonel parametreleri dikkatli kullanın.
- Adlandırılmış Argümanlar Kullanın: Özellikle belirli opsiyonel parametreleri atladığınızda, yöntem çağrılarında netliği artırın.
- Varsayılan Değerleri Belgelendirin: Her parametrenin ne yaptığını ve varsayılan değerlerin ne anlama geldiğini belgelendirerek yanlış kullanım veya karışıklığı önleyin.
IronPDF kullanarak C# İsteğe Bağlı Parametreler

IronPDF, geliştiricilerin uygulamaları içinde doğrudan PDF belgeleri oluşturmasına, üzerinde işlem yapmasına ve bunları işleme imkan sağlayan yararlı bir .NET kütüphanesidir. HTML'i etkili bir şekilde PDF'ye dönüştürür ve PDF dönüştürme sağlar. Bu HTML, HTML dizesi, HTML dosyası veya URL gibi çeşitli biçimlerde olabilir. Faturalar, raporlar veya özelleştirilmiş kullanıcı içeriği gibi dinamik PDF belgesi üretimi gerektiren uygulamalar için idealdir. IronPDF ile geliştiriciler, PDF dosyalarını etkili bir şekilde işlemek için .NET Framework'ü tam anlamıyla kullanabilirler.
IronPDF'in öne çıkan özelliği, HTML'yi PDF'ye zahmetsizce dönüştürme yeteneğidir ve bu, düzenleri ve stilleri korur. Web tabanlı içerikten, örneğin raporlar, faturalar veya belgeler gibi PDF'ler üretmek için mükemmeldir. Bununla HTML dosyalarını, URL'leri ve HTML dizelerini PDF dosyalarına dönüştürebilirsiniz.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
IronPDF ile C# opsiyonel parametrelerini birleştirmek, PDF belgeleri oluşturma sürecini kolay hale getirebilir. Opsiyonel parametreleri kullanarak, geliştiriciler, farklı girdilere ve gereksinimlere adapte olabilen esnek PDF oluşturma yöntemleri oluşturabilirler, ve bunlar minimal yöntem aşırı yüklemeleri gerektirir.
Kod Örneği
Basit bir HTML şablonundan özelleştirilmiş bir PDF raporu oluşturmak için IronPDF ile C# opsiyonel parametrelerini nasıl kullanabileceğinizi gösteren bir örnek:
using IronPdf;
using System;
public class PdfReportGenerator
{
// Method to generate PDF with optional parameters
public static void CreatePdfReport(string htmlContent, string filePath = "Report.pdf", bool includeCharts = true, string reportTitle = "Monthly Report")
{
// Optional parameters allow customization of the report's title and content dynamically
var renderer = new ChromePdfRenderer();
// Customize the PDF document
renderer.RenderingOptions.TextHeader.CenterText = reportTitle;
renderer.RenderingOptions.TextFooter.CenterText = "Generated on " + DateTime.Now.ToString("dd-MM-yyyy");
renderer.RenderingOptions.MarginTop = 50; // Set the top margin
renderer.RenderingOptions.MarginBottom = 50; // Set the bottom margin
if (!includeCharts)
{
// Modify HTML content to remove chart sections if not included
htmlContent = htmlContent.Replace("<div class='charts'></div>", "");
}
// Render the HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the generated PDF to a file
pdf.SaveAs(filePath);
Console.WriteLine($"PDF report has been created at {filePath}");
}
static void Main()
{
License.LicenseKey = "License-Key"; // Specify the license key if required
string htmlTemplate = @"
<html>
<head>
<title>Monthly Report</title>
</head>
<body>
<h1>Monthly Performance Report</h1>
<p>This section contains text describing the overall performance for the month.</p>
<div class='charts'>
<h2>Sales Charts</h2>
</div>
</body>
</html>";
// Call the CreatePdfReport method with different parameters
CreatePdfReport(htmlTemplate, "BasicReport.pdf", false, "Basic Monthly Report");
CreatePdfReport(htmlTemplate, "FullReport.pdf", true, "Detailed Monthly Report");
}
}
using IronPdf;
using System;
public class PdfReportGenerator
{
// Method to generate PDF with optional parameters
public static void CreatePdfReport(string htmlContent, string filePath = "Report.pdf", bool includeCharts = true, string reportTitle = "Monthly Report")
{
// Optional parameters allow customization of the report's title and content dynamically
var renderer = new ChromePdfRenderer();
// Customize the PDF document
renderer.RenderingOptions.TextHeader.CenterText = reportTitle;
renderer.RenderingOptions.TextFooter.CenterText = "Generated on " + DateTime.Now.ToString("dd-MM-yyyy");
renderer.RenderingOptions.MarginTop = 50; // Set the top margin
renderer.RenderingOptions.MarginBottom = 50; // Set the bottom margin
if (!includeCharts)
{
// Modify HTML content to remove chart sections if not included
htmlContent = htmlContent.Replace("<div class='charts'></div>", "");
}
// Render the HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the generated PDF to a file
pdf.SaveAs(filePath);
Console.WriteLine($"PDF report has been created at {filePath}");
}
static void Main()
{
License.LicenseKey = "License-Key"; // Specify the license key if required
string htmlTemplate = @"
<html>
<head>
<title>Monthly Report</title>
</head>
<body>
<h1>Monthly Performance Report</h1>
<p>This section contains text describing the overall performance for the month.</p>
<div class='charts'>
<h2>Sales Charts</h2>
</div>
</body>
</html>";
// Call the CreatePdfReport method with different parameters
CreatePdfReport(htmlTemplate, "BasicReport.pdf", false, "Basic Monthly Report");
CreatePdfReport(htmlTemplate, "FullReport.pdf", true, "Detailed Monthly Report");
}
}
Imports IronPdf
Imports System
Public Class PdfReportGenerator
' Method to generate PDF with optional parameters
Public Shared Sub CreatePdfReport(htmlContent As String, Optional filePath As String = "Report.pdf", Optional includeCharts As Boolean = True, Optional reportTitle As String = "Monthly Report")
' Optional parameters allow customization of the report's title and content dynamically
Dim renderer As New ChromePdfRenderer()
' Customize the PDF document
renderer.RenderingOptions.TextHeader.CenterText = reportTitle
renderer.RenderingOptions.TextFooter.CenterText = "Generated on " & DateTime.Now.ToString("dd-MM-yyyy")
renderer.RenderingOptions.MarginTop = 50 ' Set the top margin
renderer.RenderingOptions.MarginBottom = 50 ' Set the bottom margin
If Not includeCharts Then
' Modify HTML content to remove chart sections if not included
htmlContent = htmlContent.Replace("<div class='charts'></div>", "")
End If
' Render the HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Save the generated PDF to a file
pdf.SaveAs(filePath)
Console.WriteLine($"PDF report has been created at {filePath}")
End Sub
Shared Sub Main()
License.LicenseKey = "License-Key" ' Specify the license key if required
Dim htmlTemplate As String = "
<html>
<head>
<title>Monthly Report</title>
</head>
<body>
<h1>Monthly Performance Report</h1>
<p>This section contains text describing the overall performance for the month.</p>
<div class='charts'>
<h2>Sales Charts</h2>
</div>
</body>
</html>"
' Call the CreatePdfReport method with different parameters
CreatePdfReport(htmlTemplate, "BasicReport.pdf", False, "Basic Monthly Report")
CreatePdfReport(htmlTemplate, "FullReport.pdf", True, "Detailed Monthly Report")
End Sub
End Class
İşte FullReport PDF dosyası önizlemesi:

Kod örneğinde CreatePdfReport yöntemi, dosya yolu, grafiklerin eklenmesi ve rapor başlığı gibi opsiyonel parametrelerle HTML içeriğinden PDF belgeleri oluşturmak için yapılandırılmıştır. Bu tasarım, yöntemin çeşitli raporlama ihtiyaçlarına küçük kod ayarlamaları ile uyum sağlamasına olanak tanır. Yöntem içinde, IronPDF ayarları, rapor başlığını ve raporun üretildiği tarihi gösterecek şekilde PDF'ye özel başlıklar ve altbilgiler ekleyecek şekilde ayarlanır.
Belgenin görsel düzenini iyileştirmek için kenar boşlukları da yapılandırılır. includeCharts parametresinin true veya false olmasına bağlı olarak, HTML içeriği, grafik görselleri dahil etmek veya hariç tutmak için dinamik olarak değiştirilir. Son olarak, muhtemelen değiştirilmiş HTML, PDF'ye dönüştürülür ve belirtilen bir konuma kaydedilir. Bu örnek, opsiyonel parametrelerin özel PDF raporları oluşturma sürecini önemli ölçüde nasıl basitleştirebileceğini gösterir.
Sonuç

Sonuç olarak, opsiyonel parametreler, geliştiricilerin birden çok aşırı yüklenmiş yönteme gerek kalmadan daha esnek ve sürdürülebilir kodlar yaratmasını sağlar. C# opsiyonel parametreleri, IronPDF kütüphanesi ile birleştirilerek, geliştiriciler özelleştirilmiş PDF belgelerini etkin bir şekilde üretebilirler. Bu entegrasyon yalnızca kod tabanını basit hale getirmez, aynı zamanda işlevselliği de artırır ve farklı raporlama gereksinimleri veya kullanıcı tercihlerine uyum sağlamayı kolaylaştırır.
IronPDF, uygulamalarına PDF işlevselliği eklemek isteyen her .NET geliştiricisi için güçlü bir araçtır ve geliştiriciler için ücretsiz bir IronPDF denemesi sunar ve böylece kabiliyetlerini test etmek mümkündür. Sürekli kullanım için, lisanslar $999'den başlıyor ve profesyonel seviyede PDF manipülasyonu için maliyet-etkin bir çözüm sağlıyor.
Sıkça Sorulan Sorular
C#'da opsiyonel parametreler nelerdir ve nasıl kullanılırlar?
C#'da opsiyonel parametreler, bazı parametreler için varsayılan değerler belirterek geliştiricilerin, daha az argümanla metod tanımlamalarına olanak tanır. Bu, metod çağrısında bir argüman eksik bırakıldığında varsayılan değerin kullanılacağı anlamına gelir.
C#'da isimlendirilmiş parametreler kod okunabilirliğini nasıl artırır?
İsimlendirilmiş parametreler, geliştiricinin metod çağrısında hangi parametrelere doğrudan değer atandığını belirtmesine olanak tanıyarak kod okunabilirliğini artırır. Bu, özellikle çok sayıda parametreye sahip metodlarla ilgilenirken faydalıdır, çünkü hangi argümanın hangi parametreye ait olduğunu netleştirir.
C#'da opsiyonel parametreler ile metod aşırı yüklemesi arasındaki fark nedir?
Opsiyonel parametreler tek bir metodun farklı sayıda argümanı ele almasına olanak tanırken, metod aşırı yüklemesi, farklı parametrelerle bir metodun birden fazla versiyonunun oluşturulmasını içerir. Opsiyonel parametreler, birden fazla metod tanımı yapmadan karmaşıklığı azaltır.
.NET kütüphanesi kullanarak PDF oluştururken opsiyonel parametreler nasıl faydalı olabilir?
.NET kütüphanesini PDF oluşturmak için kullanırken, opsiyonel parametreler, PDF'ler oluşturmak için yalnızca gerekli argümanların belirtilmesine olanak tanıyarak metod çağrılarını sadeleştirir. Bu esneklik, PDF içeriğini, düzenini ve dosya özelliklerini özelleştirirken birden fazla aşırı yüklemeye ihtiyaç duymadan sağlar.
C#'da opsiyonel parametre kullanımı için en iyi uygulamalar nelerdir?
Opsiyonel parametre kullanımındaki en iyi uygulamalar, kafa karışıklığını önlemek için kullanımını sınırlamayı, varsayılan değerleri iyi belgelenmeyi ve metod çağrı açıklığını artırmak için isimlendirilmiş parametrelerle birlikte kullanılmalarını içerir.
Sabit ve opsiyonel parametrelerin birleştirilmesi metod tasarımına nasıl katkıda bulunur?
Sabit ve opsiyonel parametrelerin birleştirilmesi, geliştiricilerin belirli girdileri zorunlu kılarken diğerleri için esneklik sağlamasına olanak tanır. Bu tasarım stratejisi, gerekli verilerin sağlanmasını garanti altına alırken, ek, gerekli olmayan girdiler için metod arayüzünü basitleştirir.
C#'da opsiyonel parametrelerle PDF rapor oluşturmayı nasıl basitleştirebilirsiniz?
C#'da opsiyonel parametreler, başlık veya yazar gibi yalnızca gerekli verilerin belirtilmesine olanak tanıyarak, dosya yolu veya sayfa düzeni gibi diğer parametreler için varsayılan ayarları kullanarak, birden fazla metod versiyonuna ihtiyaç duymadan PDF rapor oluşturmayı sadeleştirir.




