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

MuPDF'den IronPDF'e C# ile Nasıl Geçilir

Neden MuPDF'den IronPDF'e Geçiş Yapılmalı

MuPDF Zorlukları

MuPDF yetenekli bir PDF araç setidir, ancak çift lisansı (AGPL/ticari, Artifex'ten) ve öncelikle render odaklı tasarımı, ticari HTML-tabanlı uygulamalar inşa eden .NET geliştiricileri için gerçek sürtüşmeler yaratır. İki ana .NET sarmalayıcı mevcut: MuPDFCore (topluluk, arklumpus tarafından, AGPL-3.0) ve MuPDF.NET (Artifex'in resmi C# bağları, PyMuPDF'i yansıtan).

  1. AGPL Lisans Tuzağı: HemMuPDFhem de sarmalayıcılar varsayılan olarak AGPL-3.0 altında gelir. Kapalı kaynak bir ürünü AGPL kodu üzerinden dağıtmak, ya AGPL altında açık kaynağa geçmeyi ya da Artifex'ten ticari bir lisans satın almayı gerektirir (fiyatlandırma teklife dayalıdır, yayınlanmamıştır).

  2. Render-Öncelikli Odak: MuPDF.NET birleştirme, karartma, imzalama ve damgalama işlemlerini (PyMuPDF'i yansıtan) yapabilmesine rağmen, API'nin çoğu ve araçları görüntüleme ve yapısal metin çıkarma etrafında şekillendirilmiştir, HTML-tabanlı belge oluşturma yerine odaklanılmıştır.

  3. HTML-to-PDF Motoru Yok: Ne MuPDF.NET ne de MuPDFCore, bir HTML/CSS motoru taşır. HTML'den PDF üretmek, ayrıca bir tarayıcı motorunu (Chromium, wkhtmltopdf, PrinceXML) kullanmayı ve sonucu yalnızcaMuPDFile yüklemeyi gerektirir.

  4. Yerel Bağımlılıklar: Her iki sarmalayıcı da per-RID ikili dosyalar (win-x64, linux-x64, osx-x64) ile MuPDFCore.NativeAssets / MuPDF.NativeAssets paketlerini taşır. Çapraz platform dağıtımı çalışır, ancak Docker görüntüleri uygun yerel paketi ve temel görüntüyü (glibc ve musl) gerektirir.

  5. HTML Filigranlar / Başlıklar / Altbilgiler Yok: Sayfa başına baskı, resim ve metin tabanlıdır; Chromium tabanlı render motorlarının sunduğu şekilde hiçbir {page}/{total-pages} şablon motoru yok.

  6. C Interop Yüzeyi: Sarmalayıcılar, temel C kütüphanesine uyumlu olacak şekilde bağlam/belge ömürlerini sunar — imha sırası önemlidir, doğal çökmeler tüm süreci çökertirebilir ve büyük belgeler için yeniden yönlendirme maliyeti önemlidir.

MuPDF ve IronPDF Karşılaştırması

Özellik MuPDF IronPDF
Lisans AGPL-3.0 veya teklif tabanlı ticari (Artifex) Yayınlanmış fiyatlarla ticari
Ana Odak Renderleme, yapılandırılmış metin, düşük düzey toolbox HTML güdümlü oluşturma + manipülasyon
HTML'den PDF'ye Desteklenmiyor (HTML motoru yok) Tam Chrome motoru
PDF Oluşturma Sadece sayfa seviyesi (metin/resim/vektör ekle) HTML, URL, resimler
PDF Manipülasyonu MuPDF.NET tarafından desteklenir (InsertPdf, Select, DeletePage) Desteklenir (Merge, CopyPages, RemovePages)
Bağımlılıklar YerelMuPDF+ RID NativeAssets Yönetilen sarıcı + paketlenmiş Chromium
Platform Desteği Win/Linux/macOS üzerinden NativeAssets Win/Linux/macOS/Docker
Asenkron Destek Çoğunlukla senkron; MuPDFCore'de bazı asenkron Renderleyici ve doküman genelinde asenkron API'ler
.NET Entegrasyonu C kütüphanesi etrafında P/Invoke sarıcılar .NET sarıcı + yerel Chromium

IronPDF, modern .NET sürümleri arasında yönetilen bir .NET kütüphanesi olarak çalışır, yerel etkileşim karmaşıklığı olmadan.


Göç Karmaşıklığı Değerlendirmesi

Özelliklere Göre Tahmini Çaba

Özellik Göç Karmaşıklığı
Belge Yükleme Çok Düşük
Metin Çıkarma Çok Düşük
PDF Birleştirme Düşük
Görüntü İşleme Düşük
HTML'den PDF'ye Uygun Değil (Yeni Yetenek)
Güvenlik/Filigranlar Uygun Değil (Yeni Yetenek)

Paradigma Değişimi

BuMuPDFgeçişindeki temel değişiklik, yalnızca görüntüleme cihazından tam PDF çözümüne:

MuPDF.NET:  Document → doc[i] → GetText / GetPixmap / InsertPdf
MuPDFCore:  MuPDFContext → MuPDFDocument → Pages[i] → Render / SaveImage
IronPDF:    PdfDocument.FromFile() → Tam manipülasyon → Oluştur/Düzenle/Birleştir/Güvenli

Başlamadan Önce

Ön Koşullar

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleyebilme
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# RemoveMuPDFpackages (whichever wrapper you used)
dotnet remove package MuPDF.NET
dotnet remove package MuPDFCore
dotnet remove package MuPDFCore.NativeAssets.Linux
dotnet remove package MuPDFCore.NativeAssets.MacOS
dotnet remove package MuPDFCore.NativeAssets.Windows
dotnet remove package MuPDF.NativeAssets

# Install IronPDF
dotnet add package IronPdf
# RemoveMuPDFpackages (whichever wrapper you used)
dotnet remove package MuPDF.NET
dotnet remove package MuPDFCore
dotnet remove package MuPDFCore.NativeAssets.Linux
dotnet remove package MuPDFCore.NativeAssets.MacOS
dotnet remove package MuPDFCore.NativeAssets.Windows
dotnet remove package MuPDF.NativeAssets

# Install IronPDF
dotnet add package IronPdf
SHELL

Ayrıca dağıtımınızdan yerelMuPDFikili dosyalarını kaldırın:

  • mupdf.dll, libmupdf.so, libmupdf.dylib sil
  • Platforma özgü klasörleri kaldır (runtimes/*/native/)
  • Docker dosyalarınıMuPDFkurulumunu kaldıracak şekilde güncelleyin

Lisans Yapılandırması

// 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

MuPDF Kullanımını Tanımla

# Find allMuPDFreferences
grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" .
# Find allMuPDFreferences
grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" .
SHELL

Tam API Referansı

Belge Yükleme

MuPDF IronPDF
new Document(path) (MuPDF.NET) / new MuPDFDocument(ctx, path) (MuPDFCore) PdfDocument.FromFile(path)
new Document("pdf", stream) (MuPDF.NET) PdfDocument.FromStream(stream)
doc.Close() / Dispose() pdf.Dispose()

Sayfa Erişimi

MuPDF IronPDF
doc.PageCount (MuPDF.NET) / document.Pages.Count (MuPDFCore) pdf.PageCount
doc[index] (MuPDF.NET) / document.Pages[index] (MuPDFCore) pdf.Pages[index]
doc[i].GetText() / yapılandırılmış metin yineleme (MuPDFCore) page.Text

Metin Çıkarma

MuPDF IronPDF
doc[i].GetText() üzerinde döngü kur pdf.ExtractAllText()

PDF Oluşturma (MuPDF'de Yok)

MuPDF IronPDF
(HTML motoru yok) ChromePdfRenderer.RenderHtmlAsPdf(html)
(HTML motoru yok) ChromePdfRenderer.RenderUrlAsPdf(url)

PDF Manipülasyonu

MuPDF IronPDF
docA.InsertPdf(docB) (MuPDF.NET) PdfDocument.Merge(pdf1, pdf2)
Sayfa başına page.InsertImage(...) (yalnızca görüntü/metin damgaları) pdf.ApplyWatermark(html)
doc.Save(path, encryption: ..., ownerPw: ..., userPw: ...) pdf.SecuritySettings

Kod Göç Örnekleri

Örnek 1: HTML'den PDF'ye Dönüştürme (MuPDF Bunu Yapamaz)

Öncesi (MuPDF):

// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        //MuPDFdoesn't support HTML'den PDF'ye conversion directly
        // You would need to use another library to convert HTML to a supported format first
        // This is a limitation -MuPDFis primarily a PDF renderer/viewer

        // Alternative: Use a browser engine or intermediate conversion
        string html = "<html><body><h1>Hello World</h1></body></html>";

        // Not natively supported in MuPDF
        throw new NotSupportedException("MuPDF does not support direct HTML'den PDF'ye conversion");
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        //MuPDFdoesn't support HTML'den PDF'ye conversion directly
        // You would need to use another library to convert HTML to a supported format first
        // This is a limitation -MuPDFis primarily a PDF renderer/viewer

        // Alternative: Use a browser engine or intermediate conversion
        string html = "<html><body><h1>Hello World</h1></body></html>";

        // Not natively supported in MuPDF
        throw new NotSupportedException("MuPDF does not support direct HTML'den PDF'ye conversion");
    }
}
Imports MuPDFCore
Imports System.IO

Class Program
    Shared Sub Main()
        'MuPDF doesn't support HTML to PDF conversion directly
        ' You would need to use another library to convert HTML to a supported format first
        ' This is a limitation - MuPDF is primarily a PDF renderer/viewer

        ' Alternative: Use a browser engine or intermediate conversion
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        ' Not natively supported in MuPDF
        Throw New NotSupportedException("MuPDF does not support direct HTML to PDF conversion")
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnek, MuPDF'nin en büyük sınırlamasını vurgular: HTML'yi PDF'ye dönüştüremez.MuPDFkodu, HTML-PDF dönüşümününMuPDFtarafından sağlanmayan bir yetenek olduğu için açıkça NotSupportedException fırlatıyor. Eğer bu işlevselliğeMuPDFile ihtiyacınız vardıysa, wkhtmltopdf veya bir tarayıcı motoru gibi ayrı bir kütüphane kullanmanız, ardından görüntülemek için ortaya çıkan PDF'yiMuPDFile yüklemeniz gerekiyordu.

IronPDF'nin ChromePdfRenderer, HTML'yi CSS3, JavaScript ve modern web standartları desteğiyle tam bir Chromium motoru kullanarak işler. RenderHtmlAsPdf() yöntemi HTML dizgelerini doğrudan kabul eder. HTML'den PDF'ye belgeler başvurarak, URL işleme ve HTML dosya dönüştürme gibi ek işleme seçeneklerini görün.

Örnek 2: Metin Çıkarma

Öncesi (MuPDF):

// NuGet: Install-Package MuPDF.NET
using MuPDF.NET;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        Document doc = new Document("input.pdf");

        StringBuilder allText = new StringBuilder();

        for (int i = 0; i < doc.PageCount; i++)
        {
            string pageText = doc[i].GetText();
            allText.AppendLine(pageText);
        }

        Console.WriteLine(allText.ToString());
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDF.NET;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        Document doc = new Document("input.pdf");

        StringBuilder allText = new StringBuilder();

        for (int i = 0; i < doc.PageCount; i++)
        {
            string pageText = doc[i].GetText();
            allText.AppendLine(pageText);
        }

        Console.WriteLine(allText.ToString());
    }
}
Imports MuPDF.NET
Imports System
Imports System.Text

Module Program
    Sub Main()
        Dim doc As New Document("input.pdf")

        Dim allText As New StringBuilder()

        For i As Integer = 0 To doc.PageCount - 1
            Dim pageText As String = doc(i).GetText()
            allText.AppendLine(pageText)
        Next

        Console.WriteLine(allText.ToString())
    End Sub
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")
        Dim text As String = pdf.ExtractAllText()

        Console.WriteLine(text)
    End Sub
End Class
$vbLabelText   $csharpLabel

MuPDF.NET yaklaşımı bir Document açar, doc.PageCount üzerinde bir for döngüsü ile yineleme yapar, her bir sayfa için doc[i].GetText() çağırır, ve metni bir StringBuilder ile oluşturur.

IronPDF bunu üç satıra indirir: belgeyi PdfDocument.FromFile() ile yükleyin, ExtractAllText() çağırın ve sonucu yazdırın. Manuel yineleme yok, StringBuilder yok. PDF'lerden metin ve görüntü çıkarma belgeleri hakkında daha fazla bilgi edinin.

Örnek 3: Birden Fazla PDF'yi Birleştirme

Öncesi (MuPDF):

// NuGet: Install-Package MuPDF.NET
using MuPDF.NET;

class Program
{
    static void Main()
    {
        Document doc1 = new Document("file1.pdf");
        Document doc2 = new Document("file2.pdf");

        // Append every page of doc2 to the end of doc1.
        doc1.InsertPdf(doc2);

        doc1.Save("merged.pdf");
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDF.NET;

class Program
{
    static void Main()
    {
        Document doc1 = new Document("file1.pdf");
        Document doc2 = new Document("file2.pdf");

        // Append every page of doc2 to the end of doc1.
        doc1.InsertPdf(doc2);

        doc1.Save("merged.pdf");
    }
}
Imports MuPDF.NET

Class Program
    Shared Sub Main()
        Dim doc1 As New Document("file1.pdf")
        Dim doc2 As New Document("file2.pdf")

        ' Append every page of doc2 to the end of doc1.
        doc1.InsertPdf(doc2)

        doc1.Save("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("file1.pdf")
        Dim pdf2 = PdfDocument.FromFile("file2.pdf")

        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

MuPDF.NET, PyMuPDF'nin insert_pdf() işlemini yansıtan ve bir belgenin her sayfasını diğerine sayfa yerine ekleyen Document.InsertPdf üzerinden birleştirme desteği sağlar. MuPDFCore eşdeğer yüksek seviyeli bir birleştirme API'si sunmaz.

IronPDF'nin statik PdfDocument.Merge() yöntemi, birden çok PDF belgesini kabul eder ve girişleri bozmadan tek bir birleştirilmiş belge döndürür. Birçok belgeyi birleştirmek için bir liste geçin: PdfDocument.Merge(pdfList). PDF'leri birleştirme ve bölme belgeleri için ek seçenklere bakın.


Kritik Taşıma Notları

Yerel İkili Dosyaları Kaldırın

MuPDF, platforma özgü yerel kütüphaneleri gerektirir. IronPDF'e geçtikten sonra, tümMuPDFyerel ikili dosyalarını kaldırın:

# Delete native libraries
rm -f mupdf*.dll libmupdf*.so libmupdf*.dylib

# Remove runtime folders
rm -rf runtimes/*/native/

# Update Docker files to removeMuPDFinstallation
# Delete native libraries
rm -f mupdf*.dll libmupdf*.so libmupdf*.dylib

# Remove runtime folders
rm -rf runtimes/*/native/

# Update Docker files to removeMuPDFinstallation
SHELL

IronPDF, tam olarak yönetilen .NET kodudur—platformlar arasında yönetilecek yerel ikili dosyalar yok.

Bilgileri Yok Etme Deseni Basitleştirildi

MuPDFCore açık bir MuPDFContext gerektirir; MuPDF.NET bunu saklar ancak yine de Close() / Dispose() gerekir:

// MuPDFCore: explicit context required
using (var context = new MuPDFContext())
using (var document = new MuPDFDocument(context, "input.pdf"))
{
    // Work with document
}

// MuPDF.NET: implicit context, manual close
Document doc = new Document("input.pdf");
try { /* work */ } finally { doc.Close(); }

// IronPDF: simpler pattern
var pdf = PdfDocument.FromFile("input.pdf");
// Work with pdf
// MuPDFCore: explicit context required
using (var context = new MuPDFContext())
using (var document = new MuPDFDocument(context, "input.pdf"))
{
    // Work with document
}

// MuPDF.NET: implicit context, manual close
Document doc = new Document("input.pdf");
try { /* work */ } finally { doc.Close(); }

// IronPDF: simpler pattern
var pdf = PdfDocument.FromFile("input.pdf");
// Work with pdf
Imports MuPDFCore
Imports MuPDF.NET
Imports IronPDF

' MuPDFCore: explicit context required
Using context As New MuPDFContext()
    Using document As New MuPDFDocument(context, "input.pdf")
        ' Work with document
    End Using
End Using

' MuPDF.NET: implicit context, manual close
Dim doc As New Document("input.pdf")
Try
    ' work
Finally
    doc.Close()
End Try

' IronPDF: simpler pattern
Dim pdf = PdfDocument.FromFile("input.pdf")
' Work with pdf
$vbLabelText   $csharpLabel

Sayfa Yineleme Deseni Değişimi

MuPDF, açık sayfa sayısı ile indeks tabanlı yineleme kullanır:

// MuPDF.NET
for (int i = 0; i < doc.PageCount; i++)
{
    var pageText = doc[i].GetText();
}

// MuPDFCore
for (int i = 0; i < document.Pages.Count; i++)
{
    var pageText = document.Pages[i].GetText();
}

//IronPDF(foreach supported)
foreach (var page in pdf.Pages)
{
    var pageText = page.Text;
}
// MuPDF.NET
for (int i = 0; i < doc.PageCount; i++)
{
    var pageText = doc[i].GetText();
}

// MuPDFCore
for (int i = 0; i < document.Pages.Count; i++)
{
    var pageText = document.Pages[i].GetText();
}

//IronPDF(foreach supported)
foreach (var page in pdf.Pages)
{
    var pageText = page.Text;
}
Imports MuPDF.NET
Imports MuPDFCore
Imports IronPDF

' MuPDF.NET
For i As Integer = 0 To doc.PageCount - 1
    Dim pageText = doc(i).GetText()
Next

' MuPDFCore
For i As Integer = 0 To document.Pages.Count - 1
    Dim pageText = document.Pages(i).GetText()
Next

' IronPDF (foreach supported)
For Each page In pdf.Pages
    Dim pageText = page.Text
Next
$vbLabelText   $csharpLabel

Kullanılabilir Yeni Yetenekler

IronPDF'e geçtikten sonra, MuPDF'nin sağlayamayacağı yeteneklere sahip olursunuz:

//PDF Oluşturmafrom HTML (not possible in MuPDF)
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");

// Watermarks (not possible in MuPDF)
pdf.ApplyWatermark("<div style='color:red;opacity:0.3;'>DRAFT</div>");

// Password Protection (not possible in MuPDF)
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "user";

// Headers and Footers (no HTML header/footer template in MuPDF)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};
//PDF Oluşturmafrom HTML (not possible in MuPDF)
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");

// Watermarks (not possible in MuPDF)
pdf.ApplyWatermark("<div style='color:red;opacity:0.3;'>DRAFT</div>");

// Password Protection (not possible in MuPDF)
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "user";

// Headers and Footers (no HTML header/footer template in MuPDF)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};
' PDF Oluşturmafrom HTML (not possible in MuPDF)
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>")

' Watermarks (not possible in MuPDF)
pdf.ApplyWatermark("<div style='color:red;opacity:0.3;'>DRAFT</div>")

' Password Protection (not possible in MuPDF)
pdf.SecuritySettings.OwnerPassword = "admin"
pdf.SecuritySettings.UserPassword = "user"

' Headers and Footers (no HTML header/footer template in MuPDF)
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
    .MaxHeight = 25
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    .MaxHeight = 25
}
$vbLabelText   $csharpLabel

Hata Ayıklama

Sorun 1: MuPDFDocument Bulunamadı

Sorun: MuPDFDocument sınıfı IronPDF'de mevcut değil.

Çözüm: PdfDocument.FromFile() kullanın:

// MuPDF
using (MuPDFDocument document = new MuPDFDocument("input.pdf"))

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
// MuPDF
using (MuPDFDocument document = new MuPDFDocument("input.pdf"))

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
Imports MuPDF
Imports IronPDF

Using document As New MuPDFDocument("input.pdf")
End Using

Dim pdf = PdfDocument.FromFile("input.pdf")
$vbLabelText   $csharpLabel

Sorun 2: Pages.Count Bulunamadı

Sorun: document.Pages.Count deseni çalışmıyor.

Çözüm: pdf.PageCount kullanın:

// MuPDF
for (int i = 0; i < document.Pages.Count; i++)

// IronPDF
for (int i = 0; i < pdf.PageCount; i++)
// Or use: foreach (var page in pdf.Pages)
// MuPDF
for (int i = 0; i < document.Pages.Count; i++)

// IronPDF
for (int i = 0; i < pdf.PageCount; i++)
// Or use: foreach (var page in pdf.Pages)
' MuPDF
For i As Integer = 0 To document.Pages.Count - 1

' IronPDF
For i As Integer = 0 To pdf.PageCount - 1
' Or use: For Each page In pdf.Pages
$vbLabelText   $csharpLabel

Sorun 3: GetText() Bulunamadı

Sorun: page.GetText() yöntemi mevcut değil.

Çözüm: page.Text özelliğini veya pdf.ExtractAllText() kullanın:

// MuPDF
string pageText = document.Pages[i].GetText();

// IronPDF
string pageText = pdf.Pages[i].Text;
// Or for all text:
string allText = pdf.ExtractAllText();
// MuPDF
string pageText = document.Pages[i].GetText();

// IronPDF
string pageText = pdf.Pages[i].Text;
// Or for all text:
string allText = pdf.ExtractAllText();
' MuPDF
Dim pageText As String = document.Pages(i).GetText()

' IronPDF
Dim pageText As String = pdf.Pages(i).Text
' Or for all text:
Dim allText As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

İssue 4: InsertPdf Bulunamadı

Sorun: MuPDF.NET'in (PyMuPDF'nin insert_pdf işlemini yansıtır) Document.InsertPdf işlemi IronPDF'de doğrudan eşdeğer bir isim bulundurmaz ve MuPDFCore yüksek seviyede bir birleştirme sunmaz.

