Como migrar do Gnostice PDFOne para o IronPDF em C#
A migração do Gnostice PDFOne para o IronPDF transforma seu fluxo de trabalho de PDF em .NET , passando de uma abordagem baseada em coordenadas e fragmentada por plataforma para uma solução unificada, baseada em HTML/CSS, com suporte completo aos padrões modernos da web. Este guia fornece um caminho de migração abrangente, passo a passo, que elimina as limitações documentadas relacionadas a CSS, JavaScript e estabilidade de memória para desenvolvedores .NET profissionais.
Por que migrar do Gnostice PDFOne para o IronPDF?
Os Desafios do Gnostice PDFOne
O Gnostice PDFOne e o Document Studio .NET possuem limitações bem documentadas que afetam aplicações em produção:
-
Sem suporte a CSS externo: A documentação do Gnostice PDFOne afirma explicitamente que não oferece suporte a folhas de estilo CSS externas — um requisito fundamental para a conversão moderna de web para PDF.
-
Sem execução de JavaScript : Conteúdo dinâmico que requer JavaScript não pode ser renderizado, tornando impossível a conversão precisa de aplicações web modernas.
-
Sem conversão direta de HTML para PDF: O Gnostice PDFOne não possui conversão direta de HTML para PDF. Você precisa usar o Document Studio para conversão em HTML ou analisar e renderizar manualmente os elementos HTML — o que representa uma sobrecarga de desenvolvimento significativa.
-
Fragmentação da plataforma: Produtos separados para WinForms, WPF, ASP.NET e Xamarin — cada um com diferentes conjuntos de recursos e APIs. Você pode precisar de várias licenças e bases de código.
-
Vazamentos de memória e estabilidade: Fóruns de usuários e o Stack Overflow relatam vazamentos de memória persistentes, erro JPEG nº 53 e exceções do StackOverflow ao processar imagens.
-
Sem Unicode da direita para a esquerda: Árabe, hebraico e outros idiomas da direita para a esquerda não são suportados explicitamente — um fator decisivo para aplicações internacionais.
-
Suporte limitado para assinaturas digitais: Historicamente, as assinaturas digitais têm estado ausentes ou pouco confiáveis no Gnostice PDFOne.
- API baseada em coordenadas: Muitas operações exigem posicionamento manual em X/Y em vez de abordagens de layout modernas, necessitando de cálculos precisos para a colocação de cada elemento.
Comparação de Gnostice PDFOne vs IronPDF
| Aspecto | Gnostice PDFOne | IronPDF |
|---|---|---|
| CSS externo | Não suportado | Apoiado |
| Execução de JavaScript | Não suportado | Motor totalmente cromado |
| Línguas da direita para a esquerda | Não suportado | Suporte completo a Unicode |
| Assinaturas digitais | Limitado/Ausente | Suporte completo para X509 |
| Plataforma | Produtos fragmentados | Biblioteca única e unificada |
| Estabilidade da memória | Problemas relatados | Estável e bem administrado. |
| HTML para PDF | Básico, requer soluções alternativas. | Renderização com qualidade Chrome |
| Curva de Aprendizagem | API complexa | API simples e intuitiva |
| CSS moderno (Flexbox, Grid) | Não suportado | Suporte completo a CSS3 |
| Manipulação de Imagens | Problemas conhecidos | Confiável |
Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece uma base preparada para o futuro com uma biblioteca unificada que funciona de forma consistente em todas as plataformas .NET .
Avaliação da Complexidade da Migração
Esforço estimado por funcionalidade
| Recurso | Complexidade da Migração |
|---|---|
| Carregar/Salvar PDFs | Muito baixo |
| Mesclar PDFs | Muito baixo |
| Dividir PDFs | Baixo |
| Extração de texto | Baixo |
| Marcas d'água | Baixo |
| Cabeçalhos/Rodapés | Baixo |
| HTML para PDF | Baixo |
| Criptografia | Médio |
| Campos do formulário | Médio |
| Assinaturas digitais | Baixo |
Funcionalidades que você ganha
Ao migrar do Gnostice PDFOne para o IronPDF, estas funcionalidades antes impossíveis tornam-se disponíveis:
- Folhas de estilo CSS externas
- Execução de JavaScript
- Suporte a idiomas da direita para a esquerda (árabe, hebraico)
- CSS Grid e Flexbox
- Assinaturas digitais confiáveis
- Melhor gerenciamento de memória
- Suporte multiplataforma com uma única base de código
Antes de começar
Pré-requisitos
- Versão do .NET : O IronPDF é compatível com o .NET Framework 4.6.2+ e .NET Core 2.0+ / .NET 5/6/7/8/9+
- Chave de licença: Obtenha sua chave de licença do IronPDF em IronPDF
- Backup: Crie uma ramificação para o trabalho de migração.
Identificar todo o uso do Gnostice PDFOne
# Find all Gnostice references
grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" .
# Find package references
grep -r "Gnostice\|PDFOne" --include="*.csproj" .
# Find all Gnostice references
grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" .
# Find package references
grep -r "Gnostice\|PDFOne" --include="*.csproj" .
Alterações no pacote NuGet
# Remove Gnostice PDFOne packages
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.NET
dotnet remove package Gnostice.PDFOne.NET
dotnet remove package Gnostice.XtremeDocumentStudio.NET
# Install IronPDF
dotnet add package IronPdf
# Remove Gnostice PDFOne packages
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.NET
dotnet remove package Gnostice.PDFOne.NET
dotnet remove package Gnostice.XtremeDocumentStudio.NET
# Install IronPDF
dotnet add package IronPdf
Migração de Início Rápido
Etapa 1: Atualizar a configuração da licença
Antes (Gnostice PDFOne):
// Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE";
// Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE";
' Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE"
Após (IronPDF):
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
' Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
' Or in appsettings.json:
' { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
Etapa 2: Atualizar importações de namespace
// Before (Gnostice PDFOne)
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using Gnostice.PDFOne.Graphics;
// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (Gnostice PDFOne)
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using Gnostice.PDFOne.Graphics;
// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
Referência completa da API
Mapeamento de Classes Principais
| Gnostice PDFOne | IronPDF | Descrição |
|---|---|---|
PDFDocument |
PdfDocument |
Classe principal de documentos PDF |
PDFPage |
PdfDocument.Pages[i] |
Representação da página |
PDFFont |
Estilização CSS | Especificação da fonte |
PDFTextElement |
Conteúdo HTML | Conteúdo do texto |
PDFImageElement |
Tags HTML <img> |
Conteúdo da imagem |
DocExporter |
ChromePdfRenderer |
Conversão de HTML/URL para PDF |
Operações de Documentos
| Gnostice PDFOne | IronPDF |
|---|---|
new PDFDocument() |
new PdfDocument() |
doc.Load(path) |
PdfDocument.FromFile(path) |
doc.Open() |
N/A (automático) |
doc.Save(path) |
pdf.SaveAs(path) |
doc.Close() |
pdf.Dispose() |
doc.Pages.Count |
pdf.PageCount |
doc.Pages.Add() |
Renderizar HTML ou mesclar |
Operações de Fusão
| Gnostice PDFOne | IronPDF |
|---|---|
doc.Append(otherDoc) |
PdfDocument.Merge(pdf1, pdf2) |
Múltiplas chamadas Append() |
PdfDocument.Merge(list) |
Exemplos de migração de código
Exemplo 1: Conversão de HTML para PDF
Antes (Gnostice PDFOne):
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
class Program
{
static void Main()
{
PDFDocument doc = new PDFDocument();
doc.Open();
PDFPage page = doc.Pages.Add();
// PDFOne doesn't have direct HTML para PDF conversion
// You need to use Document Studio for HTML conversion
// Or manually parse and render HTML elements
PDFTextElement textElement = new PDFTextElement();
textElement.Text = "Simple text conversion instead of HTML";
textElement.Draw(page, 10, 10);
doc.Save("output.pdf");
doc.Close();
}
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
class Program
{
static void Main()
{
PDFDocument doc = new PDFDocument();
doc.Open();
PDFPage page = doc.Pages.Add();
// PDFOne doesn't have direct HTML para PDF conversion
// You need to use Document Studio for HTML conversion
// Or manually parse and render HTML elements
PDFTextElement textElement = new PDFTextElement();
textElement.Text = "Simple text conversion instead of HTML";
textElement.Draw(page, 10, 10);
doc.Save("output.pdf");
doc.Close();
}
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Graphics
Imports System
Module Program
Sub Main()
Dim doc As New PDFDocument()
doc.Open()
Dim page As PDFPage = doc.Pages.Add()
' PDFOne doesn't have direct HTML para PDF conversion
' You need to use Document Studio for HTML conversion
' Or manually parse and render HTML elements
Dim textElement As New PDFTextElement()
textElement.Text = "Simple text conversion instead of HTML"
textElement.Draw(page, 10, 10)
doc.Save("output.pdf")
doc.Close()
End Sub
End Module
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<h1>Hello World</h1><p>This is HTML content.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
A diferença é substancial: o Gnostice PDFOne não consegue converter HTML diretamente para PDF — você precisa criar manualmente os elementos de texto e posicioná-los com coordenadas. O ChromePdfRenderer do IronPDF oferece renderização HTML direta com suporte completo a CSS3 e JavaScript . Consulte a documentação de conversão de HTML para PDF para obter mais opções de renderização.
Exemplo 2: Mesclar arquivos PDF
Antes (Gnostice PDFOne):
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using System;
class Program
{
static void Main()
{
PDFDocument doc1 = new PDFDocument();
doc1.Load("document1.pdf");
PDFDocument doc2 = new PDFDocument();
doc2.Load("document2.pdf");
PDFDocument mergedDoc = new PDFDocument();
mergedDoc.Open();
mergedDoc.Append(doc1);
mergedDoc.Append(doc2);
mergedDoc.Save("merged.pdf");
doc1.Close();
doc2.Close();
mergedDoc.Close();
}
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using System;
class Program
{
static void Main()
{
PDFDocument doc1 = new PDFDocument();
doc1.Load("document1.pdf");
PDFDocument doc2 = new PDFDocument();
doc2.Load("document2.pdf");
PDFDocument mergedDoc = new PDFDocument();
mergedDoc.Open();
mergedDoc.Append(doc1);
mergedDoc.Append(doc2);
mergedDoc.Save("merged.pdf");
doc1.Close();
doc2.Close();
mergedDoc.Close();
}
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Document
Imports System
Module Program
Sub Main()
Dim doc1 As New PDFDocument()
doc1.Load("document1.pdf")
Dim doc2 As New PDFDocument()
doc2.Load("document2.pdf")
Dim mergedDoc As New PDFDocument()
mergedDoc.Open()
mergedDoc.Append(doc1)
mergedDoc.Append(doc2)
mergedDoc.Save("merged.pdf")
doc1.Close()
doc2.Close()
mergedDoc.Close()
End Sub
End Module
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(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("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Module
A abordagem Gnostice PDFOne exige a criação de um novo documento, sua abertura, o carregamento dos documentos de origem separadamente, o acréscimo de cada um deles e o fechamento manual dos três documentos. O método estático Merge do IronPDF lida com isso em três linhas com gerenciamento adequado de recursos. Saiba mais sobre como mesclar e dividir PDFs .
Exemplo 3: Adicionar marca d'água ao PDF
Antes (Gnostice PDFOne):
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
using System.Drawing;
class Program
{
static void Main()
{
PDFDocument doc = new PDFDocument();
doc.Load("input.pdf");
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
foreach (PDFPage page in doc.Pages)
{
PDFTextElement watermark = new PDFTextElement();
watermark.Text = "CONFIDENTIAL";
watermark.Font = font;
watermark.Color = Color.FromArgb(128, 255, 0, 0);
watermark.RotationAngle = 45;
watermark.Draw(page, 200, 400);
}
doc.Save("watermarked.pdf");
doc.Close();
}
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
using System.Drawing;
class Program
{
static void Main()
{
PDFDocument doc = new PDFDocument();
doc.Load("input.pdf");
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
foreach (PDFPage page in doc.Pages)
{
PDFTextElement watermark = new PDFTextElement();
watermark.Text = "CONFIDENTIAL";
watermark.Font = font;
watermark.Color = Color.FromArgb(128, 255, 0, 0);
watermark.RotationAngle = 45;
watermark.Draw(page, 200, 400);
}
doc.Save("watermarked.pdf");
doc.Close();
}
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Graphics
Imports System
Imports System.Drawing
Module Program
Sub Main()
Dim doc As New PDFDocument()
doc.Load("input.pdf")
Dim font As New PDFFont(PDFStandardFont.Helvetica, 48)
For Each page As PDFPage In doc.Pages
Dim watermark As New PDFTextElement()
watermark.Text = "CONFIDENTIAL"
watermark.Font = font
watermark.Color = Color.FromArgb(128, 255, 0, 0)
watermark.RotationAngle = 45
watermark.Draw(page, 200, 400)
Next
doc.Save("watermarked.pdf")
doc.Close()
End Sub
End Module
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var watermark = new TextStamper()
{
Text = "CONFIDENTIAL",
FontSize = 48,
Opacity = 50,
Rotation = 45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
pdf.ApplyStamp(watermark);
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");
var watermark = new TextStamper()
{
Text = "CONFIDENTIAL",
FontSize = 48,
Opacity = 50,
Rotation = 45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
pdf.ApplyStamp(watermark);
pdf.SaveAs("watermarked.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Imports System
Module Program
Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
Dim watermark = New TextStamper() With {
.Text = "CONFIDENTIAL",
.FontSize = 48,
.Opacity = 50,
.Rotation = 45,
.VerticalAlignment = VerticalAlignment.Middle,
.HorizontalAlignment = HorizontalAlignment.Center
}
pdf.ApplyStamp(watermark)
pdf.SaveAs("watermarked.pdf")
End Sub
End Module
A abordagem Gnostice PDFOne requer a criação de objetos PDFFont, iteração manual pelas páginas, cálculo de coordenadas (200, 400) e definição de propriedades em objetos PDFTextElement. O recurso TextStamper do IronPDF oferece configuração declarativa com centralização automática e aplicação de página — sem necessidade de cálculos de coordenadas. Consulte a documentação sobre marca d'água para obter opções adicionais.
Notas críticas sobre migração
Layout baseado em coordenadas para HTML/CSS
A mudança de paradigma mais significativa nesta migração do Gnostice PDFOne é a transição do posicionamento baseado em coordenadas para o layout HTML/CSS:
// Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400); // X=200, Y=400
// IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
// Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400); // X=200, Y=400
// IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
' Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400) ' X=200, Y=400
' IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle
watermark.HorizontalAlignment = HorizontalAlignment.Center
Objetos de fonte para estilização CSS
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
watermark.Font = font;
// IronPDF - use CSS in HTML content
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>";
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
watermark.Font = font;
// IronPDF - use CSS in HTML content
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>";
' Gnostice PDFOne
Dim font As New PDFFont(PDFStandardFont.Helvetica, 48)
watermark.Font = font
' IronPDF - use CSS in HTML content
Dim html As String = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>"
Indexação de páginas
O Gnostice PDFOne geralmente usa páginas indexadas a partir de 1, enquanto o IronPDF usa páginas indexadas a partir de 0 (convenção padrão do .NET ):
// Gnostice PDFOne: May use 1-indexed
var page = doc.Pages[1]; // First page
// IronPDF: 0-indexed
var page = pdf.Pages[0]; // First page
// Gnostice PDFOne: May use 1-indexed
var page = doc.Pages[1]; // First page
// IronPDF: 0-indexed
var page = pdf.Pages[0]; // First page
' Gnostice PDFOne: May use 1-indexed
Dim page = doc.Pages(1) ' First page
' IronPDF: 0-indexed
Dim page = pdf.Pages(0) ' First page
Funcionalidades que agora funcionam
Após a migração do Gnostice PDFOne para o IronPDF, estas funcionalidades anteriormente problemáticas ou impossíveis tornam-se disponíveis:
- CSS externo: Folhas de estilo que não funcionavam no Gnostice PDFOne agora são renderizadas corretamente.
- Conteúdo JavaScript : O conteúdo dinâmico que estava faltando agora aparece.
- Idiomas RTL: Árabe, hebraico e outros idiomas da direita para a esquerda funcionam corretamente.
- CSS Grid e Flexbox: Técnicas modernas de layout são totalmente suportadas.
- Assinaturas digitais: Assinatura confiável de certificados X509
Solução de problemas
Problema 1: Elemento PDFText não encontrado
Problema: PDFTextElement não existe no IronPDF.
Solução: Utilize conteúdo HTML ou TextStamper:
// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>");
// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>");
// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
Imports IronPdf
' For new documents - render HTML
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>")
' For existing documents - use stampers
Dim stamper As New TextStamper() With {.Text = "Added Text"}
pdf.ApplyStamp(stamper)
Problema 2: Objetos PDFFont
Problema: Gnostice PDFOne usa objetos PDFFont; IronPDF usa CSS.
Solução:
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12);
// IronPDF - use CSS
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>";
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12);
// IronPDF - use CSS
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>";
' Gnostice PDFOne
Dim font As New PDFFont(PDFStandardFont.Helvetica, 12)
' IronPDF - use CSS
Dim html As String = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>"
Problema 3: DocExporter não encontrado
Problema: a classe DocExporter não existe no IronPDF.
Solução: Use ChromePdfRenderer:
// Gnostice PDFOne
DocExporter exporter = new DocExporter();
exporter.Export(doc, "output.pdf", DocumentFormat.PDF);
// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
// Gnostice PDFOne
DocExporter exporter = new DocExporter();
exporter.Export(doc, "output.pdf", DocumentFormat.PDF);
// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
' Gnostice PDFOne
Dim exporter As New DocExporter()
exporter.Export(doc, "output.pdf", DocumentFormat.PDF)
' IronPDF
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
pdf.SaveAs("output.pdf")
Edição 4: Melhorias na memória
Problema: O Gnostice PDFOne apresentou relatos de vazamento de memória.
Solução: O IronPDF oferece gerenciamento de memória estável. Utilize padrões de descarte adequados:
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
// Process PDF
pdf.SaveAs("output.pdf");
} // Automatically disposed
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
// Process PDF
pdf.SaveAs("output.pdf");
} // Automatically disposed
Imports PdfDocument
Using pdf = PdfDocument.FromFile("large.pdf")
' Process PDF
pdf.SaveAs("output.pdf")
End Using
Lista de verificação para migração
Pré-migração
- Inventariar todo o uso do Gnostice PDFOne no código-fonte.
- Observe os recursos que não estavam funcionando (CSS, JS, RTL) — agora eles funcionarão!
- Documente problemas de memória para testes comparativos.
- Obtenha a chave de licença do IronPDF
- Criar branch de migração no controle de versão
Migração de código
- Remover pacotes NuGet do Gnostice PDFOne
- Instale o pacote NuGet IronPDF :
dotnet add package IronPdf - Atualizar importações de namespace
- Substituir configuração da chave de licença
- Converter
PDFDocumentparaPdfDocument - Converter
DocExporterparaChromePdfRenderer - Substituir desenho baseado em coordenadas por carimbo HTML
- Atualizar
PDFFontpara estilo CSS - Converter
doc.Append()paraPdfDocument.Merge()
Testando
- Teste de conversão de HTML para PDF
- Verifique se o CSS externo agora funciona
- Testar conteúdo dependente de JavaScript
- Testar idiomas da direita para a esquerda (se necessário)
- Teste assinaturas digitais (já disponíveis!)
- Teste de fusão de PDFs
- Testar marca d'água
- Comparar o uso de memória
Pós-migração
- Remover licença do Gnostice PDFOne
- Atualizar documentação
- Remover soluções alternativas para as limitações do Gnostice PDFOne
- Treinar a equipe na API do IronPDF

