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

Easy PDF SDK'dan IronPDF'e C# ile Nasıl Geçilir

Easy PDF SDK, modern geliştirme ortamlarında önemli dağıtım ve bakım zorlukları yaratan birkaç köklü teknolojiye dayanır.

YaygınKolay PDF SDKDağıtım Sorunları

Geliştiriciler,Kolay PDF SDKile çalışırken sık sık bu sorunlarla karşılaşır:

  • bcl.easypdf.interop.easypdfprinter.dll error loading
  • COM object that has been separated from its underlying RCW cannot be used
  • Timeout expired waiting for print job to complete
  • The printer operation failed because the service is not running
  • Error: Access denied (etkileşimli oturum gerekli)
  • Cannot find printer: BCL easyPDF Printer

Bu hatalar, modern sunucu ortamlarında mevcut olmayan sanal yazıcı sürücüleri, COM interop ve etkileşimli Windows oturumları gerektiren Easy PDF SDK'nın temel mimarisinden kaynaklanır.

Kolay PDF SDKvs. IronPDF: Temel Farklılıklar

Özellik Kolay PDF SDK IronPDF
Platform Yalnızca Windows Windows, Linux, macOS, Docker
Office Bağımlılığı Gerekli None
Kurulum Karmaşık MSI + yazıcı sürücüsü + COM Basit NuGet paketi
Sunucu Desteği Etkileşimli oturum gerektirir Başsız çalıştırılır
HTML İşleme Temel (Office tabanlı) Tam Chromium (CSS3, JS)
.NET Desteği Sınırlı .NET Core Tam .NET 5/6/7/8/9
Asenkron Desen Geri arama tabanlı Yerel async/await
Kapsayıcı Desteği Çalıştıramaz Tam Docker/Kubernetes

Platform Sınırlamaları

Kolay PDF SDK'nın yalnızca Windows sistemlerine bağımlılığı, Microsoft Office kurulumlarını gerektirerek Linux, macOS veya Docker gibi konteyner ortamları desteğini engeller. Bu bağımlılık, sunucu kurulumlarını zahmetli hale getirir ve hizmet benimsemeyi Windows ortamlarıyla sınırlar—çoklu platform DevOps uygulayan veya konteynerleri dağıtım için kullanan ekipler için önemli bir kısıtlamadır.

Önceden Taşıma Hazırlığı

Önkoşullar

Ortamınızın bu gereksinimlere uygun olduğunu doğrulayın:

  • .NET Framework 4.6.2+ veya .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ veya C# uzantılı VS Code
  • NuGet Paket Yöneticisi erişimi -IronPDFlisans anahtarı (ücretsiz deneme ironpdf.com adresinde mevcuttur)

Kolay PDF SDK Kullanımını Denetle

Kolay PDF SDK referanslarının tamamını belirlemek için bu komutları çözüm dizininde çalıştırın:

# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .

# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .

# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .

# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .
# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .

# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .

# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .

# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .
SHELL

Beklenen Büyük Değişiklikler

Kolay PDF SDK Deseni Gereken Değişiklik
new Printer() ChromePdfRenderer kullanın
PrintOfficeDocToPDF() Office dönüştürme farklı şekilde ele alınmaktadır
RenderHTMLToPDF() RenderHtmlAsPdf()
COM birlikte çalışma referansları Tamamen kaldırın
Yazıcı sürücüsü yapılandırması Gerekli değil
BeginPrintToFile() geri aramaları Yerel async/await
Etkileşimli oturum gereksinimleri Başsız çalıştırılır
1 tabanlı sayfa indeksleme 0 tabanlı indeksleme
Saniye cinsinden zaman aşımı Milisaniye cinsinden zaman aşımı

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

Adım 1: Kolay PDF SDK'yı Kaldırın

Kolay PDF SDK genellikle MSI yükleyici, manuel DLL referansları veya GAC kaydı aracılığıyla yüklenir. Tüm referansları kaldırın:

  1. BCL EasyPDF SDK'yı Programlar ve Özellikler'den kaldırın
  2. Projeden DLL referanslarını kaldırın
  3. COM birlikte çalışma referanslarını kaldırın
  4. Mevcutsa GAC girişlerini temizleyin

Adım 2: IronPDF'i Kurun

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Ya da Paket Yöneticisi Konsolu aracılığıyla:

Install-Package IronPdf

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

Kolay PDF SDK ad alanlarınıIronPDFile değiştirin:

// Remove these
using BCL.easyPDF;
using BCL.easyPDF.Interop;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.Printer;

// Add these
using IronPdf;
using IronPdf.Rendering;
// Remove these
using BCL.easyPDF;
using BCL.easyPDF.Interop;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.Printer;