Çözüm: Statik PdfDocument.Merge() kullanın:

// MuPDF.NET
docA.InsertPdf(docB);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
// MuPDF.NET
docA.InsertPdf(docB);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
$vbLabelText   $csharpLabel

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Kod tabanında tümMuPDFkullanımlarının envanterini yapın
  • Tüm işleme işlemlerini belgeleyin (DPI, ölçek faktörleri)
  • Herhangi bir PDF oluşturma ihtiyaçlarını (şu anda harici araçlar kullanılıyor) belirleyin
  • Metin çıkarma gereksinimlerini listeleyin
  • Yerel ikili dosya işlemesini incelemek için dağıtım betiklerini inceleyin -IronPDF lisans anahtarını edinin

Paket Değişiklikleri

  • MuPDF.NET paketini kaldır
  • MuPDFCore paketini kaldır
  • MuPDFCore.NativeAssets.* / MuPDF.NativeAssets paketlerini kaldır
  • IronPdf NuGet paketini yükleyin: dotnet add package IronPdf
  • Ad alanı ithalatlarını güncelleyin

Kod Değişiklikleri

Başlangıçta lisans anahtarı yapılandırmasını ekleyin

  • Document (MuPDF.NET) / MuPDFDocument (MuPDFCore) yerine PdfDocument.FromFile() ile değiştirin
  • doc.PageCount / document.Pages.Count yerine pdf.PageCount ile değiştirin
  • doc[i].GetText() yerine page.Text veya pdf.ExtractAllText() ile değiştirin
  • Document.InsertPdf çağrılarını PdfDocument.Merge() ile değiştirin
  • Açık bağlam/hazırla kod kalıbını kaldır
  • Gerekirse PDF oluşturma kodu ekleyin (HTML'den PDF'ye)

Geçiş Sonrası

  • Projeden yerelMuPDFikili dosyalarını kaldırın
  • Docker dosyalarınıMuPDFkurulumunu kaldıracak şekilde güncelleyin
  • Platforma özgü çalışma zamanı klasörlerini kaldırın
  • İşlem çıktısını karşılaştıran regresyon testlerini çalıştırın
  • Hedef platformların tümünde test yapın (Windows, Linux, macOS)
  • Yeni yetenekler eklemeyi düşünün (filigranlar, güvenlik, başlıklar/altbilgiler)

Lütfen dikkate alınMuPDF, MuPDF.NET, ve wkhtmltopdf, ilgili sahiplerinin tescilli ticari markalarıdır. Bu site, Artifex Software veya wkhtmltopdf ile ilişkili değildir, onaylanmamıştır 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