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

Como migrar do PDFSharp para o IronPDF em C#

A migração do PDFSharp para o IronPDF transforma seu fluxo de trabalho de geração de PDFs, passando do desenho manual baseado em coordenadas para a criação de modelos modernos em HTML/CSS. Este guia fornece um caminho de migração completo, passo a passo, que substitui o tedioso posicionamento no estilo GDI+ por tecnologias web, reduzindo drasticamente o tempo de desenvolvimento e tornando a geração de PDFs sustentável por meio de habilidades padrão de HTML/CSS.

Por que migrar do PDFSharp para o IronPDF?

Entendendo o PDFSharp

O PDFSharp é reconhecido como uma biblioteca de baixo nível para criação de PDFs, permitindo que desenvolvedores gerem documentos PDF por meio de uma abordagem programática. Distribuído sob a licença MIT, o PDFSharp concede à comunidade de desenvolvedores liberdade de uso e modificação. O PDFSharp funciona principalmente como uma ferramenta para desenhar e compilar PDFs do zero, o que pode ser tanto benéfico quanto restritivo, dependendo da natureza do projeto.

Às vezes, presume-se erroneamente que o PDFSharp seja um conversor de HTML para PDF, o que não é verdade. Sua finalidade é dedicada exclusivamente à criação programática de documentos PDF. Embora exista um complemento, o HtmlRenderer.PdfSharp, destinado a fornecer recursos de renderização HTML, ele suporta apenas CSS 2.1, sem suporte para recursos CSS modernos como flexbox e grid.

O Problema de Cálculo de Coordenadas

A abordagem GDI+ do PDFSharp significa que você deve:

  • Calcular as posições exatas X,Y para cada elemento
  • Monitorar manualmente a altura do conteúdo para evitar que a página ultrapasse o limite.
  • Gerencie a quebra de linha e a medição do texto você mesmo
  • Desenhar tabelas célula por célula com cálculos de borda
  • Gerencie documentos com várias páginas com quebras de página manuais.

A arquitetura do PDFSharp exige um profundo conhecimento de posicionamento por meio de coordenadas, o que frequentemente representa um desafio na criação de layouts complexos.

Comparação entre PDFSharp e IronPDF

Recurso PDFSharp IronPDF
Licença MIT (Gratuito) Comercial
Suporte para conversão de HTML para PDF Não Sim (compatível com HTML5/CSS3)
Suporte a CSS moderno Não (somente CSS 2.1) Sim (CSS3 completo)
Criação de Documentos Desenho baseado em coordenadas Modelos HTML/CSS
Sistema de layout Posicionamento manual em X,Y CSS Flow/Flexbox/Grid
Quebras de página Cálculo manual Controle automático + CSS
Tabelas Desenhe as células individualmente HTML <table>
Estilização Fontes/cores baseadas em código Folhas de estilo CSS
API de Documentos Nível baixo (requer coordenadas) API de alto nível (API simplificada)
Atualizações Pouco frequente Regular

O IronPDF se destaca em cenários onde documentos HTML precisam ser convertidos em PDFs com total fidelidade. Esta biblioteca .NET oferece suporte a HTML5 e CSS3, garantindo o atendimento aos padrões modernos da web. Suas funcionalidades nativas de conversão de HTML para PDF permitem que os desenvolvedores aproveitem o conteúdo ou os modelos da web existentes, criados com ferramentas web modernas.

Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece uma abordagem moderna que elimina cálculos de coordenadas, aproveitando as habilidades de desenvolvimento web.


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

# Remove PDFSharp
dotnet remove package PdfSharp
dotnet remove package PdfSharp-wpf
dotnet remove package PdfSharp.Charting

# Add IronPDF
dotnet add package IronPdf
# Remove PDFSharp
dotnet remove package PdfSharp
dotnet remove package PdfSharp-wpf
dotnet remove package PdfSharp.Charting

# Add IronPDF
dotnet add package IronPdf
SHELL

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 PDFSharp

# Find all PDFSharp usages in your codebase
grep -r "PdfSharp\|XGraphics\|XFont\|XBrush\|XPen" --include="*.cs" .
# Find all PDFSharp usages in your codebase
grep -r "PdfSharp\|XGraphics\|XFont\|XBrush\|XPen" --include="*.cs" .
SHELL

Referência completa da API

Alterações de namespace

// Before: PDFSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
// Before: PDFSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Mapeamentos da API principal

API PDFSharp API IronPDF
new PdfDocument() ChromePdfRenderer.RenderHtmlAsPdf()
document.AddPage() Automático
XGraphics.FromPdfPage() Não é necessário
XGraphics.DrawString() HTML <p>, <h1>, etc.
XGraphics.DrawImage() HTML <img> tag
XFont CSS font-family, font-size
XBrush, XPen Cores/bordas CSS
document.Save() pdf.SaveAs()
PdfReader.Open() PdfDocument.FromFile()

