Ir para o conteúdo do rodapé
GUIAS DE MIGRAçãO

Como migrar do MuPDF para o IronPDF em C#

Por que migrar doMuPDFpara o IronPDF?

Os Desafios do MuPDF

MuPDF é uma ferramenta PDF capaz, mas sua licença AGPL/comercial dupla (da Artifex) e design focado na renderização criam atrito real para desenvolvedores .NET que constroem aplicações comerciais impulsionadas por HTML. Existem dois principais wrappers .NET: MuPDFCore (comunidade, por arklumpus, AGPL-3.0) e MuPDF.NET (bindings C# oficiais da Artifex, espelhando o PyMuPDF).

  1. Armadilha de Licença AGPL: Tanto oMuPDFquanto os wrappers são entregues sob AGPL-3.0 por padrão. Distribuir um produto de código fechado em código AGPL requer ou a abertura do código sob AGPL ou a compra de uma licença comercial da Artifex (o preço é baseado em cotação, não publicado).

  2. Foco na Renderização em Primeiro Lugar: Enquanto o MuPDF.NET pode mesclar, redigir, assinar e carimbar marcas d'água (espelhando o PyMuPDF), a maior parte da API e das ferramentas é moldada em torno da visualização e extração de texto estruturado, em vez da geração de documentos controlada por HTML.

  3. Nenhum Motor HTML-para-PDF: Nem o MuPDF.NET nem o MuPDFCore possuem um motor HTML/CSS. Gerar PDFs a partir de HTML requer o uso de um navegador separado (Chromium, wkhtmltopdf, PrinceXML) e só carregar o resultado com MuPDF.

  4. Dependências Nativas: Ambos os wrappers enviam pacotes MuPDFCore.NativeAssets / MuPDF.NativeAssets com binários por RID (win-x64, linux-x64, osx-x64). A implantação multiplataforma funciona, mas imagens Docker precisam do pacote nativo correspondente e da imagem base (glibc vs musl).

  5. Nenhuma Marca d'Água HTML / Cabeçalhos / Rodapés: A estampagem é baseada em imagem e texto por página; não há motor de template {page}/{total-pages} da forma como os renderizadores baseados no Chromium expõem.

  6. Superfície de Interoperação C: Wrappers expõem contextos/vidas de documento que se mapear na biblioteca C subjacente — a ordem de descarte importa, crashes nativos podem derrubar o processo inteiro, e o custo de marshaling não é trivial para documentos grandes.

Comparação entreMuPDFe IronPDF

Recurso MuPDF IronPDF
Licença AGPL-3.0 ou comercial baseado em cotação (Artifex) Comercial com preços publicados
Foco principal Renderização, texto estruturado, toolkit de baixo nível Geração controlada por HTML + manipulação
HTML para PDF Não suportado (sem motor HTML) Motor totalmente cromado
Criação de PDF Somente nível de página (insira texto/imagens/vetores) HTML, URL, imagens
Manipulação de PDF Suportado em MuPDF.NET (InsertPdf, Select, DeletePage) Suportado (Merge, CopyPages, RemovePages)
Dependências MuPDFnativo + RID NativeAssets Wrapper gerenciado + Chromium empacotado
Suporte da plataforma Win/Linux/macOS via NativeAssets Win/Linux/macOS/Docker
Suporte assíncrono Principalmente síncrono; alguns assíncronos no MuPDFCore APIs assíncronas em renderizador e documento
Integração .NET Wrappers P/Invoke em torno da biblioteca C Wrapper .NET + Chromium nativo

IronPDF funciona como uma biblioteca .NET gerenciada em todas as versões modernas do .NET sem complexidade de interoperação nativa.


Avaliação da Complexidade da Migração

Esforço estimado por funcionalidade

Recurso Complexidade da Migração
Carregamento de documentos Muito baixo
Extração de texto Muito baixo
Fusão de PDFs Baixo
Renderização de imagens Baixo
HTML para PDF N/A (Nova Capacidade)
Segurança/Marcas d'água N/A (Nova Capacidade)

Mudança de paradigma

A mudança fundamental nesta migração para oMuPDFé a transição de um visualizador apenas para renderização para uma solução completa de PDF:

MuPDF.NET:  Document → doc[i] → GetText / GetPixmap / InsertPdf
MuPDFCore:  MuPDFContext → MuPDFDocument → Pages[i] → Render / SaveImage
IronPDF:    PdfDocument.FromFile() → Manipulação completa → Criar/Editar/Mesclar/Proteger

Antes de começar

Pré-requisitos

  1. Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
  3. Licença do IronPDF: Obtenha sua chave de licença em IronPDF

Alterações no pacote NuGet

# 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

Remova também os binários nativos do MuPDF da sua instalação:

  • Apagar mupdf.dll, libmupdf.so, libmupdf.dylib
  • Remover pastas específicas da plataforma (runtimes/*/native/)
  • Atualize os arquivos Docker para remover a instalação do MuPDF.

Configuração de licença

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

Identificar o uso do MuPDF

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

Referência completa da API

Carregamento de documentos

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()

Acesso à página

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() / iteração de texto estruturado (MuPDFCore) page.Text

Extração de texto

MuPDF IronPDF
Iterar sobre doc[i].GetText() pdf.ExtractAllText()

Criação de PDF (Não disponível no MuPDF)

MuPDF IronPDF
(sem motor HTML) ChromePdfRenderer.RenderHtmlAsPdf(html)
(sem motor HTML) ChromePdfRenderer.RenderUrlAsPdf(url)

Manipulação de PDF

MuPDF IronPDF
docA.InsertPdf(docB) (MuPDF.NET) PdfDocument.Merge(pdf1, pdf2)
page.InsertImage(...) por página (apenas carimbos de imagem/texto) pdf.ApplyWatermark(html)
doc.Save(path, encryption: ..., ownerPw: ..., userPw: ...) pdf.SecuritySettings

Exemplos de migração de código

Exemplo 1: Conversão de HTML para PDF (oMuPDFnão consegue fazer isso)

Antes (MuPDF):

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

class Program
{
    static void Main()
    {
        //MuPDFdoesn't support HTML para PDF 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 para PDF conversion");
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        //MuPDFdoesn't support HTML para PDF 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 para PDF 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

Após (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

Este exemplo destaca a limitação mais significativa do MuPDF: ele não consegue converter HTML para PDF de forma alguma. O códigoMuPDFlança explicitamente NotSupportedException porque a conversão de HTML para PDF simplesmente não é uma capacidade que oMuPDFoferece. Se você precisasse dessa funcionalidade com o MuPDF, teria que usar uma biblioteca separada como o wkhtmltopdf ou um mecanismo de navegador e, em seguida, carregar o PDF resultante com oMuPDFpara visualização.

O ChromePdfRenderer do IronPDF usa um mecanismo completo do Chromium para renderizar HTML com suporte completo para CSS3, JavaScript, e padrões modernos da web. O método RenderHtmlAsPdf() aceita strings HTML diretamente. Consulte a documentação de conversão de HTML para PDF para obter opções adicionais de renderização, incluindo renderização de URL e conversão de arquivos HTML.

Exemplo 2: Extração de Texto

Antes (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

Após (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

A abordagem MuPDF.NET abre um Document, itera doc.PageCount com um loop for, chama doc[i].GetText() para cada página e constrói o texto com um StringBuilder.

O IronPDF reduz isso a três linhas: carregar o documento com PdfDocument.FromFile(), chamar ExtractAllText() e imprimir o resultado. Nenhuma iteração manual, nenhum StringBuilder. Saiba mais sobre extração de texto de PDFs .

Exemplo 3: Mesclar vários PDFs

Antes (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

Após (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

O MuPDF.NET suporta mesclagem via Document.InsertPdf, que espelha o insert_pdf() do PyMuPDF e anexa cada página de um documento a outro no local. MuPDFCore não expõe uma API de mesclagem equivalente de alto nível.

O método estático PdfDocument.Merge() do IronPDF aceita múltiplos documentos PDF e retorna um único documento mesclado, deixando os inputs intocados. Para mesclar muitos documentos, passe uma lista: PdfDocument.Merge(pdfList). Consulte a documentação sobre mesclagem e divisão de PDFs para obter opções adicionais.


Notas críticas sobre migração

Remover binários nativos

OMuPDFrequer bibliotecas nativas específicas da plataforma. Após migrar para o IronPDF, remova todos os binários nativos do MuPDF:

# 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

O IronPDF é um código .NET totalmente gerenciado — sem binários nativos para gerenciar em diferentes plataformas.

Padrão de descarte simplificado

MuPDFCore requer explicitamente um MuPDFContext; MuPDF.NET o esconde mas ainda precisa de Close() / Dispose():

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

Alteração do padrão de iteração da página

OMuPDFutiliza iteração baseada em índice com contagem de páginas explícita:

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

Novas funcionalidades disponíveis

Após migrar para o IronPDF, você obtém recursos que oMuPDFnão oferece:

// Criação de PDF from 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
};
// Criação de PDF from 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
};
' Criação de PDF from 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

Solução de problemas

Problema 1: DocumentoMuPDFnão encontrado

Problema: a classe MuPDFDocument não existe no IronPDF.

Solução: Use PdfDocument.FromFile():

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

Problema 2: Pages.Count não encontrado

Problema: o padrão document.Pages.Count não funciona.

Solution: Use pdf.PageCount:

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

Problema 3: GetText() não encontrado

Problema: o método page.GetText() não existe.

Solução: Use a propriedade page.Text ou 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
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

Questão 4: InsertPdf Não Encontrado

Problema: o Document.InsertPdf do MuPDF.NET (espelha o insert_pdf do PyMuPDF) não tem um nome equivalente direto no IronPDF, e o MuPDFCore não expõe nenhuma mesclagem de alto nível.

Solução: Use o método estático PdfDocument.Merge():

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

Lista de verificação para migração

Pré-migração

  • Inventariar todos os usos doMuPDFna base de código
  • Documentar todas as operações de renderização (DPI, fatores de escala)
  • Identificar quaisquer necessidades de criação de PDFs (atualmente utilizando ferramentas externas)
  • Listar os requisitos de extração de texto
  • Analisar os scripts de implantação para o tratamento de binários nativos.
  • Obtenha a chave de licença do IronPDF

Alterações no pacote

  • Remover pacote MuPDF.NET
  • Remover pacote MuPDFCore
  • Remover pacotes MuPDFCore.NativeAssets.* / MuPDF.NativeAssets
  • Instalar pacote NuGet IronPdf: dotnet add package IronPdf
  • Atualizar importações de namespace

Alterações no código

  • Adicionar configuração de chave de licença na inicialização
  • Substituir Document (MuPDF.NET) / MuPDFDocument (MuPDFCore) por PdfDocument.FromFile()
  • Substituir doc.PageCount / document.Pages.Count por pdf.PageCount
  • Substituir doc[i].GetText() por page.Text ou pdf.ExtractAllText()
  • Substituir chamadas Document.InsertPdf por PdfDocument.Merge()
  • Remova o boilerplate de contexto/descarte explícito
  • Adicione o código para criação de PDF, se necessário (HTML para PDF)

Pós-migração

  • Remover binários nativos doMuPDFdo projeto
  • Atualize os arquivos Docker para remover a instalação do MuPDF.
  • Remover pastas de tempo de execução específicas da plataforma
  • Execute testes de regressão comparando a saída renderizada
  • Testar em todas as plataformas alvo (Windows, Linux, macOS)
  • Considere adicionar novas funcionalidades (marcas d'água, segurança, cabeçalhos/rodapés)

ObserveMuPDF, MuPDF.NET e wkhtmltopdf são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado, ou patrocinado pela Artifex Software ou wkhtmltopdf. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de Suporte Iron

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim