Altbilgi içeriğine atla
GEçIş KıLAVUZLARı

FastReport'tan IronPDF'e C# ile Nasıl Geçilir

FastReport.NET, .NET ekosistemi için tasarlanmış güçlü bir raporlama çözümüdür ve karmaşık veri odaklı raporlar oluşturmak için görsel bir rapor tasarımcısına ve bant tabanlı mimariye sahiptir. Ancak, FastReport, modern PDF üretim iş akışları için önemli zorluklar sunar: kod tabanlı geliştirmeyi sınırlayan rapor tasarımcısı bağımlılığı, band tabanlı kavramlar (DataBand, PageHeaderBand) etrafında dik bir öğrenme eğrisi, tanıdık CSS yerine mülkiyet biçimlendirmesi kullanarak sınırlı CSS desteği, RegisterData() şablonları içeren karmaşık veri bağlaması ve tam işlevsellik için birden fazla kurulum gerektiren parçalı NuGet paketleri. Bu kapsamlı rehber, FastReport'ten IronPDF'ye geçiş için adım adım bir yol haritası sunar - esnek, programlanabilir belge üretimi için HTML/CSS web teknolojilerini kullanan genel amaçlı bir PDF kütüphanesi.

FastReport'ten IronPDF'ye Neden Geçmeli?

FastReport.NET'in raporlama özel teknolojisi, çok yönlü PDF üretimi ihtiyacı olan geliştirme ekipleri için sürtünme yaratır. Bu mimari farklılıklarını anlamak, geçişinizi planlamak için esastır.

FastReportZorlukları

  1. Rapor Tasarımcısı Bağımlılığı: Karmaşık düzenler oluşturmak, görsel tasarımcı veya .frx dosya yapısının derin bilgisi gerektirir - kod tabanlı geliştirme yaklaşımları için uygun değildir.

  2. Dik Öğrenme Eğrisi: FastReport'un band tabanlı mimarisi (DataBand, PageHeaderBand, PageFooterBand), diğer teknolojilere aktarılmayan rapora özgü kavramları anlamayı gerektirir.

  3. Sınırlı CSS Desteği: Web standartlarına uyumlu stillendirme doğal olarak desteklenmez; stil, tanıdık CSS yerine FastReport'un mülkiyet formatı üzerinden yapılır.

  4. Karmaşık Veri Bağlaması: RegisterData() ve Veri Kaynağı bağlantıları, basit PDF üretim senaryoları için kalıp ekler.

  5. Parçalı Paketler: Tam işlevsellik için birden fazla NuGet paketi gereklidir (FastReport.OpenSource, FastReport.OpenSource.Export.PdfSimple, vb.). PDFSimpleExport OpenSource sürümünde sayfaları rasterize eder, bu nedenle çıktı PDF'ler seçilebilir metin yerine metin görüntüleri içerir.

  6. Lisanslama Karmaşıklığı: OpenSource sürümü (MIT) PDFSimpleExport aracılığıyla görüntü tabanlı PDF geri dönüşümü sağlar. Seçilebilir metin PDF dışa aktarma, şifreleme, dijital imzalama ve PDF/A, ticari FastReport.Net paketini gerektirir ve bu paket FastReport'un özel NuGet kanalında (https://nuget.fast-report.com/api/v3/index.json), nuget.org üzerinde değil, yayınlanır. Sadece FastReport.Net.Demo (sayfa sınırlı, filigranlı) nuget.org'dadır.

Mimari̇ Karşılaştırma

Aspekt FastReport IronPDF
Tasarım Yaklaşımı Görsel tasarımcı + .frx dosyaları HTML/CSS (web teknolojileri)
Öğrenme Eğrisi Dik (bant tabanlı kavramlar) Nazik (HTML/CSS bilgisi)
Data Bağlama RegisterData(), DataBand Dize enterpolasyonu, Razor, şablonlama
CSS Desteği Sınırlı Tam CSS3 (Flexbox/Grid ile)
Paket Modeli Birden fazla paket Tek paket (tüm özellikler)
Render Motoru Özel rapor motoru; Açık Kaynak PDF ihracatı rasterize eder Gömülü Chromium
PDF Manipülasyonu İhracat odaklı Tam (birleştirme, ayırma, güvenlik, formlar)
Modern .NET .NET Framework 4.6.2+ / .NET 6+ .NET Framework 4.6.2+ / .NET 6/7/8/9+

