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

Como migrar do Gnostice PDFOne para o IronPDF em C#

A migração doGnostice PDFOnepara 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 doGnostice PDFOnepara o IronPDF?

Os Desafios do Gnostice PDFOne

Gnostice PDFOne e Document Studio .NET têm limitações bem documentadas que afetam aplicativos de produção. O pacote NuGet legada PDFOne.NET também está agora descontinuado (último lançamento 24.1.60, 1 de julho de 2024), com o fornecedor direcionando novos trabalhos para os pacotes Gnostice.DocumentStudio.*:

  1. Sem suporte a CSS externo: A documentação doGnostice PDFOneafirma 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: OGnostice PDFOnenã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 deGnostice PDFOnevs 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 planejando adoção do .NET 10 e C# 14, o IronPDF oferece uma biblioteca unificada que funciona consistentemente 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 doGnostice PDFOnepara 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 packages (PDFOne.NET is the legacy, deprecated package)
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.WinForms
dotnet remove package Gnostice.DocumentStudio.WPF
dotnet remove package Gnostice.DocumentStudio.ASP
dotnet remove package Gnostice.DocumentStudio.ASP.Core
dotnet remove package Gnostice.DocumentStudio.Xamarin

# Install IronPDF
dotnet add package IronPdf
# Remove Gnostice packages (PDFOne.NET is the legacy, deprecated package)
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.WinForms
dotnet remove package Gnostice.DocumentStudio.WPF
dotnet remove package Gnostice.DocumentStudio.ASP
dotnet remove package Gnostice.DocumentStudio.ASP.Core
dotnet remove package Gnostice.DocumentStudio.Xamarin

# 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 PDFOnelicense is set via the static PDFOne class
Gnostice.PDFOne.PDFOne.LicenseKey = "YOUR-GNOSTICE-LICENSE";
//Gnostice PDFOnelicense is set via the static PDFOne class
Gnostice.PDFOne.PDFOne.LicenseKey = "YOUR-GNOSTICE-LICENSE";
Imports Gnostice.PDFOne

' Gnostice PDFOnelicense is set via the static PDFOne class
PDFOne.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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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: oGnostice PDFOnenão consegue converter HTML diretamente para PDF — você precisa criar manualmente os elementos de texto e posicioná-los com coordenadas. O ChromePdfRenderer do IronPDF fornece renderização direta de HTML 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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 abordagemGnostice PDFOneexige 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 o 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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 doGnostice PDFOnerequer a criação de objetos PDFFont, a iteração manual pelas páginas, o cálculo de coordenadas (200, 400) e a definição de propriedades em objetos PDFTextElement. O TextStamper do IronPDF fornece configuração declarativa com centralização automática e aplicação de página—não são necessários 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 doGnostice 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>";
Imports Gnostice.PDFOne

' 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

OGnostice PDFOnegeralmente 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 doGnostice PDFOnepara o IronPDF, estas funcionalidades anteriormente problemáticas ou impossíveis tornam-se disponíveis:

  • CSS externo: Folhas de estilo que não funcionavam noGnostice PDFOneagora 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

Problem: PDFTextElement doesn't exist in 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

Problem:Gnostice PDFOneuses PDFFont objects;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 = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>"
$vbLabelText   $csharpLabel

Problema 3: DocExporter não encontrado

Problem: DocExporter class doesn't exist in 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: OGnostice PDFOneapresentou 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 doGnostice PDFOneno 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 estilização 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

ObserveGnostice é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado por Gnostice Information Technologies. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.

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 Iron

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