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

BitMiracle Docotic PDF'ten IronPDF'e C# ile Nasıl Geçilir

BitMiracle Docotic PDF, %100 yönetilen kod mimarisi ve geniş programatik PDF manipülasyon yetenekleri ile tanınan bir .NET PDF kütüphanesidir. Bununla birlikte, modüler eklenti yapısı—HTML'ye PDF dönüşümü, yerleşim özellikleri ve diğer işlevsellik için ayrı paketlerin gerekliliği—proje yönetimi ve lisanslama karmaşasına eklenir. Bu kapsamlı kılavuz, BitMiracle Docotic PDF'den IronPDF'e adım adım bir geçiş yolu sunar—tüm özellikleri tek bir NuGet paketinde yerleşik Chromium tabanlı HTML render özelliği ile tek bir .NET PDF kütüphanesi.

Neden BitMiracle Docotic PDF'den IronPDF'e Geçmelisiniz?

BitMiracle Docotic PDF, güçlü PDF manipülasyon özellikleri sunsa da, çeşitli faktörler geliştirme ekiplerini daha sade bir mimariye sahip alternatifler aramaya yönlendiriyor.

Paket Mimarisi Karşılaştırması

BitMiracle Docotic PDF, tam işlevsellik için birden fazla paketin gerekli olduğu modüler bir eklenti yaklaşımı kullanır:

Aspekt BitMiracle Docotic PDF IronPDF
HTML-PDF Ayrı eklenti gerektirir (HtmlToPdf) Dahili çekirdek özellik
Paket Yapısı Çekirdek + çoklu eklenti Tek bir NuGet paketi
Lisanslama Modeli Eklenti başına lisanslama Tüm özellikler dahildir
API Karmaşıklığı Her eklenti için ayrı namespace'ler Birleşik API
HTML Motoru Chromium (eklenti aracılığıyla) Chromium (dahili)
Topluluk Büyüklüğü Daha küçük Daha büyük, daha fazla kaynak
Dokümantasyon Teknik referans Kapsamlı eğitimler

Özellik Eşdeğerliğ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 gereklidir) ✅ (dahili)
URL'yi PDF'ye çevir ✅ (eklenti gereklidir) ✅ (dahili)
PDF işleme
Metin çıkarma
Birleştirme/Bölme
Dijital imzalar
Şifreleme
Form doldurma
PDF/A uyumluluğu

Yaklaşımda Temel Farklar

BitMiracle Docotic PDF, tuval tabanlı çizim ve koordinat konumlandırması (canvas.DrawString(x, y, text)) kullanırken,IronPDF düzen ve konumlandırma için HTML/CSS kullanır. Bu, web teknolojilerine aşina olan geliştiriciler için içerik oluşturmada bir paradigma değişikliği temsil eder.

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)

BitMiracle Docotic PDFKullanım Denetimi

Tüm Docotic.Pdf referanslarını belirlemek 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" .
SHELL

Beklenebilecek Kırıcı Değişiklikler

Değişim BitMiracle Docotic PDF IronPDF Etki
HTML render HtmlToPdf eklentisi gerektirir Yerleşik Eklenti paketini kaldır
Sayfa dizinleme 0 tabanlı (Pages[0]) 0 tabanlı (Pages[0]) Değişim gerekmez
Koordinat sistemi Alt-sol orijin HTML/CSS akışı Konumlandırma için CSS kullan
Tuval çizimi PdfCanvas.DrawText() HTML işaretlemesi Paradigma değişimi
Metin çıkarımı page.GetText() pdf.ExtractAllText() Yöntem adı değişikliği
Belge yükleme new PdfDocument(path) PdfDocument.FromFile(path) Kurucu → statik yöntem
Kaydetme document.Save(path) pdf.SaveAs(path) Yöntem adı değişikliği
İmha IDisposable deseni Gerekli değil Daha basit kaynak yönetimi

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

1. Adım: NuGet Paketlerini Güncelleyin

BitMiracle Docotic PDF paketlerini kaldır ve IronPDF'i yükle:

# 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
SHELL

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