// Add these
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
$vbLabelText   $csharpLabel

Tam API Geçiş Referansı

Çekirdek Sınıf Eşleştirmesi

Kolay PDF SDK Sınıfı IronPDF Eşdeğeri
Printer ChromePdfRenderer
PDFDocument PdfDocument
HTMLConverter ChromePdfRenderer
PrinterConfiguration ChromePdfRenderOptions
PageOrientation PdfPaperOrientation
PageSize PdfPaperSize
SecurityHandler PdfDocument.SecuritySettings

PDF Oluşturma Yöntemleri

Kolay PDF SDK Yöntemi IronPDF Yöntemi
printer.RenderHTMLToPDF(html, path) renderer.RenderHtmlAsPdf(html).SaveAs(path)
printer.RenderUrlToPDF(url, path) renderer.RenderUrlAsPdf(url).SaveAs(path)
htmlConverter.ConvertHTML(html, doc) renderer.RenderHtmlAsPdf(html)
htmlConverter.ConvertURL(url, doc) renderer.RenderUrlAsPdf(url)

PDF Manipülasyon Yöntemleri

Kolay PDF SDK Yöntemi IronPDF Yöntemi
doc.Append(doc2) PdfDocument.Merge(pdf1, pdf2)
doc.ExtractPages(start, end) pdf.CopyPages(start, end)
doc.DeletePage(index) pdf.RemovePage(index)
doc.GetPageCount() pdf.PageCount
doc.Save(path) pdf.SaveAs(path)
doc.Close() pdf.Dispose() veya using
doc.ExtractText() pdf.ExtractAllText()

Yapılandırma Seçenekleri

Kolay PDF SDK Seçeneği IronPDF Seçeneği
config.TimeOut RenderingOptions.Timeout
config.PageOrientation = Landscape RenderingOptions.PaperOrientation = Landscape
config.PageSize = A4 RenderingOptions.PaperSize = PdfPaperSize.A4
config.MarginTop/Bottom/Left/Right RenderingOptions.MarginTop, vb.

Kod Geçiş Örnekleri

HTML Dizesinden PDF'e

Kolay PDF SDK Uygulaması:

// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf = new PDFDocument();
        var htmlConverter = new HTMLConverter();
        htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
        pdf.Save("output.pdf");
        pdf.Close();
    }
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf = new PDFDocument();
        var htmlConverter = new HTMLConverter();
        htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
        pdf.Save("output.pdf");
        pdf.Close();
    }
}
Imports BCL.EasyPDF
Imports System

Class Program
    Shared Sub Main()
        Dim pdf As New PDFDocument()
        Dim htmlConverter As New HTMLConverter()
        htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf)
        pdf.Save("output.pdf")
        pdf.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF, ayrı HTMLConverter sınıfını ve manuel Close() çağrılarını ortadan kaldırır—bu da daha temiz, daha bakımı kolay bir kod ile sonuçlanır.

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

Kolay PDF SDK Uygulaması:

// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf = new PDFDocument();
        var htmlConverter = new HTMLConverter();
        htmlConverter.ConvertURL("https://example.com", pdf);
        pdf.Save("webpage.pdf");
        pdf.Close();
    }
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf = new PDFDocument();
        var htmlConverter = new HTMLConverter();
        htmlConverter.ConvertURL("https://example.com", pdf);
        pdf.Save("webpage.pdf");
        pdf.Close();
    }
}
Imports BCL.EasyPDF
Imports System

Module Program
    Sub Main()
        Dim pdf As New PDFDocument()
        Dim htmlConverter As New HTMLConverter()
        htmlConverter.ConvertURL("https://example.com", pdf)
        pdf.Save("webpage.pdf")
        pdf.Close()
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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;
using System;

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

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

Birden Fazla PDF'yi Birleştirme

Kolay PDF SDK Uygulaması:

// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf1 = new PDFDocument("document1.pdf");
        var pdf2 = new PDFDocument("document2.pdf");
        pdf1.Append(pdf2);
        pdf1.Save("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf1 = new PDFDocument("document1.pdf");
        var pdf2 = new PDFDocument("document2.pdf");
        pdf1.Append(pdf2);
        pdf1.Save("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}
Imports BCL.EasyPDF
Imports System

Module Program
    Sub Main()
        Dim pdf1 As New PDFDocument("document1.pdf")
        Dim pdf2 As New PDFDocument("document2.pdf")
        pdf1.Append(pdf2)
        pdf1.Save("merged.pdf")
        pdf1.Close()
        pdf2.Close()
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        };
        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        };
        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic

Class Program
    Shared Sub Main()
        Dim pdfs = New List(Of PdfDocument) From {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        }
        Dim merged = PdfDocument.Merge(pdfs)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF'nin statik Merge yöntemi, birden fazla belgeyi doğrudan kabul eder ve manuel Append döngü desenini ortadan kaldırır.

Şifre Koruması

IronPDF Uygulaması:

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;

pdf.SaveAs("protected.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;

pdf.SaveAs("protected.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>")

' Set security
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit

pdf.SaveAs("protected.pdf")
$vbLabelText   $csharpLabel

Üstbilgiler ve Altbilgiler

Kolay PDF SDK, yerel üstbilgi/altbilgi desteğine sahip değil—üstbilgi ve altbilgiler kaynak HTML'e dahil edilmelidir.IronPDFözel işlevsellik sağlar:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:12px; font-family:Arial;'>
            Company Name - Confidential
        </div>",
    DrawDividerLine = true,
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true,
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");
pdf.SaveAs("with_headers.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:12px; font-family:Arial;'>
            Company Name - Confidential
        </div>",
    DrawDividerLine = true,
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true,
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");
pdf.SaveAs("with_headers.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='text-align:center; font-size:12px; font-family:Arial;'>
            Company Name - Confidential
        </div>",
    .DrawDividerLine = True,
    .MaxHeight = 30
}

renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='text-align:center; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    .DrawDividerLine = True,
    .MaxHeight = 25
}

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>")
pdf.SaveAs("with_headers.pdf")
$vbLabelText   $csharpLabel

Daha fazla seçenek için bkz. başlıklar ve altbilgiler belgeleri.

Asenkron PDF Oluşturma

Kolay PDF SDK geri arama tabanlı async desenlerini kullanır. IronPDF, yerel async/await'i destekler:

Kolay PDF SDK Uygulaması:

using BCL.easyPDF;

Printer printer = new Printer();

// BCL uses callback-based async
printer.BeginPrintToFile(
    "https://example.com",
    "output.pdf",
    OnPrintComplete,
    OnPrintError
);

Console.ReadLine();
printer.Dispose();
using BCL.easyPDF;

Printer printer = new Printer();

// BCL uses callback-based async
printer.BeginPrintToFile(
    "https://example.com",
    "output.pdf",
    OnPrintComplete,
    OnPrintError
);

Console.ReadLine();
printer.Dispose();
Imports BCL.easyPDF

Dim printer As New Printer()

' BCL uses callback-based async
printer.BeginPrintToFile( _
    "https://example.com", _
    "output.pdf", _
    AddressOf OnPrintComplete, _
    AddressOf OnPrintError _
)

Console.ReadLine()
printer.Dispose()
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

using IronPdf;
using System.Threading.Tasks;

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

        // Native async/await
        var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
        await pdf.SaveAsAsync("output.pdf");

        Console.WriteLine("PDF created: output.pdf");
    }
}
using IronPdf;
using System.Threading.Tasks;

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

        // Native async/await
        var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
        await pdf.SaveAsAsync("output.pdf");

        Console.WriteLine("PDF created: output.pdf");
    }
}
Imports IronPdf
Imports System.Threading.Tasks

Class Program
    Shared Async Function Main() As Task
        Dim renderer = New ChromePdfRenderer()

        ' Native async/await
        Dim pdf = Await renderer.RenderUrlAsPdfAsync("https://example.com")
        Await pdf.SaveAsAsync("output.pdf")

        Console.WriteLine("PDF created: output.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Kritik Geçiş Notları

Sayfa İndeks Değişikliği

Kolay PDF SDK 1 tabanlı indekslemeyi kullanır.IronPDF0 tabanlı indeksleme kullanır:

// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);

// IronPDF: 0-based
pdf.CopyPages(0, 4);
// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);

// IronPDF: 0-based
pdf.CopyPages(0, 4);
' Easy PDF SDK: 1-based
doc.ExtractPages(1, 5)

' IronPDF: 0-based
pdf.CopyPages(0, 4)
$vbLabelText   $csharpLabel

Milisaniye Cinsinden Zaman Aşımı

Kolay PDF SDK zaman aşımı değerleri için saniyeleri kullanır.IronPDFmilisaniyeleri kullanır:

// Easy PDF SDK: seconds
config.TimeOut = 120;

// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;
// Easy PDF SDK: seconds
config.TimeOut = 120;

// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;
' Easy PDF SDK: seconds
config.TimeOut = 120

' IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000
$vbLabelText   $csharpLabel

ASP.NET Core Entegrasyonu

Kolay PDF SDK, etkileşimli oturum gereksinimleri nedeniyle web bağlamlarında zorlanır.

IronPDF Deseni:

[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate")]
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");

        return File(pdf.BinaryData, "application/pdf", "report.pdf");
    }

    [HttpGet("generate-async")]
    public async Task<IActionResult> GeneratePdfAsync()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");

        return File(pdf.Stream, "application/pdf", "report.pdf");
    }
}
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate")]
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");

        return File(pdf.BinaryData, "application/pdf", "report.pdf");
    }

    [HttpGet("generate-async")]
    public async Task<IActionResult> GeneratePdfAsync()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");

        return File(pdf.Stream, "application/pdf", "report.pdf");
    }
}
Imports Microsoft.AspNetCore.Mvc

