Como migrar do SelectPDF para o IronPDF em C#
Migrar do Selecionar PDF para o IronPDF move seu fluxo de trabalho de geração de PDFs de uma biblioteca exclusiva para Windows — cujo motor de renderização padrão é um WebKit interno e cujo motor Blink opcional é distribuído com o Chromium 124 (abril de 2024) — para uma biblioteca de multiplataforma do Chromium atual com suporte completo para CSS3 e JavaScript. Este guia fornece um caminho de migração completo, passo a passo, que permite a implantação em Linux, Docker, Azure Functions e outras plataformas de nuvem que o Selecionar PDF não suporta.
Por que migrar do SelectPDF para o IronPDF?
Entendendo o SelectPdf
SelectPdf é uma biblioteca comercial projetada para converter conteúdo HTML em PDFs usando C#. A biblioteca foi concebida para desenvolvedores que necessitam de uma integração perfeita da funcionalidade de geração de PDFs em seus aplicativos. O ponto forte do Selecionar PDF reside em sua API simples, tornando-o uma opção atraente para quem é iniciante na geração de PDFs.
No entanto, os potenciais usuários devem estar cientes de suas limitações críticas. De acordo com a própria documentação do fornecedor, o Selecionar PDF só roda no Windows — não no Linux, macOS ou Xamarin. Isso apresenta uma barreira substancial ao considerar soluções de implantação baseadas em nuvem, como Linux Azure Functions ou Docker. A Edição Comunitária é limitada a 5 páginas por PDF e aplica uma marca d'água em cada página até que uma chave de licença seja adquirida. O motor de renderização padrão do Selecionar PDF é um WebKit interno; o motor Blink opcional é fornecido com o Chromium 124 (abril de 2024), que está atrasado em relação ao Chrome atual e pode causar problemas com recursos de CSS mais novos, como Grade CSS e a propriedade gap de Flexbox.
Limitações críticas do SelectPdf
| Emitir | Impacto | Solução IronPDF |
|---|---|---|
| Exclusivo para Windows | Não é possível implantar em Linux, Docker ou Azure Functions. | Suporte completo multiplataforma |
| Motor WebKit padrão; opção Blink é distribuída com Chromium 124 (abril de 2024) | Recursos CSS mais novos podem falhar no motor padrão | Chromium atualizado |
| Limite de 5 páginas para a versão gratuita | Marca d'água por página em todas as páginas até licenciado | Teste generoso |
| .NET 10 somente no Windows | Nenhuma implantação Linux/macOS/contêiner | Completo .NET 10 em todas as plataformas |
| Implantação em nuvem bloqueada (não-Windows) | Não é possível usarAWS Lambdaou Linux Azure Functions | Nativo da nuvem |
Comparação entre SelectPDF e IronPDF
| Recurso | Selecionar PDF | IronPDF |
|---|---|---|
| Suporte da plataforma | Somente para Windows | Totalmente multiplataforma, mais de 10 distribuições |
| Suporte aos padrões modernos da Web | WebKit por padrão; Opção Blink é distribuída com Chromium 124 (abril de 2024) | CSS3 completo, Chromium atual |
| Limite máximo de páginas da versão gratuita | 5 páginas + marca d'água por página | Flexível, sem limite rígido |
| Preços | $499 Desenvolvedor Único a $1,599 OEM Enterprise | Preços transparentes e flexíveis |
| Suporte para .NET 10 | Sim, mas somente no Windows | Sim, todas as plataformas |
| Implantação em ambientes de nuvem | Somente alvos Windows | Totalmente suportado (Windows + Linux) |
| Grade CSS | WebKit: limitado; Piscar (Chromium 124): com suporte | Apoiado |
| Flexbox (propriedade gap) | WebKit: não suportado; Blink: suportado | Apoiado |
| Variáveis CSS | WebKit: não suportado; Blink: suportado | Apoiado |
| Docker (Linux) | Não suportado | Imagens oficiais |
| Azure Functions (Linux) | Não suportado | Apoiado |
| AWS Lambda | Não suportado | Apoiado |
O pacote NetCore do Selecionar PDF tem como alvo o .NET Standard 2.0 e é documentado como compatível com o .NET 5 até o .NET 10 — mas apenas no Windows, o que neutraliza essa compatibilidade para qualquer equipe implantando em contêineres Linux,AWS Lambdaou Azure App Service baseado em Linux. O IronPDF suporta as mesmas versões .NET e roda em Windows, Linux, macOS e Docker.
Antes de começar
Pré-requisitos
- .NET Environment: .NET Framework 4.6.1+ or .NET Core 3.1+ / .NET 5/6/7/8/9/10+
- 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 Selecionar PDF (use Select.HtmlToPdf.NetCore on .NET Core / .NET 5+)
dotnet remove package Select.HtmlToPdf
# or: dotnet remove package Select.HtmlToPdf.NetCore
# Install IronPDF
dotnet add package IronPdf
# Remove Selecionar PDF (use Select.HtmlToPdf.NetCore on .NET Core / .NET 5+)
dotnet remove package Select.HtmlToPdf
# or: dotnet remove package Select.HtmlToPdf.NetCore
# Install IronPDF
dotnet add package IronPdf
Configuração de licença
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Referência completa da API
Alterações de namespace
// Before: SelectPdf
using SelectPdf;
// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
// Before: SelectPdf
using SelectPdf;
// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
' Before: SelectPdf
Imports SelectPdf
' After: IronPDF
Imports IronPdf
Imports IronPdf.Engines.Chrome
Mapeamentos da API principal
| Selecionar PDF | IronPDF | Notas |
|---|---|---|
HtmlToPdf |
ChromePdfRenderer |
Classe conversora principal |
converter.ConvertHtmlString(html) |
renderer.RenderHtmlAsPdf(html) |
Conversão de string HTML |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
Conversão de URL |
doc.Save(path) |
pdf.SaveAs(path) |
Salvar em arquivo |
doc.Close() |
Não é necessário | O IronPDF cuida da limpeza. |
converter.Options.PdfPageSize |
renderer.RenderingOptions.PaperSize |
Tamanho do papel |
converter.Options.PdfPageOrientation |
renderer.RenderingOptions.PaperOrientation |
Orientação |
converter.Options.MarginTop |
renderer.RenderingOptions.MarginTop |
Margem superior |
converter.Options.MarginBottom |
renderer.RenderingOptions.MarginBottom |
Margem inferior |
converter.Options.MarginLeft |
renderer.RenderingOptions.MarginLeft |
Margem esquerda |
converter.Options.MarginRight |
renderer.RenderingOptions.MarginRight |
Margem direita |
PdfPageSize.A4 |
PdfPaperSize.A4 |
enumeração de tamanho A4 |
PdfPageOrientation.Portrait |
PdfPaperOrientation.Portrait |
Enum de retratos |
PdfPageOrientation.Landscape |
PdfPaperOrientation.Landscape |
Enigma da paisagem |
{page_number} |
{page} |
Número da página (espaço reservado) |
{total_pages} |
{total-pages} |
Número total de páginas (espaço reservado) |
Exemplos de migração de código
Exemplo 1: Conversão de string HTML para PDF
Antes (SelecionarPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(htmlContent);
doc.Save("document.pdf");
doc.Close();
Console.WriteLine("PDF generated from HTML string");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(htmlContent);
doc.Save("document.pdf");
doc.Close();
Console.WriteLine("PDF generated from HTML string");
}
}
Imports SelectPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim converter As New HtmlToPdf()
Dim doc As PdfDocument = converter.ConvertHtmlString(htmlContent)
doc.Save("document.pdf")
doc.Close()
Console.WriteLine("PDF generated from HTML string")
End Sub
End Class
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF generated from HTML string");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF generated from HTML string");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("document.pdf")
Console.WriteLine("PDF generated from HTML string")
End Sub
End Class
Este exemplo demonstra as principais diferenças da API. Selecionar PDF usa HtmlToPdf como a classe conversora, chamando ConvertHtmlString() para criar um PdfDocument, depois Save() e Close() para persistir e limpar.
IronPDF usa ChromePdfRenderer com RenderHtmlAsPdf(), retornando um PdfDocument que é salvo com SaveAs(). A chamada Close() é eliminada—IronPDF gerencia automaticamente os recursos. Consulte a documentação de conversão de HTML para PDF para obter exemplos completos.
Exemplo 2: Conversão de URL para PDF
Antes (SelecionarPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertUrl("https://www.example.com");
doc.Save("output.pdf");
doc.Close();
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertUrl("https://www.example.com");
doc.Save("output.pdf");
doc.Close();
Console.WriteLine("PDF created successfully");
}
}
Imports SelectPdf
Imports System
Class Program
Shared Sub Main()
Dim converter As New HtmlToPdf()
Dim doc As PdfDocument = converter.ConvertUrl("https://www.example.com")
doc.Save("output.pdf")
doc.Close()
Console.WriteLine("PDF created successfully")
End Sub
End Class
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
O método ConvertUrl() do Selecionar PDF mapeia diretamente para RenderUrlAsPdf() do IronPDF. A diferença crítica está no motor de renderização: o Selecionar PDF tem como padrão um WebKit interno e oferece uma opção Blink distribuída com o Chromium 124 (abril de 2024), enquanto o IronPDF usa o Chromium estável atual para suporte completo a CSS3 e JavaScript. Saiba mais em nossos tutoriais .
Exemplo 3: Configurações de página personalizadas e margens
Antes (SelecionarPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
converter.Options.PdfPageSize = PdfPageSize.A4;
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
converter.Options.MarginTop = 20;
converter.Options.MarginBottom = 20;
converter.Options.MarginLeft = 20;
converter.Options.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("custom-settings.pdf");
doc.Close();
Console.WriteLine("PDF with custom settings created");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
converter.Options.PdfPageSize = PdfPageSize.A4;
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
converter.Options.MarginTop = 20;
converter.Options.MarginBottom = 20;
converter.Options.MarginLeft = 20;
converter.Options.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("custom-settings.pdf");
doc.Close();
Console.WriteLine("PDF with custom settings created");
}
}
Imports SelectPdf
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdf()
converter.Options.PdfPageSize = PdfPageSize.A4
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait
converter.Options.MarginTop = 20
converter.Options.MarginBottom = 20
converter.Options.MarginLeft = 20
converter.Options.MarginRight = 20
Dim html As String = "<html><body><h1>Custom Page Settings</h1></body></html>"
Dim doc As PdfDocument = converter.ConvertHtmlString(html)
doc.Save("custom-settings.pdf")
doc.Close()
Console.WriteLine("PDF with custom settings created")
End Sub
End Module
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom-settings.pdf");
Console.WriteLine("PDF with custom settings created");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom-settings.pdf");
Console.WriteLine("PDF with custom settings created");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Dim html As String = "<html><body><h1>Custom Page Settings</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom-settings.pdf")
Console.WriteLine("PDF with custom settings created")
End Sub
End Module
O padrão de configurações da página é quase idêntico, com alterações simples nos nomes das propriedades:
converter.Options.PdfPageSize→renderer.RenderingOptions.PaperSizeconverter.Options.PdfPageOrientation→renderer.RenderingOptions.PaperOrientationPdfPageSize.A4→PdfPaperSize.A4PdfPageOrientation.Portrait→PdfPaperOrientation.Portrait
As propriedades de margem mantêm os mesmos nomes e unidades.
O problema exclusivo do Windows
Limitações de plataforma do SelectPdf
Apesar de quaisquer alegações de marketing, o Selecionar PDF explicitamente não oferece suporte a:
- Linux (qualquer distribuição)
- macOS
- Contêineres Docker
- Azure Functions
- AWS Lambda
- Funções do Google Cloud
- Quaisquer sistemas baseados em ARM
Essa é uma limitação arquitetônica fundamental: o Selecionar PDF depende de bibliotecas específicas do Windows e não pode ser portado.
Comparação de suporte de plataforma
| Plataforma | Selecionar PDF | IronPDF |
|---|---|---|
| Windows Server 2019+ | ✅ | ✅ |
| Windows 10/11 | ✅ | ✅ |
| Ubuntu 20.04+ | ❌ | ✅ |
| Debian 10+ | ❌ | ✅ |
| CentOS 7+ | ❌ | ✅ |
| Alpine Linux | ❌ | ✅ |
| Amazon Linux 2 | ❌ | ✅ |
| macOS 10.15+ | ❌ | ✅ |
| Serviço de Aplicativos do Azure (Linux) | ❌ | ✅ |
| Azure Functions | ❌ | ✅ |
| AWS Lambda | ❌ | ✅ |
| Docker (Linux) | ❌ | ✅ |
| Kubernetes | ❌ | ✅ |
O mecanismo de renderização desatualizado
Comparação de suporte a recursos CSS
O Selecionar PDF distribui três motores (por documentos do fornecedor): um WebKit interno (o padrão), Blink (introduzido na v19.1, distribuído com o Chromium 124.0.6367.201 — lançado em abril de 2024), e Chromium/CEF. O motor WebKit padrão não acompanhou os padrões modernos da web:
| Recurso CSS | SelectPdf (WebKit padrão) | SelectPdf (Piscar, Chromium 124) | IronPDF |
|---|---|---|---|
| Grade CSS | ⚠ Parcial/incompleto | ✅ | ✅Completo |
| Flexbox (básico) | ✅ | ✅ | ✅ |
| Flexbox (propriedade gap) | ❌ | ✅ | ✅ |
| Variáveis CSS | ❌ | ✅ | ✅ |
| CSS calc() | ⚠ Limitado | ✅ | ✅ |
| @media print | ⚠ Limitado | ✅ | ✅ |
| @font-face | ⚠ Limitado | ✅ | ✅ |
| Fontes da Web | ⚠ Limitado | ✅ | ✅ |
| SVG | ⚠ Básico | ✅ | ✅Completo |
| Transformações CSS | ⚠ Limitado | ✅ | ✅ |
| Animações CSS | ❌ | ⚠ Parcial | ✅ |
Novas funcionalidades após a migração
Após migrar para o IronPDF, você obtém recursos que o SelectPDF não oferece:
Implantação multiplataforma
// ✅IronPDF- Works everywhere
using IronPdf;
// Serviço de Aplicativos do Azure (Linux) - WORKS
// Docker container - WORKS
//AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
// ✅IronPDF- Works everywhere
using IronPdf;
// Serviço de Aplicativos do Azure (Linux) - WORKS
// Docker container - WORKS
//AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
Imports IronPdf
' ✅IronPDF- Works everywhere
' Serviço de Aplicativos do Azure (Linux) - WORKS
' Docker container - WORKS
' AWS Lambda- WORKS
' GitHub Actions on ubuntu-latest - WORKS
' macOS development - WORKS
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>")
pdf.SaveAs("output.pdf")
Suporte a CSS moderno
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();
var html = @"
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();
var html = @"
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
Imports IronPdf
' ✅IronPDF- Uses latest stable Chromium
Dim renderer As New ChromePdfRenderer()
Dim html As String = "
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' All modern CSS features render correctly!
Não é necessário fechar (Close()).
O IronPDF gerencia os recursos automaticamente:
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed
// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed
// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}
' Option 1: Let garbage collection handle it
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' No Close() needed
' Option 2: Explicit disposal
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Using
Lista de verificação para migração
Pré-migração
- Auditar todas as utilizações de Selecionar PDF na base de código.
- Documente as opções de conversor de corrente para mapeamento.
- Identificar implementações de cabeçalho/rodapé
- Verifique a sintaxe do espaço reservado do número da página (
{page_number}→{page}) - Observe os padrões de tratamento de URLs base
- Verificar as plataformas de implantação de destino
- Obtenha a chave de licença do IronPDF em IronPDF
Atualizações de código
- Remover pacote NuGet
Select.HtmlToPdf - Instalar pacote NuGet
IronPdf - Atualizar importações de namespace (
using SelectPdf;→using IronPdf;) - Substituir
HtmlToPdfporChromePdfRenderer - Substituir
ConvertHtmlString()porRenderHtmlAsPdf() - Substituir
ConvertUrl()porRenderUrlAsPdf() - Atualizar nomes de propriedades de opções (
Options.PdfPageSize→RenderingOptions.PaperSize) - Converter
PdfPageSizeparaPdfPaperSize - Converter
PdfPageOrientationparaPdfPaperOrientation - Substituir
doc.Save()porpdf.SaveAs() - Remover todas as chamadas
doc.Close() - Corrigir espaços reservados para o número da página (
{page_number}→{page},{total_pages}→{total-pages}) - Adicionar inicialização de licença na inicialização do aplicativo
Pós-migração
- Execute todos os testes unitários
- Verificar a renderização CSS (especialmente Grid/Flexbox)
- Testar a execução do JavaScript
- Verificar os números de página do cabeçalho/rodapé
- Testar nas plataformas alvo (Linux, Docker, etc.)
- Teste de desempenho
- Comparar a qualidade de saída do PDF
- Atualizar pipelines de CI/CD
- Testar implantações na nuvem (se aplicável)