BitMiracle Docotic PDF ad alanlarınıIronPDF ile değiştirin:

// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
// HtmlConverter from the BitMiracle.Docotic.Pdf.HtmlToPdf NuGet package
// also lives in the BitMiracle.Docotic.Pdf namespace (no extra using needed).

// Add this
using IronPdf;
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
// HtmlConverter from the BitMiracle.Docotic.Pdf.HtmlToPdf NuGet package
// also lives in the BitMiracle.Docotic.Pdf namespace (no extra using needed).

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

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

// 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"
$vbLabelText   $csharpLabel

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)
Dosyaya kaydet document.Save(path) pdf.SaveAs(path)
Sayfa sayısını al document.PageCount pdf.PageCount
Kapat/Atık Yönetimi document.Dispose() Gerekli değil

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

Görev BitMiracle Docotic PDF(HtmlToPdf Eklentisi) IronPDF
HTML dizgisi PDF'ye await converter.CreatePdfFromStringAsync(html) renderer.RenderHtmlAsPdf(html)
HTML dosyasını PDF'ye await converter.CreatePdfAsync(filePath) renderer.RenderHtmlFileAsPdf(path)
URL'yi PDF'ye çevir await converter.CreatePdfAsync(new Uri(url)) renderer.RenderUrlAsPdf(url)
Sayfa boyutunu ayarla options.Page.SetSize(PdfPaperSize.A4) renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Kenar boşluklarını ayarla options.Page.MarginTop = 20 (vb.) renderer.RenderingOptions.MarginTop = 20

Birleştirme ve Bölme İşlemleri

Görev BitMiracle Docotic PDF IronPDF
Belgeleri birleştir doc1.Append("file.pdf") (yol/Akış/byte) PdfDocument.Merge(pdf1, pdf2)
Belgeyi ayır yeni belgeye document.CopyPage(index) pdf.CopyPages(start, end)

Kod Göç Örnekleri

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

En yaygın işlem, IronPDF'in sağladığı önemli basitleştirmeyi gösterir.

BitMiracle Docotic PDF Uygulaması:

// NuGet: Install-Package BitMiracle.Docotic.Pdf
// NuGet: Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf  (separate add-on required)
using BitMiracle.Docotic.Pdf;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // HtmlConverter is async-only and downloads Chromium on first use
        using var converter = await HtmlConverter.CreateAsync();

        string html = "<html><body><h1>Hello World</h1><p>This is HTML'den PDF'ye conversion.</p></body></html>";

        using var pdf = await converter.CreatePdfFromStringAsync(html);
        pdf.Save("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package BitMiracle.Docotic.Pdf
// NuGet: Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf  (separate add-on required)
using BitMiracle.Docotic.Pdf;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // HtmlConverter is async-only and downloads Chromium on first use
        using var converter = await HtmlConverter.CreateAsync();

        string html = "<html><body><h1>Hello World</h1><p>This is HTML'den PDF'ye conversion.</p></body></html>";

        using var pdf = await converter.CreatePdfFromStringAsync(html);
        pdf.Save("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
Imports BitMiracle.Docotic.Pdf
Imports System
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        ' HtmlConverter is async-only and downloads Chromium on first use
        Using converter = Await HtmlConverter.CreateAsync()

            Dim html As String = "<html><body><h1>Hello World</h1><p>This is HTML'den PDF'ye conversion.</p></body></html>"

            Using pdf = Await converter.CreatePdfFromStringAsync(html)
                pdf.Save("output.pdf")
            End Using

            Console.WriteLine("PDF created successfully")
        End Using
    End Function
End Module
$vbLabelText   $csharpLabel

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 is HTML'den PDF'ye conversion.</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 is HTML'den PDF'ye conversion.</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 is HTML'den PDF'ye conversion.</p></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")

        Console.WriteLine("PDF created successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF, using ifade gereksinimini ortadan kaldırır ve Chromium tabanlı renderleme yeteneğini açıkça gösteren özel bir ChromePdfRenderer sınıfı sunar. Daha fazla HTML dönüşüm 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 BitMiracle.Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;

class Program
{
    static void Main()
    {
        using (var pdf1 = new PdfDocument("document1.pdf"))
        {
            // PdfDocument.Append accepts a file path, Stream, or byte[] —
            // not another PdfDocument instance.
            pdf1.Append("document2.pdf");
            pdf1.Save("merged.pdf");
        }

        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package BitMiracle.Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;

class Program
{
    static void Main()
    {
        using (var pdf1 = new PdfDocument("document1.pdf"))
        {
            // PdfDocument.Append accepts a file path, Stream, or byte[] —
            // not another PdfDocument instance.
            pdf1.Append("document2.pdf");
            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")
            ' PdfDocument.Append accepts a file path, Stream, or byte[] —
            ' not another PdfDocument instance.
            pdf1.Append("document2.pdf")
            pdf1.Save("merged.pdf")
        End Using

        Console.WriteLine("PDFs merged successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

IronPDF'nin statik Merge yöntemi, birden çok belgeyi doğrudan kabul eder ve tekrarlayan Append deseninden daha temiz bir API sağlar. Daha fazla seçenek için PDF birleştirme belgelerine bakın.

Metin Çıkarma

BitMiracle Docotic PDF Uygulaması:

// NuGet: Install-Package BitMiracle.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 BitMiracle.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

Class Program
    Shared 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 Class
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

IronPDF, metin çıkarmayı çok satırlı bir döngüden tek bir yöntem çağrısına indirir. Daha fazla çıkarma seçeneği için metin çıkarma belgelerine bakın.

Parola 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")
$vbLabelText   $csharpLabel

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

Başlıklar 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")
$vbLabelText   $csharpLabel

IronPDF, dinamik sayfa numaralandırma için {page} ve {total-pages} gibi yer tutucu belirteçleri destekler. Daha fazla seçenek için başlıklar ve altbilgiler belgelerine bakın.

Kritik Taşıma Notları

Tuvalden HTML'ye Paradigma Değişikliği

BitMiracle Docotic PDF'nin tuval tabanlı çizim yaklaşımı HTML'ye CSS konumlandırması ile 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!")
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

Aynı Sayfa Dizinleme

Her iki kütüphane de 0 tabanlı indeksleme kullanır (Pages[0] ilk sayfadır)—sayfa erişim kodu için değişiklik gerekmez.

İmha Gereksiz

IronPDF, bellek yönetimi için using ifadeleri gerektirmez, 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
$vbLabelText   $csharpLabel

Async Desteği

BitMiracle Docotic PDF'nin HtmlToPdf eklentisi her yerde asenkron desenlere ihtiyaç duyar.IronPDF hem 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)
$vbLabelText   $csharpLabel

ASP.NET Core Integration

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.BinaryData, "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.BinaryData, "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.BinaryData, "application/pdf", "report.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Taşınma Sonrası Kontrollistesi

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

  • Tüm birim testlerini çalıştırarak PDF oluşturmanın doğru çalıştığını doğrulayın
  • PDF çıktısı kalitesini karşılaştırın (IronPDF'in Chromium motoru biraz farklı renderebilir—genellikle daha iyi olur)
  • Metin çıkarma doğruluğunu doğrulayın
  • Form doldurma işlevselliğini test edin
  • Dijital imzaları geçerli olup olmadığını doğrulayın
  • Yığın işlemlerinin performansını test edin
  • Tüm hedef ortamları test edin
  • CI/CD yapılarını güncelleyin
  • Docotic.Pdf lisans dosyalarını kaldırın

Ek Kaynaklar


BitMiracle Docotic PDF'den IronPDF'e geçiş yapmak, birden fazla eklenti paketi yönetme karmaşasını ortadan kaldırırken aynı Chromium tabanlı HTML render yeteneklerini sunar. Çizim bazlı çizimden HTML/CSS konumlandırmasına 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.

Lütfen dikkate alınBitmiracle Docotic.Pdf, ilgili sahibinin tescilli ticari markasıdır. Bu site, Bit Miracle ile ilişkilendirilmemiş, onaylanmamış veya sponsor olunmamıştır. 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