Como migrar do ComPDFKit para o IronPDF em C#
Embora oComPDFKitofereça recursos sólidos de manipulação de PDFs, diversos fatores levam as equipes de desenvolvimento a considerar alternativas mais consolidadas.
Comparação de Maturidade de Mercado e Ecossistema
OComPDFKitenfrenta desafios comuns a novos participantes do mercado: lacunas na documentação, uma comunidade menor e cobertura limitada no Stack Overflow. Uma década de aprimoramento do IronPDF proporciona a estabilidade e os recursos que os projetos empresariais exigem.
| Aspecto | ComPDFKit | IronPDF |
|---|---|---|
| HTML para PDF | Requer análise manual de HTML. | Renderização nativa do Chromium |
| Maturidade do mercado | Participante mais recente | Mais de 10 anos, testado em batalha. |
| Tamanho da comunidade | Stack Overflow menor e limitado | Comunidade grande e ativa |
| Documentação | Algumas lacunas | Tutoriais e guias abrangentes |
| Downloads | Crescente | Mais de 10 milhões de downloads do NuGet |
| Estilo API | Influenciado por C++, verboso | API fluente .NET moderna |
| Gerenciamento de memória | Chamadas Release() manuais |
Manipulação automática de GC |
Paridade de recursos
Ambas as bibliotecas oferecem suporte completo à funcionalidade PDF:
| Recurso | ComPDFKit | IronPDF |
|---|---|---|
| HTML para PDF | Básico/Manual | ✅Chromium nativo |
| URL para PDF | Implementação manual | ✅Integrado |
| Criar PDF do zero | ✅ | ✅ |
| Edição de PDF | ✅ | ✅ |
| Extração de texto | ✅ | ✅ |
| Mesclar/Dividir | ✅ | ✅ |
| Assinaturas digitais | ✅ | ✅ |
| Preenchimento de formulário | ✅ | ✅ |
| Marcas d'água | ✅ | ✅ |
| Multiplataforma | Windows, Linux, macOS | Windows, Linux, macOS |
Principais benefícios da migração
- Renderização HTML superior: o mecanismo Chromium do IronPDF lida nativamente com CSS3 moderno, JavaScript e layouts responsivos.
- Ecossistema maduro: mais de 10 anos de aprimoramento, extensa documentação e estabilidade comprovada.
- API mais simples: Menos código padrão, sem gerenciamento manual de memória com chamadas
Release() - Melhor integração com .NET : suporte nativo a async/await, LINQ e interfaces fluentes.
- Recursos abrangentes: milhares de respostas e exemplos da comunidade do Stack Overflow.
Preparação pré-migratória
Pré-requisitos
Certifique-se de que seu ambiente atenda a estes requisitos:
- .NET Framework 4.6.2 ou superior ou .NET Core 3.1 / .NET 5-9
- Visual Studio 2019 ou superior ou VS Code com extensão C#
- Acesso ao Gerenciador de Pacotes NuGet
- Chave de licença do IronPDF(teste gratuito disponível em IronPDF )
Auditoria de uso do ComPDFKit
Execute estes comandos no diretório da sua solução para identificar todas as referências ao ComPDFKit:
# Find allComPDFKitusages in your codebase
grep -r "using ComPDFKit" --include="*.cs" .
grep -r "CPDFDocument\|CPDFPage\|CPDFAnnotation" --include="*.cs" .
# Find NuGet package references
grep -r "ComPDFKit" --include="*.csproj" .
# Find allComPDFKitusages in your codebase
grep -r "using ComPDFKit" --include="*.cs" .
grep -r "CPDFDocument\|CPDFPage\|CPDFAnnotation" --include="*.cs" .
# Find NuGet package references
grep -r "ComPDFKit" --include="*.csproj" .
Mudanças significativas a serem previstas
| Mudar | ComPDFKit | IronPDF | Impacto |
|---|---|---|---|
| Carregamento de documentos | CPDFDocument.InitWithFilePath() |
PdfDocument.FromFile() |
Alteração do nome do método |
| Economizando | document.WriteToFilePath() |
pdf.SaveAs() |
Alteração do nome do método |
| Limpeza de memória | document.Release() necessário |
Automático (GC) | Remover limpeza manual |
| Acesso à página | document.PageAtIndex(i) |
pdf.Pages[i] |
Acesso no estilo de matriz |
| Indexação de páginas | Baseado em 0 | Baseado em 0 | Não é necessário troco. |
| Renderização HTML | Implementação manual | RenderHtmlAsPdf() |
Simplificação significativa |
| Extração de texto | textPage.GetText() |
pdf.ExtractAllText() |
API simplificada |
Processo de migração passo a passo
Passo 1: Atualizar pacotes NuGet
Remova os pacotes doComPDFKite instale o IronPDF:
# RemoveComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework
# Install IronPDF
dotnet add package IronPdf
# RemoveComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework
# Install IronPDF
dotnet add package IronPdf
Etapa 2: Atualizar referências de namespace
Substitua os namespaces doComPDFKitpelos do IronPDF:
// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;
// Add this
using IronPdf;
// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;
// Add this
using IronPdf;
Imports IronPdf
Etapa 3: Configurar a licença
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Referência completa para migração de API
Operações de Documentos
| Tarefa | ComPDFKit | IronPDF |
|---|---|---|
| Criar documento vazio | CPDFDocument.CreateDocument() |
new PdfDocument() |
| Carregar do arquivo | CPDFDocument.InitWithFilePath(path) |
PdfDocument.FromFile(path) |
| Carregar do fluxo | CPDFDocument.InitWithStream(stream) |
PdfDocument.FromStream(stream) |
| Salvar em arquivo | document.WriteToFilePath(path) |
pdf.SaveAs(path) |
| Obter contagem de páginas | document.PageCount |
pdf.PageCount |
| Liberar/Descartar | document.Release() |
Não é necessário |
Conversão de HTML para PDF
| Tarefa | ComPDFKit | IronPDF |
|---|---|---|
| String HTML para PDF | Implementação manual necessária | renderer.RenderHtmlAsPdf(html) |
| Arquivo HTML para PDF | Implementação manual necessária | renderer.RenderHtmlFileAsPdf(path) |
| URL para PDF | Implementação manual necessária | renderer.RenderUrlAsPdf(url) |
| Definir tamanho da página | Por meio dos parâmetros de criação de página | renderer.RenderingOptions.PaperSize |
| Definir margens | Por meio da configuração do editor | renderer.RenderingOptions.MarginTop etc. |
Operações de Fusão e Divisão
| Tarefa | ComPDFKit | IronPDF |
|---|---|---|
| Mesclar documentos | doc1.ImportPagesAtIndex(doc2, range, index) |
PdfDocument.Merge(pdf1, pdf2) |
| Dividir documento | Extrair páginas para um novo documento. | pdf.CopyPages(start, end) |
Exemplos de migração de código
Conversão de HTML para PDF
A diferença mais significativa entre oComPDFKite o IronPDF é a renderização em HTML. OComPDFKitexige a inserção manual de texto, enquanto o IronPDF renderiza HTML nativamente com seu mecanismo Chromium.
Implementação do ComPDFKit:
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using System;
class Program
{
static void Main()
{
// ComPDFKit's .NET SDK has no native HTML-to-PDF rendering.
// The closest equivalent is to create a blank document and lay
// out primitives manually, or call ComPDFKit's separate cloud
// Conversion API (a different SKU).
var document = CPDFDocument.CreateDocument();
document.InsertPage(0, 595, 842, string.Empty);
document.WriteToFilePath("output.pdf");
document.Release();
}
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using System;
class Program
{
static void Main()
{
// ComPDFKit's .NET SDK has no native HTML-to-PDF rendering.
// The closest equivalent is to create a blank document and lay
// out primitives manually, or call ComPDFKit's separate cloud
// Conversion API (a different SKU).
var document = CPDFDocument.CreateDocument();
document.InsertPage(0, 595, 842, string.Empty);
document.WriteToFilePath("output.pdf");
document.Release();
}
}
Imports ComPDFKit.PDFDocument
Imports System
Module Program
Sub Main()
' ComPDFKit's .NET SDK has no native HTML-to-PDF rendering.
' The closest equivalent is to create a blank document and lay
' out primitives manually, or call ComPDFKit's separate cloud
' Conversion API (a different SKU).
Dim document = CPDFDocument.CreateDocument()
document.InsertPage(0, 595, 842, String.Empty)
document.WriteToFilePath("output.pdf")
document.Release()
End Sub
End Module
Implementação do IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is HTML content.</p>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is HTML content.</p>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is HTML content.</p>")
pdf.SaveAs("output.pdf")
End Sub
End Class
O ChromePdfRenderer do IronPDF elimina a necessidade de posicionamento manual de texto e gerenciamento de editor. Para mais opções de conversão de HTML, consulte a documentação de HTML para PDF .
Unir vários PDFs
Implementação do ComPDFKit:
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.Import;
using System;
class Program
{
static void Main()
{
var document1 = CPDFDocument.InitWithFilePath("file1.pdf");
var document2 = CPDFDocument.InitWithFilePath("file2.pdf");
// Import pages from document2 into document1
document1.ImportPagesAtIndex(document2, "0-" + (document2.PageCount - 1), document1.PageCount);
document1.WriteToFilePath("merged.pdf");
document1.Release();
document2.Release();
}
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.Import;
using System;
class Program
{
static void Main()
{
var document1 = CPDFDocument.InitWithFilePath("file1.pdf");
var document2 = CPDFDocument.InitWithFilePath("file2.pdf");
// Import pages from document2 into document1
document1.ImportPagesAtIndex(document2, "0-" + (document2.PageCount - 1), document1.PageCount);
document1.WriteToFilePath("merged.pdf");
document1.Release();
document2.Release();
}
}
Imports ComPDFKit.PDFDocument
Imports ComPDFKit.Import
Imports System
Module Program
Sub Main()
Dim document1 = CPDFDocument.InitWithFilePath("file1.pdf")
Dim document2 = CPDFDocument.InitWithFilePath("file2.pdf")
' Import pages from document2 into document1
document1.ImportPagesAtIndex(document2, "0-" & (document2.PageCount - 1), document1.PageCount)
document1.WriteToFilePath("merged.pdf")
document1.Release()
document2.Release()
End Sub
End Module
Implementação do IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 = PdfDocument.FromFile("file1.pdf")
Dim pdf2 = PdfDocument.FromFile("file2.pdf")
Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
merged.SaveAs("merged.pdf")
End Sub
End Module
O método estático Merge do IronPDF elimina o padrão verboso ImportPagesAtIndex com cadeias de alcance de páginas. Para mais opções, consulte a documentação sobre mesclagem de PDFs .
Adicionando marcas d'água
A marca d'água mostra a diferença entre a configuração CPDFWatermark orientada por propriedades doComPDFKite o estilo baseado em HTML do IronPDF.
Implementação do ComPDFKit:
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFWatermark;
using System;
class Program
{
static void Main()
{
var document = CPDFDocument.InitWithFilePath("input.pdf");
CPDFWatermark watermark = document.InitWatermark(
C_Watermark_Type.WATERMARK_TYPE_TEXT);
watermark.SetText("CONFIDENTIAL");
watermark.SetFontName("Helvetica");
watermark.SetFontSize(48);
watermark.SetTextRGBColor(255, 0, 0);
watermark.SetRotation(45);
watermark.SetOpacity(76); // 0..255
watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
watermark.SetPages($"0-{document.PageCount - 1}");
watermark.SetFront(true);
watermark.CreateWatermark();
document.WriteToFilePath("watermarked.pdf");
document.Release();
}
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFWatermark;
using System;
class Program
{
static void Main()
{
var document = CPDFDocument.InitWithFilePath("input.pdf");
CPDFWatermark watermark = document.InitWatermark(
C_Watermark_Type.WATERMARK_TYPE_TEXT);
watermark.SetText("CONFIDENTIAL");
watermark.SetFontName("Helvetica");
watermark.SetFontSize(48);
watermark.SetTextRGBColor(255, 0, 0);
watermark.SetRotation(45);
watermark.SetOpacity(76); // 0..255
watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
watermark.SetPages($"0-{document.PageCount - 1}");
watermark.SetFront(true);
watermark.CreateWatermark();
document.WriteToFilePath("watermarked.pdf");
document.Release();
}
}
Imports ComPDFKit.PDFDocument
Imports ComPDFKit.PDFWatermark
Imports System
Class Program
Shared Sub Main()
Dim document = CPDFDocument.InitWithFilePath("input.pdf")
Dim watermark As CPDFWatermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT)
watermark.SetText("CONFIDENTIAL")
watermark.SetFontName("Helvetica")
watermark.SetFontSize(48)
watermark.SetTextRGBColor(255, 0, 0)
watermark.SetRotation(45)
watermark.SetOpacity(76) ' 0..255
watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER)
watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER)
watermark.SetPages($"0-{document.PageCount - 1}")
watermark.SetFront(True)
watermark.CreateWatermark()
document.WriteToFilePath("watermarked.pdf")
document.Release()
End Sub
End Class
Implementação do IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
rotation: 45,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
rotation: 45,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Imports System
Module Program
Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
rotation:=45,
verticalAlignment:=VerticalAlignment.Middle,
horizontalAlignment:=HorizontalAlignment.Center)
pdf.SaveAs("watermarked.pdf")
End Sub
End Module
O IronPDF reduz a configuração CPDFWatermark de vários passos para uma única chamada de método com estilo HTML/CSS. Para mais opções, consulte a documentação da marca d'água .
Extração de texto
Implementação do ComPDFKit:
using ComPDFKit.PDFDocument;
using System.Text;
var document = CPDFDocument.InitWithFilePath("document.pdf");
// Extract text (verbose)
var allText = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
var page = document.PageAtIndex(i);
var textPage = page.GetTextPage();
allText.AppendLine(textPage.GetText(0, textPage.CountChars()));
textPage.Release();
page.Release();
}
document.WriteToFilePath("output.pdf");
document.Release(); // Must remember to release!
using ComPDFKit.PDFDocument;
using System.Text;
var document = CPDFDocument.InitWithFilePath("document.pdf");
// Extract text (verbose)
var allText = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
var page = document.PageAtIndex(i);
var textPage = page.GetTextPage();
allText.AppendLine(textPage.GetText(0, textPage.CountChars()));
textPage.Release();
page.Release();
}
document.WriteToFilePath("output.pdf");
document.Release(); // Must remember to release!
Imports ComPDFKit.PDFDocument
Imports System.Text
Dim document = CPDFDocument.InitWithFilePath("document.pdf")
' Extract text (verbose)
Dim allText As New StringBuilder()
For i As Integer = 0 To document.PageCount - 1
Dim page = document.PageAtIndex(i)
Dim textPage = page.GetTextPage()
allText.AppendLine(textPage.GetText(0, textPage.CountChars()))
textPage.Release()
page.Release()
Next
document.WriteToFilePath("output.pdf")
document.Release() ' Must remember to release!
Implementação do IronPDF:
using IronPdf;
var pdf = PdfDocument.FromFile("document.pdf");
// Extract text (one-liner)
string allText = pdf.ExtractAllText();
pdf.SaveAs("output.pdf");
// No Release() needed - GC handles cleanup
using IronPdf;
var pdf = PdfDocument.FromFile("document.pdf");
// Extract text (one-liner)
string allText = pdf.ExtractAllText();
pdf.SaveAs("output.pdf");
// No Release() needed - GC handles cleanup
Imports IronPdf
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract text (one-liner)
Dim allText As String = pdf.ExtractAllText()
pdf.SaveAs("output.pdf")
' No Release() needed - GC handles cleanup
O IronPDF reduz a extração de texto em várias linhas com chamadas Release() manuais para um único método. Para mais opções de extração, consulte a documentação de extração de texto .
Proteção por senha
Implementação do IronPDF:
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>")
' Set security
pdf.SecuritySettings.UserPassword = "userPassword"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")
Para obter opções de segurança abrangentes, consulte a documentação de criptografia .
Notas críticas sobre migração
Remover todas as chamadas Release()
A mudança de maior impacto é a eliminação do gerenciamento manual de memória. OComPDFKitrequer chamadas Release() explícitas em documentos, páginas e páginas de texto. O IronPDF lida com isso automaticamente por meio da coleta de lixo do .NET :
//ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();
//IronPDF- no equivalent needed
// GC handles cleanup automatically
//ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();
//IronPDF- no equivalent needed
// GC handles cleanup automatically
'ComPDFKit- manual cleanup required
document.Release()
page.Release()
textPage.Release()
'IronPDF- no equivalent needed
' GC handles cleanup automatically
Renderização HTML nativa
OComPDFKitexige a inserção manual de texto com APIs de edição. O IronPDF renderiza HTML/CSS nativamente com seu mecanismo Chromium, oferecendo suporte a CSS3 moderno, JavaScript e layouts responsivos.
Indexação na mesma página
Ambas as bibliotecas usam indexação baseada em 0 (Pages[0] é a primeira página)—não são necessárias alterações para o código de acesso à página.
Extração de texto simplificada
Substitua o padrão GetTextPage() + GetText() + Release() em várias linhas por uma única chamada ExtractAllText().
API Fluent Merge
Substitua ImportPagesAtIndex(doc2, "0-9", pageCount) por um simples Merge(pdf1, pdf2).
Lista de verificação pós-migração
Após concluir a migração do código, verifique o seguinte:
- Execute todos os testes unitários para verificar se a geração de PDF funciona corretamente.
- Compare a qualidade de saída do PDF (o mecanismo Chromium do IronPDF pode renderizar de forma diferente — geralmente melhor)
- Teste a renderização de HTML com CSS e JavaScript complexos
- Verificar a precisão da extração de texto
- Testar a funcionalidade do formulário
- Teste de desempenho de operações em lote
- Testar em todos os ambientes-alvo
- Atualizar pipelines de CI/CD
- Remover arquivos de licença do ComPDFKit
Recursos adicionais
- Documentação do IronPDF
- Tutoriais de HTML para PDF
- Referência da API
- Pacote NuGet
- Opções de licenciamento
A migração doComPDFKitpara o IronPDF elimina o gerenciamento manual de memória com chamadas Release() enquanto fornece renderização nativa de HTML para PDF que oComPDFKitnão possui. A transição para o ecossistema maduro do IronPDF oferece a profundidade de documentação, o suporte da comunidade e a estabilidade comprovada que os projetos corporativos exigem.