Kilit Göç Faydaları

  1. Web Teknolojileri: Tanıdık HTML/CSS kullanın, mülkiyet band tabanlı düzenler yerine
  2. Kod-Öncelikli Gelişim: Görsel tasarımcı bağımlılığı olmadan programatik olarak PDF'ler üretin
  3. Tek Paket: Tüm PDF özelliklerini içeren bir NuGet paketi
  4. Modern İşleme: Piksel mükemmeliyeti için son Chromium motoru
  5. Tam PDF Manipülasyonu: Birleştirme, bölme, güvenlik, form - sadece dışa aktarmak değil

Migration'a Ön Hazırlık

Ön Koşullar

Ortamınızın bu gereksinimleri karşıladığından emin olun:

  • .NET Framework 4.6.2+ or .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ veya C# eklentisi ile VS Code
  • NuGet Package Manager erişimi -IronPDF lisans anahtarı (ücretsiz deneme sürümü ironpdf.com adresinde mevcut)

FastReportKullanımını Denetle

TümFastReportreferanslarını belirlemek için çözüm dizininizde bu komutları çalıştırın:

# Find allFastReportreferences
grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep FastReport
# Find allFastReportreferences
grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep FastReport
SHELL

Rapor Şablonlarınızı Belgeleyin

Göç öncesinde, tüm .frx dosyalarını ve amaçlarını kataloglayın:

  • Rapor adı ve amacı
  • Kullanılan veri kaynakları
  • Başlıklar/altbilgiler yapılandırması
  • Sayfa numaralandırma gereksinimleri
  • Özel biçimlendirme veya stillendirme

Paradigm Değişimini Anlama

FastReport'ten IronPDF'ye geçişteki en önemli değişiklik temel tasarım yaklaşımıdır. FastReport, .frx şablon dosyaları ve DataBand, PageHeaderBand ve RegisterData() gibi özel kavramlarla bant tabanlı görsel tasarım kullanır. IronPDF, çoğu geliştiricinin zaten bildiği HTML/CSS - web teknolojilerini kullanır.

Bu,FastReportband yapılandırmalarını HTML şablonlarına dönüştürmeyi, RegisterData()'yı doğrudan veri bağı ile string interpolation veya Razor şablonları üzerinden değiştirmeyi ve PageHeaderBand/PageFooterBand'i HTML tabanlı başlıklar ve altbilgilerle dönüştürmeyi içerir.

Adım Adım Geçiş Süreci

1. Adım: NuGet Paketlerini Güncelleyin

TümFastReportpaketlerini kaldırın ve IronPDF yükleyin:

# Remove allFastReportpackages
dotnet remove package FastReport.OpenSource
dotnet remove package FastReport.OpenSource.Export.PdfSimple
dotnet remove package FastReport.OpenSource.Web
dotnet remove package FastReport.OpenSource.Data.MsSql

# Install IronPDF(includes all features)
dotnet add package IronPdf
# Remove allFastReportpackages
dotnet remove package FastReport.OpenSource
dotnet remove package FastReport.OpenSource.Export.PdfSimple
dotnet remove package FastReport.OpenSource.Web
dotnet remove package FastReport.OpenSource.Data.MsSql

# Install IronPDF(includes all features)
dotnet add package IronPdf
SHELL

Adım 2: Ad Alanı Referanslarını Güncelleyin

FastReport ad alanlarınıIronPDF ile değiştirin:

// Remove these
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

// Add this
using IronPdf;
// Remove these
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

// Add this
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Adım 3: Lisansı Yapılandırın

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Tam API Geçiş Referansı