<ApiController>
<Route("[controller]")>
Public Class PdfController
    Inherits ControllerBase

    <HttpGet("generate")>
    Public Function GeneratePdf() As IActionResult
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>")

        Return File(pdf.BinaryData, "application/pdf", "report.pdf")
    End Function

    <HttpGet("generate-async")>
    Public Async Function GeneratePdfAsync() As Task(Of IActionResult)
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>")

        Return File(pdf.Stream, "application/pdf", "report.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Docker Dağıtımı

Kolay PDF SDK Docker konteynerlerinde çalışamaz—Windows konteynerleri, Microsoft Office, sanal yazıcı sürücüleri ve etkileşimli masaüstü oturumları gerektirir. Bu, konteynerleşme ile temel olarak uyumsuzdur.

IronPDF Docker Yapılandırması:

FROM mcr.microsoft.com/dotnet/aspnet:8.0

# Install Chromium dependencies
RUN apt-get update && apt-get install -y \
    libc6 libgdiplus libx11-6 libxcomposite1 \
    libxdamage1 libxrandr2 libxss1 libxtst6 \
    libnss3 libatk-bridge2.0-0 libgtk-3-0 \
    libgbm1 libasound2 fonts-liberation \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]

Genel Göç Sorunlarını Giderme

Sorun: Yazıcı Bulunmuyor

Belirti: Cannot find printer: BCL easyPDF Printer

Çözüm: IronPDF, yazıcı sürücülerine ihtiyaç duymaz:

// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Sorun: COM Interop Hataları

Belirti: DLL error loading veya RCW hataları

Çözüm: Tüm COM referanslarını kaldırın ve IronPDF'nin yönetilen API'sini kullanın.

Sorun: Sunucuda Zaman Aşımı

Sebep: PDF oluşturma web sunucusunda takılıyor

Çözüm: IronPDF'yi başsız modda çalıştırın, etkileşimli oturumlar olmadan:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.Timeout = 60000 ' Reliable timeout
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Sorun: Arka Plan Yazdırmıyor

Sebep: CSS arka planları eksik

Çözüm: Arka plan yazdırmayı etkinleştirin:

renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = True
$vbLabelText   $csharpLabel

Göç Sonrası Kontrol Listesi

Kod göçünü tamamladıktan sonra, aşağıdakileri doğrulayın:

  • IronPDF'nin Chromium motoru ile PDF çıktı kalitesini doğrulayın
  • Karmaşık HTML/CSS ile tüm kenar durumları test edin
  • Sunucu dağıtımının etkileşimli oturumlar olmadan çalıştığını doğrulayın
  • Docker/konteyner dağıtımını test edin
  • Dağıtım paketinden BCL EasyPDF yükleyicisini kaldırın
  • Artık gerekli olmayan Office kurulumunu sunuculardan kaldırın
  • Yeni NuGet paketiyle CI/CD hatlarını güncelleyin

PDF Altyapınızı Geleceğe Hazırlama

.NET 10 ufukta ve C# 14 yeni dil özellikleriyle tanıştırılırken, platformlar arası bir PDF kütüphanesi seçmek, evrim geçiren dağıtım modelleriyle uyumluluğu sağlar. IronPDF'nin Linux, Docker ve bulut tabanlı mimariler için desteği, projeler 2025 ve 2026'ya kadar uzandıkça yatırımınızın karşılığını almanızı sağlar—Easy PDF SDK'nın yalnızca Windows ile sınırlı kısıtlamaları olmadan.

Ek Kaynaklar


Kolay PDF SDK'dan IronPDF'ye geçmek, sanal yazıcı bağımlılıklarını, COM birlikte çalışma sorunlarını ve yalnızca Windows ile sınırlı kısıtlamaları ortadan kaldırır. Chromium tabanlı renderinge geçiş, CSS3 ve JavaScript desteğini geliştirirken Docker, Kubernetes ve bulut ortamlarına dağıtımı mümkün kılar ki bunlar daha önce Easy PDF SDK'nın eski mimarisiyle imkansızdı.

Curtis Chau
Teknik Yazar

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

Daha Fazlasını Oku

Iron Destek Ekibi

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