Exemplos de migração de código

Exemplo 1: Conversão de HTML para PDF

Antes (PDFSharp):

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // PDFSharp does not have built-in HTML para PDF conversion
        // You need to manually parse HTML and render content
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 12);

        // Manual text rendering (no HTML support)
        gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
            new XRect(0, 0, page.Width, page.Height),
            XStringFormats.TopLeft);

        document.Save("output.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // PDFSharp does not have built-in HTML para PDF conversion
        // You need to manually parse HTML and render content
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 12);

        // Manual text rendering (no HTML support)
        gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
            new XRect(0, 0, page.Width, page.Height),
            XStringFormats.TopLeft);

        document.Save("output.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports System

Module Program
    Sub Main()
        ' PDFSharp does not have built-in HTML to PDF conversion
        ' You need to manually parse HTML and render content
        Dim document As New PdfDocument()
        Dim page As PdfPage = document.AddPage()
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
        Dim font As New XFont("Arial", 12)

        ' Manual text rendering (no HTML support)
        gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black, _
            New XRect(0, 0, page.Width, page.Height), _
            XStringFormats.TopLeft)

        document.Save("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        // IronPDF has native HTML para PDF rendering
        var renderer = new ChromePdfRenderer();

        string html = "<h1>Hello from IronPDF</h1><p>Easy HTML para PDF conversion</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // IronPDF has native HTML para PDF rendering
        var renderer = new ChromePdfRenderer();

        string html = "<h1>Hello from IronPDF</h1><p>Easy HTML para PDF conversion</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        ' IronPDF has native HTML to PDF rendering
        Dim renderer As New ChromePdfRenderer()

        Dim html As String = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Este exemplo destaca a diferença mais significativa entre as duas bibliotecas. O PDFSharp afirma explicitamente que "não possui conversão integrada de HTML para PDF" — você deve criar manualmente um PdfDocument, adicionar um PdfPage, obter um objeto XGraphics, criar um XFont e usar DrawString() com coordenadas XRect.

O IronPDF fornece renderização nativa de HTML para PDF através de ChromePdfRenderer. O método RenderHtmlAsPdf() aceita strings HTML e as converte usando um mecanismo Chromium internamente. O IronPDF converte facilmente arquivos HTML em PDF, preservando todos os estilos definidos em HTML5 e CSS3, eliminando a necessidade de cálculos de coordenadas. Consulte a documentação de conversão de HTML para PDF para obter exemplos completos.

Exemplo 2: Adicionando texto/marca d'água a um PDF existente

Antes (PDFSharp):

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
        PdfPage page = document.Pages[0];

        // Get graphics object
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 20, XFontStyle.Bold);

        // Draw text at specific position
        gfx.DrawString("Watermark Text", font, XBrushes.Red,
            new XPoint(200, 400));

        document.Save("modified.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
        PdfPage page = document.Pages[0];

        // Get graphics object
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 20, XFontStyle.Bold);

        // Draw text at specific position
        gfx.DrawString("Watermark Text", font, XBrushes.Red,
            new XPoint(200, 400));

        document.Save("modified.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Pdf.IO
Imports PdfSharp.Drawing
Imports System

Module Program
    Sub Main()
        ' Open existing PDF
        Dim document As PdfDocument = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify)
        Dim page As PdfPage = document.Pages(0)

        ' Get graphics object
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
        Dim font As New XFont("Arial", 20, XFontStyle.Bold)

        ' Draw text at specific position
        gfx.DrawString("Watermark Text", font, XBrushes.Red, New XPoint(200, 400))

        document.Save("modified.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        // Open existing PDF
        var pdf = PdfDocument.FromFile("existing.pdf");

        // Add text stamp/watermark
        var textStamper = new TextStamper()
        {
            Text = "Watermark Text",
            FontSize = 20,
            Color = IronSoftware.Drawing.Color.Red,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("modified.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        var pdf = PdfDocument.FromFile("existing.pdf");

        // Add text stamp/watermark
        var textStamper = new TextStamper()
        {
            Text = "Watermark Text",
            FontSize = 20,
            Color = IronSoftware.Drawing.Color.Red,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("modified.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing
Imports System

Module Program
    Sub Main()
        ' Open existing PDF
        Dim pdf = PdfDocument.FromFile("existing.pdf")

        ' Add text stamp/watermark
        Dim textStamper = New TextStamper() With {
            .Text = "Watermark Text",
            .FontSize = 20,
            .Color = IronSoftware.Drawing.Color.Red,
            .VerticalAlignment = VerticalAlignment.Middle,
            .HorizontalAlignment = HorizontalAlignment.Center
        }

        pdf.ApplyStamp(textStamper)
        pdf.SaveAs("modified.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

O PDFSharp requer a abertura do PDF com PdfReader.Open() especificando PdfDocumentOpenMode.Modify, acessando uma página, criando um objeto XGraphics, criando um XFont com estilo e usando DrawString() com um XPoint especificando coordenadas X,Y exatas (200, 400).

IronPDF simplifica isso com PdfDocument.FromFile(), um objeto TextStamper com propriedades declarativas (Text, FontSize, Color, VerticalAlignment, HorizontalAlignment) e ApplyStamp(). Não são necessários cálculos de coordenadas — basta especificar o alinhamento e o IronPDF cuida do posicionamento. Observe que o namespace IronPdf.Editing é necessário para a funcionalidade de carimbo.

Exemplo 3: Criando um PDF com imagens

Antes (PDFSharp):

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Create new PDF document
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Load and draw image
        XImage image = XImage.FromFile("image.jpg");

        // Calculate size to fit page
        double width = 200;
        double height = 200;

        gfx.DrawImage(image, 50, 50, width, height);

        // Add text
        XFont font = new XFont("Arial", 16);
        gfx.DrawString("Image in PDF", font, XBrushes.Black,
            new XPoint(50, 270));

        document.Save("output.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Create new PDF document
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Load and draw image
        XImage image = XImage.FromFile("image.jpg");

        // Calculate size to fit page
        double width = 200;
        double height = 200;

        gfx.DrawImage(image, 50, 50, width, height);

        // Add text
        XFont font = new XFont("Arial", 16);
        gfx.DrawString("Image in PDF", font, XBrushes.Black,
            new XPoint(50, 270));

        document.Save("output.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports System

Module Program
    Sub Main()
        ' Create new PDF document
        Dim document As New PdfDocument()
        Dim page As PdfPage = document.AddPage()
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)

        ' Load and draw image
        Dim image As XImage = XImage.FromFile("image.jpg")

        ' Calculate size to fit page
        Dim width As Double = 200
        Dim height As Double = 200

        gfx.DrawImage(image, 50, 50, width, height)

        ' Add text
        Dim font As New XFont("Arial", 16)
        gfx.DrawString("Image in PDF", font, XBrushes.Black, New XPoint(50, 270))

        document.Save("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        // Create PDF from HTML with image
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Image in PDF</h1>
            <img src='image.jpg' style='width:200px; height:200px;' />
            <p>Easy image embedding with HTML</p>";

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

        // Alternative: Add image to existing PDF
        var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
        var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
        {
            VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        };
        existingPdf.ApplyStamp(imageStamper);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create PDF from HTML with image
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Image in PDF</h1>
            <img src='image.jpg' style='width:200px; height:200px;' />
            <p>Easy image embedding with HTML</p>";

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

        // Alternative: Add image to existing PDF
        var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
        var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
        {
            VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        };
        existingPdf.ApplyStamp(imageStamper);
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        ' Create PDF from HTML with image
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "
            <h1>Image in PDF</h1>
            <img src='image.jpg' style='width:200px; height:200px;' />
            <p>Easy image embedding with HTML</p>"

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

        ' Alternative: Add image to existing PDF
        Dim existingPdf = New ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>")
        Dim imageStamper = New IronPdf.Editing.ImageStamper(New Uri("image.jpg")) With {
            .VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        }
        existingPdf.ApplyStamp(imageStamper)
    End Sub
End Class
$vbLabelText   $csharpLabel

O PDFSharp requer a criação de um novo PdfDocument, a adição de um PdfPage, a obtenção de um XGraphics, o carregamento de um XImage de um arquivo, o cálculo da largura e altura, o uso de um DrawImage() com coordenadas exatas (50, 50, 200, 200) e, em seguida, a adição de texto separadamente com um DrawString().

O IronPDF usa HTML padrão com uma tag <img> e estilo CSS (style='width:200px; altura:200px;'). Não são necessários cálculos de coordenadas — o CSS cuida do layout. O IronPDF também fornece ImageStamper para adicionar imagens a PDFs existentes com propriedades de alinhamento declarativas. Saiba mais em nossos tutoriais .


Notas críticas sobre migração

Mudança de paradigma: coordenadas para HTML/CSS

A mudança mais significativa é a transição do desenho baseado em coordenadas para HTML/CSS:

// PDFSharp: Manual positioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, new XPoint(50, 50));
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, new XPoint(50, 80));

// IronPDF: Let CSS handle layout
var html = @"
<div style='padding: 50px;'>
    <h1>Invoice</h1>
    <p>Customer: John</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// PDFSharp: Manual positioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, new XPoint(50, 50));
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, new XPoint(50, 80));

// IronPDF: Let CSS handle layout
var html = @"
<div style='padding: 50px;'>
    <h1>Invoice</h1>
    <p>Customer: John</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
' PDFSharp: Manual positioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, New XPoint(50, 50))
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, New XPoint(50, 80))

' IronPDF: Let CSS handle layout
Dim html As String = "
<div style='padding: 50px;'>
    <h1>Invoice</h1>
    <p>Customer: John</p>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Migração de fontes

// PDFSharp: XFont objects
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Times New Roman", 12);

// IronPDF: CSS font properties
var html = @"
<style>
    h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
    p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>";
// PDFSharp: XFont objects
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Times New Roman", 12);

// IronPDF: CSS font properties
var html = @"
<style>
    h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
    p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>";
Dim titleFont As New XFont("Arial", 24, XFontStyle.Bold)
Dim bodyFont As New XFont("Times New Roman", 12)

Dim html As String = "
<style>
    h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
    p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>"
$vbLabelText   $csharpLabel

Alteração de carregamento de documento

// PDFSharp: PdfReader.Open()
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("existing.pdf");
// PDFSharp: PdfReader.Open()
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("existing.pdf");
Imports PdfSharp
Imports IronPDF

' PDFSharp: PdfReader.Open()
Dim document As PdfDocument = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify)

' IronPDF: PdfDocument.FromFile()
Dim pdf = PdfDocument.FromFile("existing.pdf")
$vbLabelText   $csharpLabel

Salvar alteração de método

// PDFSharp: document.Save()
document.Save("output.pdf");

// IronPDF: pdf.SaveAs()
pdf.SaveAs("output.pdf");
// PDFSharp: document.Save()
document.Save("output.pdf");

// IronPDF: pdf.SaveAs()
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Alteração de acesso à página

// PDFSharp: document.Pages[0]
PdfPage page = document.Pages[0];

// IronPDF: Automático page handling or pdf.Pages[0]
// Pages are created automatically from HTML content
// PDFSharp: document.Pages[0]
PdfPage page = document.Pages[0];

// IronPDF: Automático page handling or pdf.Pages[0]
// Pages are created automatically from HTML content
' PDFSharp: document.Pages(0)
Dim page As PdfPage = document.Pages(0)

' IronPDF: Automático page handling or pdf.Pages(0)
' Pages are created automatically from HTML content
$vbLabelText   $csharpLabel

Novas funcionalidades após a migração

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

HTML nativo para PDF

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>");
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>")
$vbLabelText   $csharpLabel

URL para PDF

var pdf = renderer.RenderUrlAsPdf("https://example.com");
var pdf = renderer.RenderUrlAsPdf("https://example.com");
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
$vbLabelText   $csharpLabel

Fusão de PDFs

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
$vbLabelText   $csharpLabel

Marcas d'água com HTML

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
$vbLabelText   $csharpLabel

Resumo da comparação de recursos

Recurso PDFSharp IronPDF
Desenho baseado em coordenadas ✗ (use HTML)
HTML para PDF
Suporte a CSS3
Layout Flexbox/Grid
Carimbo de texto Manual XGraphics Carimbo de texto
Carimbo de imagem Manual XImage Carimbo de Imagem
Mesclar PDFs Manual
URL para PDF
Renderização Web Moderna Motor Chromium
Quebras de página automáticas

Lista de verificação para migração

Pré-migração

  • Inventariar todo o uso do PDFSharp na base de código.
  • Identificar os tipos de documentos que estão sendo gerados (relatórios, faturas, certificados)
  • Anote quaisquer operações gráficas ou de desenho personalizadas.
  • Planeje o armazenamento da chave de licença do IronPDF (variáveis ​​de ambiente recomendadas)
  • Teste primeiro com a licença de avaliação do IronPDF

Alterações no pacote

  • Remover o pacote NuGet PdfSharp
  • Remova o pacote NuGet PdfSharp-wpf se estiver em uso.
  • Remova o pacote NuGet PdfSharp.Charting se estiver em uso.
  • Instale o pacote NuGet IronPdf: dotnet add package IronPdf

Alterações no código

  • Atualizar importações de namespace (using PdfSharp.Pdf;using IronPdf;)
  • Adicione using IronPdf.Editing; para funcionalidade de carimbo
  • Converter layouts baseados em coordenadas para HTML/CSS Substitua XFont pelas propriedades de fonte CSS
  • Substitua XPen por cores/bordas CSS Substitua XGraphics.DrawString() por elementos de texto HTML Substitua XGraphics.DrawImage() pelas tags HTML <img>
  • Substitua PdfReader.Open() por PdfDocument.FromFile()
  • Substitua document.Save() por pdf.SaveAs()
  • Converter código de desenho de tabela em tabelas HTML

Pós-migração

  • Comparação visual dos PDFs gerados
  • Testar documentos com várias páginas
  • Verificar renderização da fonte
  • Adicionar novas funcionalidades (HTML para PDF, mesclagem, marcas d'água) conforme necessário.

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 de ferro

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