BitMiracle Docotic PDF'ten IronPDF'e C# ile Nasıl Geçilir
BitMiracle Docotic PDF, %100 yönetilen kod mimarisi ve geniş programatik PDF işleme yetenekleriyle tanınan bir .NET PDF kütüphanesidir. Ancak, HTML'den PDF'ye dönüşüm, düzen özellikleri ve diğer işlevsellik için ayrı paketler gerektiren modüler ek yapısı, proje yönetimi ve lisanslamada karmaşıklık ekler. Bu kapsamlı kılavuz, BitMiracle Docotic PDF'den IronPDF'ye adım adım bir geçiş yolunu sağlıyor—yerleşik Chromium tabanlı HTML render etme ve tüm özelliklerin tek bir NuGet paketinde bulunduğu birleşik bir .NET PDF kütüphanesi.
Neden BitMiracle Docotic PDF'den IronPDF'ye Geçmelisiniz?
BitMiracle Docotic PDF sağlam PDF işleme özellikleri sunsa da, daha akıcı bir mimariye sahip alternatifler aramak için geliştirme ekiplerini yönlendiren çeşitli faktörler vardır.
Paket Mimari Karşılaştırması
BitMiracle Docotic PDF, tam işlevsellik için birden fazla paket gerektiren modüler bir ek yaklaşımı kullanır:
| Bağlam | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| HTML'den PDF'ye | Ayrı eklenti gerektirir (HtmlToPdf) | Yerleşik çekirdek özellik |
| Paket Yapısı | Çekirdek + birden çok eklenti | Tekar NuGet paketi |
| Lisans Modeli | Ek başına lisanslama | Tüm özellikler dahil |
| API Karmaşıklığı | Her eklenti için ayrı ad alanları | Birleşik API |
| HTML Motoru | Chromium (ek aracılığıyla) | Chromium (yerleşik) |
| Topluluk Boyutu | Daha küçük | Daha büyük, daha fazla kaynak |
| Dokümantasyon | Teknik referans | Kapsamlı eğitimler |
Özellik Eşitliği
Her iki kütüphane de kapsamlı PDF işlevselliğini destekler:
| Özellik | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Sıfırdan PDF oluştur | ✅ | ✅ |
| HTML'den PDF'ye | ✅ (eklenti gerekli) | ✅ (yerleşik) |
| URL'den PDF'ye | ✅ (eklenti gerekli) | ✅ (yerleşik) |
| PDF manipülasyonu | ✅ | ✅ |
| Metin çıkarmak | ✅ | ✅ |
| Birleştirme/Ayırma | ✅ | ✅ |
| Dijital imzalar | ✅ | ✅ |
| Şifreleme | ✅ | ✅ |
| Form doldurma | ✅ | ✅ |
| PDF/A uyumluluğu | ✅ | ✅ |
Yaklaşımda Kilit Farklar
BitMiracle Docotic PDF, tuvale dayalı çizim ve koordinat konumlandırmasını (canvas.DrawString(x, y, text)) kullanırken,IronPDFmizanpaj ve konumlandırma için HTML/CSS'yi kullanır. Bu, web teknolojilerine aşina olan geliştiriciler için içerik oluşturmayı basitleştiren bir paradigma değişikliği temsil eder.
Ö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)
BitMiracle Docotic PDFKullanımını Denetle
Tüm Docotic.Pdf referanslarını tanımlamak için çözüm dizininizde bu komutları çalıştırın:
# Find all Docotic.Pdf usages in your codebase
grep -r "using BitMiracle.Docotic" --include="*.cs" .
grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" .
# Find NuGet package references
grep -r "Docotic.Pdf" --include="*.csproj" .
# Find all Docotic.Pdf usages in your codebase
grep -r "using BitMiracle.Docotic" --include="*.cs" .
grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" .
# Find NuGet package references
grep -r "Docotic.Pdf" --include="*.csproj" .
Beklenen Büyük Değişiklikler
| Değişiklik | BitMiracle Docotic PDF | IronPDF | Etkisi |
|---|---|---|---|
| HTML işleme | HtmlToPdf eklentisi gerektirir | Yerleşik | Eklenti paketini kaldır |
| Sayfa indeksleme | 0 tabanlı (Pages[0]) |
0 tabanlı (Pages[0]) |
Değişiklik gerekmez |
| Koordinat sistemi | Sol alt köşeden başlar | HTML/CSS akışı | Konumlandırma için CSS kullan |
| Kanvas çizimi | PdfCanvas.DrawText() |
HTML işaretleme | Paradigma değişimi |
| Metin çıkarma | page.GetText() |
pdf.ExtractAllText() |
Yöntem adı değişikliği |
| Belge yükleme | new PdfDocument(path) |
PdfDocument.FromFile(path) |
Yapıcı → statik yöntem |
| Kaydetme | document.Save(path) |
pdf.SaveAs(path) |
Yöntem adı değişikliği |
| Atma | IDisposable deseni |
Gerekli değil | Daha basit kaynak yönetimi |
Adım Adım Geçiş Süreci
Adım 1: NuGet Paketlerini Güncelleyin
BitMiracle Docotic PDF paketlerini kaldırın veIronPDFkurun:
# Remove Docotic.Pdf packages
dotnet remove package BitMiracle.Docotic.Pdf
dotnet remove package BitMiracle.Docotic.Pdf.HtmlToPdf
dotnet remove package BitMiracle.Docotic.Pdf.Layout
# Install IronPDF
dotnet add package IronPdf
# Remove Docotic.Pdf packages
dotnet remove package BitMiracle.Docotic.Pdf
dotnet remove package BitMiracle.Docotic.Pdf.HtmlToPdf
dotnet remove package BitMiracle.Docotic.Pdf.Layout
# Install IronPDF
dotnet add package IronPdf
2. Adım: Namespace Referanslarını Güncelleyin
BitMiracle Docotic PDF ad alanlarınıIronPDFile değiştirin:
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
using BitMiracle.Docotic.Pdf.HtmlToPdf;
// Add this
using IronPdf;
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
using BitMiracle.Docotic.Pdf.HtmlToPdf;
// Add this
using IronPdf;
Imports IronPdf
3. Adım: Lisansı Yapılandır
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Tam API Geçiş Referansı
Belge İşlemleri
| Görev | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Boş belge oluştur | new PdfDocument() |
new PdfDocument() |
| Dosyadan yükle | new PdfDocument(path) |
PdfDocument.FromFile(path) |
| Akıştan yükle | PdfDocument.Load(stream) |
PdfDocument.FromStream(stream) |
| Baytlardan yükle | PdfDocument.Load(bytes) |
PdfDocument.FromBinaryData(bytes) |
| Dosya olarak kaydet | document.Save(path) |
pdf.SaveAs(path) |
| Sayfa sayısını al | document.PageCount |
pdf.PageCount |
| Kapat/El dışı bırak | document.Dispose() |
Gerekli değil |
HTML'den PDF'ye Dönüşüm
| Görev | BitMiracle Docotic PDF (HtmlToPdf Eklentisi) | IronPDF |
|---|---|---|
| HTML string'i PDF'ye çevirme | HtmlConverter.Create(html).ToPdf() |
renderer.RenderHtmlAsPdf(html) |
| HTML dosyasını PDF'ye dönüştür | HtmlConverter.Create(new Uri(filePath)).ToPdf() |
renderer.RenderHtmlFileAsPdf(path) |
| URL'den PDF'ye | HtmlConverter.Create(new Uri(url)).ToPdf() |
renderer.RenderUrlAsPdf(url) |
| Sayfa boyutunu ayarla | options.PageSize = PageSize.A4 |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
| Kenar boşluklarını ayarla | options.PageMargins = new Margins(20) |
renderer.RenderingOptions.MarginTop = 20 |
Birleştir ve Bölme İşlemleri
| Görev | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Belgeleri birleştirme | doc1.Append(doc2) |
PdfDocument.Merge(pdf1, pdf2) |
| Belgeyi ayırma | document.CopyPage(index) yeni dökümana |
pdf.CopyPages(start, end) |
Kod Geçiş Örnekleri
HTML'den PDF'ye Dönüşüm
En yaygın işlem, IronPDF'nin sağladığı önemli basitleşmeyi gösterir.
BitMiracle Docotic PDF Uygulaması:
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument())
{
string html = "<html><body><h1>Hello World</h1><p>This isHTML'den PDF'yeconversion.</p></body></html>";
pdf.CreatePage(html);
pdf.Save("output.pdf");
}
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument())
{
string html = "<html><body><h1>Hello World</h1><p>This isHTML'den PDF'yeconversion.</p></body></html>";
pdf.CreatePage(html);
pdf.Save("output.pdf");
}
Console.WriteLine("PDF created successfully");
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Class Program
Shared Sub Main()
Using pdf As New PdfDocument()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is HTML'den PDF'ye conversion.</p></body></html>"
pdf.CreatePage(html)
pdf.Save("output.pdf")
End Using
Console.WriteLine("PDF created successfully")
End Sub
End Class
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This isHTML'den PDF'yeconversion.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This isHTML'den PDF'yeconversion.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This isHTML'den PDF'yeconversion.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
IronPDF, using ifade gereksinimini ortadan kaldırır ve kendi Chromium tabanlı renderleme yeteneğini açıkça belirten özel bir ChromePdfRenderer sınıfı sağlar. Daha fazla HTML dönüştürme seçeneği için HTML'den PDF'ye belgelerine bakın.
Birden Fazla PDF'yi Birleştirme
BitMiracle Docotic PDF Uygulaması:
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf1 = new PdfDocument("document1.pdf"))
using (var pdf2 = new PdfDocument("document2.pdf"))
{
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
}
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf1 = new PdfDocument("document1.pdf"))
using (var pdf2 = new PdfDocument("document2.pdf"))
{
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
}
Console.WriteLine("PDFs merged successfully");
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Class Program
Shared Sub Main()
Using pdf1 As New PdfDocument("document1.pdf"), pdf2 As New PdfDocument("document2.pdf")
pdf1.Append(pdf2)
pdf1.Save("merged.pdf")
End Using
Console.WriteLine("PDFs merged successfully")
End Sub
End Class
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 As PdfDocument = PdfDocument.FromFile("document1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("document2.pdf")
Dim merged As PdfDocument = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
IronPDF'nin statik Merge yöntemi, birden fazla belgeyi doğrudan kabul eder ve yinelemeli Append deseninden daha temiz bir API sunar. Daha fazla seçenek için PDF birleştirme belgelerine bakın.
Metin Çıkarma
BitMiracle Docotic PDF Uygulaması:
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument("document.pdf"))
{
string allText = "";
foreach (var page in pdf.Pages)
{
allText += page.GetText();
}
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument("document.pdf"))
{
string allText = "";
foreach (var page in pdf.Pages)
{
allText += page.GetText();
}
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Module Program
Sub Main()
Using pdf As New PdfDocument("document.pdf")
Dim allText As String = ""
For Each page In pdf.Pages
allText &= page.GetText()
Next
Console.WriteLine("Extracted text:")
Console.WriteLine(allText)
End Using
End Sub
End Module
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine("Extracted text:")
Console.WriteLine(allText)
End Sub
End Class
IronPDF, çoğul satırlı bir döngüden tek bir yöntem çağrısına indirerek metin çıkarmayı basitleştirir. Daha fazla çıkarma seçeneği için metin çıkarma belgelerine bakın.
Şifre Koruma ve Şifreleme
IronPDF Uygulaması:
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>")
' Set security
pdf.SecuritySettings.UserPassword = "userPassword"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")
Kapsamlı güvenlik seçenekleri için şifreleme belgelerine bakın.
Üstbilgiler ve Altbilgiler
IronPDF Uygulaması:
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px;'>
Company Header - 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>Document 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;'>
Company Header - 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>Document 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;'>
Company Header - 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>Document Content</h1>")
pdf.SaveAs("with_headers.pdf")
IronPDF, dinamik sayfa numaralandırma için {page} ve {total-pages} gibi yer tutucu belirteçleri destekler. Daha fazla seçenek için bkz. başlıklar ve altbilgiler belgeleri.
Kritik Geçiş Notları
Kanvas'tan HTML'e Paradigma Değişimi
BitMiracle Docotic PDF'nin kanvas tabanlı çizim yaklaşımı, CSS konumlandırma ile HTML'e dönüştürülmelidir:
BitMiracle Docotic PDF Deseni:
var canvas = pdfPage.Canvas;
canvas.DrawString(50, 50, "Hello, World!");
var canvas = pdfPage.Canvas;
canvas.DrawString(50, 50, "Hello, World!");
Dim canvas = pdfPage.Canvas
canvas.DrawString(50, 50, "Hello, World!")
IronPDF Deseni:
var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
Dim html As String = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
Aynı Sayfa İndeksleme
Her iki kütüphane de 0 tabanlı indeksleme kullanır (Pages[0] ilk sayfadır)—sayfa erişim kodunda değişiklik gerekmez.
Atma Gerekmiyor
IronPDF, bellek yönetimi için using ifadelerine gerek duymaz, bu da kod yapısını basitleştirir:
//BitMiracle Docotic PDF- disposal required
using (var pdf = new PdfDocument("input.pdf"))
{
// operations
}
//IronPDF- disposal optional
var pdf = PdfDocument.FromFile("input.pdf");
// operations - no using statement needed
//BitMiracle Docotic PDF- disposal required
using (var pdf = new PdfDocument("input.pdf"))
{
// operations
}
//IronPDF- disposal optional
var pdf = PdfDocument.FromFile("input.pdf");
// operations - no using statement needed
Imports BitMiracle.Docotic.Pdf
' BitMiracle Docotic PDF - disposal required
Using pdf As New PdfDocument("input.pdf")
' operations
End Using
' IronPDF - disposal optional
Dim pdf = PdfDocument.FromFile("input.pdf")
' operations - no using statement needed
Async Destegi
BitMiracle Docotic PDF'nin HtmlToPdf eklentisi her yerde asenkron desenleri gerektirir.IronPDFhem senkron hem de asenkron yöntemleri destekler:
// Synchronous
var pdf = renderer.RenderHtmlAsPdf(html);
// Asynchronous
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Synchronous
var pdf = renderer.RenderHtmlAsPdf(html);
// Asynchronous
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
' Synchronous
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Asynchronous
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
ASP.NET Core Entegrasyonu
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
Göç Sonrası Kontrol Listesi
Kod göçünü tamamladıktan sonra, aşağıdakileri doğrulayın:
- PDF üretiminin doğru çalıştığını doğrulamak için tüm birim testlerini çalıştırın
- PDF çıktı kalitesini karşılaştırın (IronPDF'nin Chromium motoru biraz farklı render edebilir—genellikle daha iyi)
- Metin çıkarma doğruluğunu doğrulayın
- Form doldurma işlevselliğini test edin
- Dijital imzaları geçerli olanları doğrula
- Performans testi toplu işlemlerini
- Tüm hedef ortamlarda test edin
- CI/CD hatlarını güncelleyin
- Docotic.Pdf lisans dosyalarını kaldır
PDF Altyapınızı Geleceğe Hazırlama
.NET 10 ufukta ve C# 14 yeni dil özellikleri sunarken, birleşik mimariye sahip bir PDF kütüphanesi seçmek, bağımlılık yönetimini basitleştirir ve sürekli özellik erişimini sağlar. IronPDF'nin tek paket yaklaşımı, projeler 2025 ve 2026'ya doğru genişledikçe, eklenti sürüm uyumluluğunu takip etmenizi gerektirmez.
Ek Kaynaklar
BitMiracle Docotic PDF'den IronPDF'ye geçiş yapmak, birçok ek paket yönetiminin yol açtığı karmaşıklığı ortadan kaldırır ve Chromium tabanlı HTML işleme yeteneklerini sağlar. Tuval tabanlı çizimden HTML/CSS konumlandırmaya geçiş, çoğu .NET geliştiricisinin zaten sahip olduğu web geliştirme becerilerini kullanır ve daha sürdürülebilir PDF oluşturma kodu sağlar.

