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

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. Suporte limitado para assinaturas digitais: Historicamente, as assinaturas digitais têm estado ausentes ou pouco confiáveis ​​no Gnostice PDFOne.

  8. 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

  1. 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+
  2. Chave de licença: Obtenha sua chave de licença do IronPDF em IronPDF
  3. 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" .
SHELL

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
SHELL

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"
$vbLabelText   $csharpLabel

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" }
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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>"
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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>"
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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 PDFDocument para PdfDocument
  • Converter DocExporter para ChromePdfRenderer
  • Substituir desenho baseado em coordenadas por carimbo HTML
  • Atualizar PDFFont para estilo CSS
  • Converter doc.Append() para PdfDocument.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

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

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