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
- Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
- 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
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"
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" .
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
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
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
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
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
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
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
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)
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>"
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")
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");
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
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>")
URL para PDF
var pdf = renderer.RenderUrlAsPdf("https://example.com");
var pdf = renderer.RenderUrlAsPdf("https://example.com");
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
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)
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>")
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-wpfse estiver em uso. - Remova o pacote NuGet
PdfSharp.Chartingse 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
XFontpelas propriedades de fonte CSS - Substitua
XPenpor cores/bordas CSS SubstituaXGraphics.DrawString()por elementos de texto HTML SubstituaXGraphics.DrawImage()pelas tags HTML<img> - Substitua
PdfReader.Open()porPdfDocument.FromFile() - Substitua
document.Save()porpdf.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.