Temel Sınıf Eşlemeleri

FastReportSınıfı IronPDF Eşdeğeri
Report ChromePdfRenderer
PDFExport ChromePdfRenderer + SecuritySettings
PDFSimpleExport ChromePdfRenderer
ReportPage HTML veya
TextObject HTML

, ,

HTMLObject Doğrudan HTML render
PageHeaderBand HtmlHeaderFooter
PageFooterBand HtmlHeaderFooter

Metot Haritalama

FastReportMetodu IronPDF Eşdeğeri
report.Load("template.frx") HTML şablon dosyas ya da metin dizisi
report.RegisterData(data, "name") Dize interpolasyonu veya Razor
report.Prepare() Yok
report.Export(export, stream) pdf.SaveAs(path)

Sayfa Numaralandırma Yer Tutucu Dönüşümü

FastReport ve IronPDF, sayfa numaraları için farklı yer tutucu sözdizimi kullanır:

FastReport IronPDF
[Page] {page}
[TotalPages] {total-pages}

Kod Göç Örnekleri

HTML'den PDF'ye Dönüşüm

Bu örnek, FastReport'un HTMLObject yaklaşımı ile IronPDF'nin doğrudan renderlemesi arasındaki temel farkı gösterir.

FastReport Uygulaması:

// NuGet: Install-Package FastReport.OpenSource
//        Install-Package FastReport.OpenSource.Export.PdfSimple
using FastReport;
using FastReport.Export.PdfSimple;
using System.Drawing;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            //FastReportrenders nothing unless objects live on a band that lives on a ReportPage.
            ReportPage page = new ReportPage();
            report.Pages.Add(page);
            page.ReportTitle = new ReportTitleBand { Height = Units.Millimeters * 100 };

            // Create HTML object (FastReport class is HtmlObject)
            HtmlObject htmlObject = new HtmlObject();
            htmlObject.Bounds = new RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 100);
            htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>";
            page.ReportTitle.Objects.Add(htmlObject);

            report.Prepare();

            // PDFSimpleExport rasterizes each page — text is not selectable
            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
//        Install-Package FastReport.OpenSource.Export.PdfSimple
using FastReport;
using FastReport.Export.PdfSimple;
using System.Drawing;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            //FastReportrenders nothing unless objects live on a band that lives on a ReportPage.
            ReportPage page = new ReportPage();
            report.Pages.Add(page);
            page.ReportTitle = new ReportTitleBand { Height = Units.Millimeters * 100 };

            // Create HTML object (FastReport class is HtmlObject)
            HtmlObject htmlObject = new HtmlObject();
            htmlObject.Bounds = new RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 100);
            htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>";
            page.ReportTitle.Objects.Add(htmlObject);

            report.Prepare();

            // PDFSimpleExport rasterizes each page — text is not selectable
            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.Drawing
Imports System.IO

Module Program
    Sub Main()
        Using report As New Report()
            ' FastReport renders nothing unless objects live on a band that lives on a ReportPage.
            Dim page As New ReportPage()
            report.Pages.Add(page)
            page.ReportTitle = New ReportTitleBand With {.Height = Units.Millimeters * 100}

            ' Create HTML object (FastReport class is HtmlObject)
            Dim htmlObject As New HtmlObject()
            htmlObject.Bounds = New RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 100)
            htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>"
            page.ReportTitle.Objects.Add(htmlObject)

            report.Prepare()

            ' PDFSimpleExport rasterizes each page — text is not selectable
            Dim pdfExport As New PDFSimpleExport()
            Using fs As New FileStream("output.pdf", FileMode.Create)
                report.Export(pdfExport, fs)
            End Using
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

FastReport, bir Rapor nesnesi oluşturmayı, bir ReportPage ve bir ReportTitleBand eklemeyi, açık sınırlarla bir bandın üzerine bir HtmlObject yerleştirmeyi, raporu hazırlamayı ve akış aracılığıyla dışa aktarmayı gerektirir. PDFSimpleExport çıktıyı rasterize eder, bu nedenle sonuç PDF, seçilebilir metin yerine metin görüntüleri içerir. IronPDF, üç satırda doğrudan HTML işleme ve seçilebilir metin çıktısıyla aynı sonucu elde eder. Daha fazla seçenek için, HTML'den PDF'e dokümantasyona bakın.

URL'den PDF'ye Dönüşüm

Bu örnek, FastReport'un manuel HTML indirme gerektirirken, IronPDF'nin URL renderlemeyi yerel olarak nasıl ele aldığını vurgular.

FastReport Uygulaması:

// NuGet: Install-Package FastReport.OpenSource
//        Install-Package FastReport.OpenSource.Export.PdfSimple
//FastReporthas no native URL-to-PDF. You must download the HTML yourself
// and feed it into HtmlObject — which handles only a limited HTML 4 subset,
// no JavaScript and no modern CSS.
using FastReport;
using FastReport.Export.PdfSimple;
using System.Drawing;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // Download HTML content from URL
        string htmlContent;
        using (var client = new HttpClient())
        {
            htmlContent = await client.GetStringAsync("https://example.com");
        }

        using (Report report = new Report())
        {
            ReportPage page = new ReportPage();
            report.Pages.Add(page);
            page.ReportTitle = new ReportTitleBand { Height = Units.Millimeters * 250 };

            HtmlObject htmlObject = new HtmlObject();
            htmlObject.Bounds = new RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 250);
            htmlObject.Text = htmlContent;
            page.ReportTitle.Objects.Add(htmlObject);

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
//        Install-Package FastReport.OpenSource.Export.PdfSimple
//FastReporthas no native URL-to-PDF. You must download the HTML yourself
// and feed it into HtmlObject — which handles only a limited HTML 4 subset,
// no JavaScript and no modern CSS.
using FastReport;
using FastReport.Export.PdfSimple;
using System.Drawing;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // Download HTML content from URL
        string htmlContent;
        using (var client = new HttpClient())
        {
            htmlContent = await client.GetStringAsync("https://example.com");
        }

        using (Report report = new Report())
        {
            ReportPage page = new ReportPage();
            report.Pages.Add(page);
            page.ReportTitle = new ReportTitleBand { Height = Units.Millimeters * 250 };

            HtmlObject htmlObject = new HtmlObject();
            htmlObject.Bounds = new RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 250);
            htmlObject.Text = htmlContent;
            page.ReportTitle.Objects.Add(htmlObject);

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.Drawing
Imports System.IO
Imports System.Net.Http
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        ' Download HTML content from URL
        Dim htmlContent As String
        Using client As New HttpClient()
            htmlContent = Await client.GetStringAsync("https://example.com")
        End Using

        Using report As New Report()
            Dim page As New ReportPage()
            report.Pages.Add(page)
            page.ReportTitle = New ReportTitleBand With {.Height = Units.Millimeters * 250}

            Dim htmlObject As New HtmlObject()
            htmlObject.Bounds = New RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 250)
            htmlObject.Text = htmlContent
            page.ReportTitle.Objects.Add(htmlObject)

            report.Prepare()

            Dim pdfExport As New PDFSimpleExport()
            Using fs As New FileStream("webpage.pdf", FileMode.Create)
                report.Export(pdfExport, fs)
            End Using
        End Using
    End Function
End Module
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

FastReport'un yerel bir URL'den PDF'ye dönüştürücüsü yoktur — HTML'yi HttpClient ile kendiniz indirirsiniz, bir bandın üzerindeki bir HtmlObject içine gömüp dışa aktarırsınız. HtmlObject yalnızca sınırlı bir HTML 4 alt kümesiyle, JavaScript çalıştırma olmadan ve modern CSS'siz çalışır ve PDFSimpleExport çıktıyı rasterize eder. IronPDF'nin RenderUrlAsPdf, gömülü Chromium motorunu kullanarak tam JavaScript çalıştırmayla canlı web sayfasını doğrudan render eder. Daha fazla seçenek için URL'den PDF'ye belgelere bakın.

Sayfa Numaralı Başlıklar ve Alt Bilgiler

Bu örnek, FastReport'un band tabanlı sistemi ile IronPDF'nin HTML tabanlı yaklaşımı arasındaki karmaşıklık farkını gösterir.

FastReport Uygulaması:

// NuGet: Install-Package FastReport.OpenSource
//        Install-Package FastReport.OpenSource.Export.PdfSimple
using FastReport;
using FastReport.Export.PdfSimple;
using System.Drawing;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            report.Load("template.frx");

            // Cast to ReportPage (Report.Pages can hold dialog pages too)
            ReportPage page = report.Pages[0] as ReportPage;

            // Page header — assigned to the band slot on the page
            page.PageHeader = new PageHeaderBand { Height = Units.Millimeters * 15 };
            TextObject headerText = new TextObject
            {
                Bounds = new RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 10),
                Text = "Document Header",
                HorzAlign = HorzAlign.Center
            };
            page.PageHeader.Objects.Add(headerText);

            // Page footer withFastReportpage tokens [Page] and [TotalPages]
            page.PageFooter = new PageFooterBand { Height = Units.Millimeters * 15 };
            TextObject footerText = new TextObject
            {
                Bounds = new RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 10),
                Text = "Page [Page] of [TotalPages]",
                HorzAlign = HorzAlign.Right
            };
            page.PageFooter.Objects.Add(footerText);

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("report.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
//        Install-Package FastReport.OpenSource.Export.PdfSimple
using FastReport;
using FastReport.Export.PdfSimple;
using System.Drawing;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            report.Load("template.frx");

            // Cast to ReportPage (Report.Pages can hold dialog pages too)
            ReportPage page = report.Pages[0] as ReportPage;

            // Page header — assigned to the band slot on the page
            page.PageHeader = new PageHeaderBand { Height = Units.Millimeters * 15 };
            TextObject headerText = new TextObject
            {
                Bounds = new RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 10),
                Text = "Document Header",
                HorzAlign = HorzAlign.Center
            };
            page.PageHeader.Objects.Add(headerText);

            // Page footer withFastReportpage tokens [Page] and [TotalPages]
            page.PageFooter = new PageFooterBand { Height = Units.Millimeters * 15 };
            TextObject footerText = new TextObject
            {
                Bounds = new RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 10),
                Text = "Page [Page] of [TotalPages]",
                HorzAlign = HorzAlign.Right
            };
            page.PageFooter.Objects.Add(footerText);

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("report.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.Drawing
Imports System.IO

Module Program
    Sub Main()
        Using report As New Report()
            report.Load("template.frx")

            ' Cast to ReportPage (Report.Pages can hold dialog pages too)
            Dim page As ReportPage = TryCast(report.Pages(0), ReportPage)

            ' Page header — assigned to the band slot on the page
            page.PageHeader = New PageHeaderBand With {.Height = Units.Millimeters * 15}
            Dim headerText As New TextObject With {
                .Bounds = New RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 10),
                .Text = "Document Header",
                .HorzAlign = HorzAlign.Center
            }
            page.PageHeader.Objects.Add(headerText)

            ' Page footer with FastReport page tokens [Page] and [TotalPages]
            page.PageFooter = New PageFooterBand With {.Height = Units.Millimeters * 15}
            Dim footerText As New TextObject With {
                .Bounds = New RectangleF(0, 0, Units.Millimeters * 190, Units.Millimeters * 10),
                .Text = "Page [Page] of [TotalPages]",
                .HorzAlign = HorzAlign.Right
            }
            page.PageFooter.Objects.Add(footerText)

            report.Prepare()

            Dim pdfExport As New PDFSimpleExport()
            Using fs As New FileStream("report.pdf", FileMode.Create)
                report.Export(pdfExport, fs)
            End Using
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        // Configure header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>");
        pdf.SaveAs("report.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        // Configure header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>");
        pdf.SaveAs("report.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        ' Configure header and footer
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        }

        renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        }

        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>")
        pdf.SaveAs("report.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

FastReport, bir şablon yüklemeyi, Pages[0] 'yi ReportPage 'ye dönüştürüp, sayfanın PageHeader / PageFooter yuvalarına başlık ve altbilgi bandı örnekleri atamayı, ardından her banda açık Bounds ile TextObject örnekleri bağlamayı gerektirir. IronPDF, basit HTML parçaları ile HtmlHeaderFooter kullanır - başlıkları ve altbilgileri tam CSS ile stilize edebilirsiniz. Sayfa numarası biçimlendirme değişikliğine dikkat edin: [Page], {page} olur ve [TotalPages], {total-pages} olur. Daha fazla seçenek için başlıklar ve altbilgiler belgelerine bakın.

Kritik Taşıma Notları

Hiçbir .frx Şablon Dosyası Yok

FastReport şablonları (.frx),IronPDF ile çalışmaz. Düzenlerinizi HTML/CSS şablonlarına dönüştürün:

//FastReport- loads .frx template
report.Load("report.frx");

//IronPDF- use HTML template
var html = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(html);
//FastReport- loads .frx template
report.Load("report.frx");

//IronPDF- use HTML template
var html = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(html);
' FastReport - loads .frx template
report.Load("report.frx")

' IronPDF - use HTML template
Dim html As String = File.ReadAllText("template.html")
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Veri Bağlama Dönüşümü

RegisterData()'yı doğrudan HTML üretimiyle değiştirin:

// FastReport
report.RegisterData(dataSet, "Data");
report.GetDataSource("Data").Enabled = true;

//IronPDF- use string interpolation or StringBuilder
var html = new StringBuilder();
foreach (var item in data)
{
    html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>");
}
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
// FastReport
report.RegisterData(dataSet, "Data");
report.GetDataSource("Data").Enabled = true;

//IronPDF- use string interpolation or StringBuilder
var html = new StringBuilder();
foreach (var item in data)
{
    html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>");
}
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
Imports System.Text

' FastReport
report.RegisterData(dataSet, "Data")
report.GetDataSource("Data").Enabled = True

' IronPDF - use string interpolation or StringBuilder
Dim html As New StringBuilder()
For Each item In data
    html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>")
Next
Dim pdf = renderer.RenderHtmlAsPdf(html.ToString())
$vbLabelText   $csharpLabel

Güvenlik Ayarları

//IronPDF security
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "password";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
//IronPDF security
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "password";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
'IronPDF security
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "password"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
$vbLabelText   $csharpLabel

Kapsamlı güvenlik seçenekleri için şifreleme belgelerine bakın.

Taşınma Sonrası Kontrollistesi

Kod taşımasını tamamladıktan sonra, aşağıdakileri doğrulayın:

  • Oluşturulan PDF'lerin görsel karşılaştırması
  • Başlıklar/altbilgiler ve sayfa numaralarını doğrulayın
  • Üretim veri hacimleriyle test edin
  • Güvenlik/şifreleme özelliklerini doğrulayın
  • Performans kıyaslaması
  • Kullanılmayan .frx şablon dosyalarını kaldırın -FastReportile ilgili kodu silin
  • Belgeleri güncelleyin

Ek Kaynaklar


FastReport'ten IronPDF'ye geçiş, görsel tasarımcı bağımlılığını, band tabanlı öğrenme eğrisini ve parçalı paket modelini ortadan kaldırır. HTML/CSS tabanlı PDF üretimine geçiş, tanıdık web teknolojilerinden yararlanırken tam PDF manipülasyon yetenekleri - birleştirme, bölme, güvenlik, formlar - tek bir paket içinde sağlar.

Lütfen dikkate alınFastReport, kendi sahibi tarafından tescilli bir ticari markadır. Bu site, Fast Reports ile ilişkilendirilmemiş, onun tarafından onaylanmamış veya sponsorluğunda değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

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

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara