IRONSOFTWAREHOME
VÍDEOS

Como assinar arquivos PDF em C# usando o IronPDF

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

Migrar do Nutrient (anteriormente PSPDFKit) para IronPDF simplifica seu fluxo de trabalho PDF .NET movendo-se de um amplo conjunto de ferramentas de imagem e PDF para uma biblioteca focada em PDF. A oferta .NET do lado do servidor da Nutrient é o GdPicture.NET — o kit de ferramentas adquirido da ORPALIS e reposicionado como "Nutrient .NET SDK" — que é distribuído como o pacote NuGet GdPicture sob o namespace GdPicture14. Este guia percorre um caminho de migração passo a passo que troca o conjunto de ferramentas procedural e multiuso por uma biblioteca exclusivamente de PDF, com uma menor área de superfície.

Por que Migrar do Nutrient para IronPDF

O Problema de Área de Superfície do Conjunto de Ferramentas

O Nutrient (anteriormente PSPDFKit, rebatizado em 23-10-2024) vende uma família de múltiplos produtos — Document Engine (microserviço Docker), Web SDK, SDKs móveis, e um SDK .NET lado do servidor que é o GdPicture por trás. Para equipes que precisam de operações PDF diretas sem o restante do conjunto de ferramentas, a área de superfície aparece de algumas maneiras concretas:

  1. Amplo escopo do conjunto de ferramentas: O SDK .NET cobre PDF, OCR, códigos de barras, digitalização TWAIN, processamento e conversão de imagens em mais de 100 formatos de arquivo. Útil se você precisar dessa abrangência — mais área de superfície do que um projeto exclusivamente de PDF precisa se você não precisar.

  2. Preços liderados por vendas: A página nutrient.io/sdk/pricing direciona para um formulário de contato em vez de publicar taxas por desenvolvedor, o que dificulta a comparação de custos lado a lado para pequenas equipes.

  3. Rotatividade de marca e pacote: PSPDFKit → Nutrient (2024-10-23), além da aquisição GdPicture, significa três nomes para rastrear em código mais antigo. O SDK .NET ainda é distribuído como o pacote NuGet GdPicture, namespace GdPicture14, com nomes de classes como GdPicturePDF e GdPictureDocumentConverter que não correspondem à marca "Nutrient" ou "PSPDFKit".

  4. Dependência de navegador externo para HTML-to-PDF: O renderizador HTML do SDK .NET depende de um Chrome ou Edge instalado no sistema (ou um caminho portátil que você define via SetWebBrowserPath). O IronPDF envia seu próprio Chromium incorporado.

  5. API procedural de PDF: As marcas d'água compõem SetFillAlpha, DrawTextBox e marcadores de camada OCG; cabeçalhos e rodapés são desenhados por página em um loop. Compor operações comuns de PDF a partir de primitivas significa mais código por tarefa.

Comparação Nutrient .NET SDK vs IronPDF

AspectoNutrient .NET SDK (GdPicture)IronPDF
EscopoPDF + OCR + código de barras + digitalização + imagemBiblioteca de PDFs
PreçosLiderado por vendas (contatar para cotação)Transparente, publicado
Pacote NuGetGdPictureIronPdf
Namespace raizGdPicture14IronPdf
Estilo APIPrincipalmente chamadas de desenho procedimental síncronasSincronização com opção assíncrona, fluente
Renderização HTMLRequer Chrome / Edge do sistemaChromium incorporado
Indexação de página1-baseadoBaseado em 0
Usuários-alvoEquipes que necessitam de imagem + digitalização + PDF em um único kit de ferramentasEquipes que necessitam apenas de PDF

Para equipes no .NET moderno que só precisam de PDF,IronPDF fornece uma fundação menor e focada em PDF que integra-se perfeitamente sem as camadas adicionais de imagem / digitalização / OCR.


Antes de começar

Pré-requisitos

  1. Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
  3. Licença do IronPDF: Obtenha sua chave de licença em IronPDF

Alterações no pacote NuGet

# Remove theNutrient .NET SDK (GdPicture)and any legacy PSPDFKit-branded packages
dotnet remove package GdPicture
dotnet remove package GdPicture.WPF
dotnet remove package GdPicture.WinForms
dotnet remove package PSPDFKit.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

O atual SDK Nutrient .NET é distribuído sob o ID NuGet GdPicture (mais recente 14.x, proprietário ORPALIS — uma subsidiária da Nutrient). O pacote PSPDFKit.NET com a marca PSPDFKit está em fase de descontinuação; remova, se presente.

Configuração de licença

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Identificar Uso do Nutrient .NET SDK

# Find GdPicture / Nutrient / PSPDFKit usage
grep -rE "GdPicture14|GdPicturePDF|GdPictureDocumentConverter|PSPDFKit|Nutrient" --include="*.cs" .
SHELL

Referência completa da API

Mapeamentos de inicialização

Nutrient .NET SDK (GdPicture)IronPDF
new GdPicturePDF()new PdfDocument(...) / PdfDocument.FromFile(...)
new GdPictureDocumentConverter()new ChromePdfRenderer()
pdf.Dispose() (IDisposable)pdf.Dispose() (IDisposable)

Mapeamentos de carregamento de documentos

Nutrient .NET SDK (GdPicture)IronPDF
pdf.LoadFromFile(path)PdfDocument.FromFile(path)
pdf.LoadFromStream(stream)PdfDocument.FromStream(stream)
pdf.LoadFromByteArray(bytes)new PdfDocument(bytes) / PdfDocument.FromBinaryData(bytes)

Mapeamentos de geração de PDF

Nutrient .NET SDK (GdPicture)IronPDF
String HTML: escrever para arquivo temporário, então converter.LoadFromFile(path, DocumentFormat.DocumentFormatHTML) + SaveAsPDF(out)renderer.RenderHtmlAsPdf(html)
converter.LoadFromHttp(url) + SaveAsPDF(out)renderer.RenderUrlAsPdf(url)
converter.LoadFromFile(htmlPath, DocumentFormat.DocumentFormatHTML) + SaveAsPDF(out)renderer.RenderHtmlFileAsPdf(path)

Mapeamentos de operações de documentos

Nutrient .NET SDK (GdPicture)IronPDF
converter.CombineToPDF(paths, out, PdfConformance.PDF)PdfDocument.Merge(pdfs)
pdf.GetPageCount()pdf.PageCount
pdf.SaveToFile(path)pdf.SaveAs(path)
pdf.SaveToByteArray(out bytes)pdf.BinaryData

Mapeamentos de Marca d'água

Nutrient .NET SDK (GdPicture)IronPDF
pdf.SetFillAlpha(...) + pdf.DrawTextBox(...) por páginapdf.ApplyWatermark(html, rotation, vAlign, hAlign)
pdf.AddStandardFont(...) + chamadas de desenhoHTML/CSS na string de marca d'água
SetFillAlpha(128) (escala de bytes de 0 a 255)Marca d'água Opacity 0–100 (int) ou CSS opacity
pdf.SetTextSize(48)CSS font-size: 48px

Exemplos de migração de código

Exemplo 1: Conversão de HTML para PDF

Before (Nutrient .NET SDK / GdPicture):

// NuGet: Install-Package GdPicture
using GdPicture14;
using System.IO;

class Program
{
    static void Main()
    {
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        // GdPicture's HTML loader is file-based, so stage the string to disk first.
        File.WriteAllText("input.html", htmlContent);

        using var converter = new GdPictureDocumentConverter();
        converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
        converter.SaveAsPDF("output.pdf");
    }
}

Após (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}

A abordagem do GdPicture requer alguns passos extras: o carregador HTML é baseado em arquivo/URL, então uma string HTML na memória precisa ser armazenada em disco primeiro, então converter.LoadFromFile(...) é chamado com DocumentFormat.DocumentFormatHTML, seguido por SaveAsPDF. A renderização HTML depende de um Chrome ou Edge instalado no sistema (ou um caminho portátil fornecido via SetWebBrowserPath).

O IronPDF aceita a string HTML diretamente. Criar um ChromePdfRenderer, chamar RenderHtmlAsPdf(), e salvar com SaveAs(). Nenhum arquivo temporário, nenhuma dependência de navegador hospedeiro —IronPDF envia seu próprio Chromium incorporado. Consulte a documentação de conversão de HTML para PDF para obter opções de renderização adicionais.

Exemplo 2: Mesclar vários PDFs

Before (Nutrient .NET SDK / GdPicture):

// NuGet: Install-Package GdPicture
using GdPicture14;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        IEnumerable<string> sourceFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf"
        };

        using var converter = new GdPictureDocumentConverter();
        converter.CombineToPDF(sourceFiles, "merged.pdf", PdfConformance.PDF);
    }
}

Após (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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");
    }
}

A fusão do GdPicture requer um IEnumerable<string> baseado em caminho através de converter.CombineToPDF, com um valor PdfConformance selecionando o nível de conformidade de saída.

O IronPDF trabalha no nível de documento: carrega cada PDF com PdfDocument.FromFile(), faz a fusão com o método estático PdfDocument.Merge() e salva. Os documentos podem ser passados diretamente ou como um enumerável. Saiba mais sobre como mesclar e dividir PDFs .

Exemplo 3: Adicionando marcas d'água

Before (Nutrient .NET SDK / GdPicture):

// NuGet: Install-Package GdPicture
using GdPicture14;

class Program
{
    static void Main()
    {
        using var pdf = new GdPicturePDF();
        pdf.LoadFromFile("document.pdf");
        pdf.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitPoint);

        var font = pdf.AddStandardFont(PdfStandardFont.PdfStandardFontHelveticaBold);
        int pageCount = pdf.GetPageCount();

        for (int i = 1; i <= pageCount; i++)
        {
            pdf.SelectPage(i);
            pdf.SetFillAlpha(128);  // ~50% (0..255)
            pdf.SetTextSize(48);
            pdf.SetOriginRotationInDegrees(45);
            pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
                PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
                PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
        }

        pdf.SaveToFile("watermarked.pdf");
    }
}

Após (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>CONFIDENTIAL</h1>",
            45,
            VerticalAlignment.Middle,
            HorizontalAlignment.Center);

        pdf.SaveAs("watermarked.pdf");
    }
}

Este exemplo destaca uma diferença arquitetônica fundamental. O GdPicture usa uma abordagem de chamada de desenho procedural: adicione uma fonte padrão, depois itere (baseado em 1) por cada página chamando SelectPage, SetFillAlpha, SetTextSize, SetOriginRotationInDegrees e DrawTextBox. Alfa está em uma escala de bytes 0–255, rotação é definida como uma propriedade de estado gráfico e posicionamento é tratado através de coordenadas explícitas.

O IronPDF usa uma abordagem baseada em HTML: o método ApplyWatermark() aceita uma string HTML com estilização CSS e aplica-a a todas as páginas em uma única chamada. Você controla a aparência através de propriedades CSS familiares (color, opacity, font-size) em vez de chamadas gráficas primitivas. Esta abordagem também suporta conteúdo mais rico — gradientes, imagens e layouts mais complexos — na mesma string. Consulte a documentação da marca d'água para exemplos avançados.


Notas críticas sobre migração

Superfície de Entrada HTML

O carregador HTML da GdPicture é baseado em arquivo/URL;IronPDF aceita strings HTML diretamente:

// Nutrient .NET SDK (string -> file -> PDF):
File.WriteAllText("input.html", html);
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");

//IronPDF(string -> PDF):
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
C#

Se você precisar de operações assíncronas, o IronPDF fornece variantes assíncronas como RenderHtmlAsPdfAsync().

Dependência de Navegador Externo

O renderizador HTML do GdPicture depende de uma instalação do Chrome ou Edge no sistema (ou um caminho portátil que você define via SetWebBrowserPath). O IronPDF vem com seu próprio Chromium incorporado:

// Nutrient .NET SDK: optionally point to a portable Chrome
converter.SetWebBrowserPath(@"C:\Tools\chrome\chrome.exe");

// IronPDF: nothing to configure
var pdf = renderer.RenderHtmlAsPdf(html);

Alteração do padrão de configuração

A GdPicture expõe configurações de layout como valores por propriedade no conversor (largura/altura da página HTML em polegadas, margens individuais). O IronPDF os agrupa em um saco RenderingOptions com tamanhos de papel nomeados:

// Nutrient .NET SDK: properties on the converter (inches)
using var converter = new GdPictureDocumentConverter();
converter.HtmlPageWidth  = 8.27f;   // A4 width  (inches)
converter.HtmlPageHeight = 11.69f;  // A4 height (inches)
converter.HtmlMarginTop = 0.78f;
converter.HtmlMarginBottom = 0.78f;
converter.HtmlMarginLeft = 0.78f;
converter.HtmlMarginRight = 0.78f;

// IronPDF: properties on RenderingOptions (millimetres)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlAsPdf(html);

De Marcadores de Água Procedurais para Marcadores de Água HTML

Substitua chamadas de desenho primitivas com uma única string HTML/CSS:

// Nutrient .NET SDK: SetFillAlpha + SetTextSize + DrawTextBox in a per-page loop
pdf.SetFillAlpha(128);
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
    PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
    PdfVerticalAlignment.PdfVerticalAlignmentMiddle);

// IronPDF: one HTML/CSS string
pdf.ApplyWatermark("<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>",
    45, VerticalAlignment.Middle, HorizontalAlignment.Center);

Tratamento de números de página

O GdPicture não possui um modelo de cabeçalho/rodapé de primeira classe — os números de página são desenhados por página em um loop. O IronPDF expõe espaços reservados integrados {page} / {total-pages}:

// Nutrient .NET SDK: per-page DrawText loop (1-based)
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
    pdf.SelectPage(i);
    pdf.DrawText(font, x, y, $"Page {i} of {pdf.GetPageCount()}");
}

// IronPDF: built-in placeholders
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "Page {page} of {total-pages}"
};

Indexação de páginas

O GdPicture é baseado em 1 (SelectPage(1) é a primeira página). O IronPDFpdf.Pages e pdf.RemovePages(int) são baseados em 0. Fora de um por ser o bug de portabilidade mais comum:

// Nutrient .NET SDK (1-based):
pdf.SelectPage(1);
pdf.DeletePage();

//IronPDF(0-based):
pdf.RemovePages(0);
C#

Solução de problemas

Problema 1: GdPictureDocumentConverter Não Encontrado

Problem: GdPictureDocumentConverter class doesn't exist in IronPDF.

Solution: Use ChromePdfRenderer for HTML/URL → PDF:

// Nutrient .NET SDK
using var converter = new GdPictureDocumentConverter();

// IronPDF
var renderer = new ChromePdfRenderer();

Problema 2: GdPicturePDF Não Encontrado

Problem: GdPicturePDF class doesn't exist in IronPDF.

Solution: Use PdfDocument:

// Nutrient .NET SDK
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("input.pdf");

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");

Problema 3: DrawTextBox / SetFillAlpha Não Encontrado

Problema: as chamadas de desenho primitivas não existem em IronPDF.

Solução: Utilize marcas d'água baseadas em HTML:

// Nutrient .NET SDK
pdf.SetFillAlpha(128);
pdf.DrawTextBox(font, 100, 300, 500, 400, "DRAFT",
    PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
    PdfVerticalAlignment.PdfVerticalAlignmentMiddle);

// IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>",
    45, VerticalAlignment.Middle, HorizontalAlignment.Center);

Problema 4: CombineToPDF Não Encontrado

Problema: método de combinação baseado em caminho não existe.

Solução: Carregue cada PDF como um PdfDocument e use o estático PdfDocument.Merge():

// Nutrient .NET SDK
converter.CombineToPDF(paths, "merged.pdf", PdfConformance.PDF);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");

Problema 5: Índice de Página Fora de Um

Problema: GdPicture usa índices de página baseados em 1;IronPDF usa baseados em 0. Conversões diretas de SelectPage(1) para pdf.Pages[1] pulam a primeira página.

Solução: Subtrair um ao portar índices de página:

// Nutrient .NET SDK (first page)
pdf.SelectPage(1);

//IronPDF(first page)
var firstPage = pdf.Pages[0];
C#

Lista de verificação para migração

Pré-migração

  • Faça o inventário de todos os usos de GdPicture / PSPDFKit / Nutrient na base de código
  • Note a indexação em 1 vs 0 no código GdPicture existente
  • Defina o conjunto de configuração em GdPictureDocumentConverter (dimensões da página HTML, margens)
  • Identifique o desenho procedural para marcas d'água e cabeçalhos (SetFillAlpha, DrawTextBox)
  • Revise o código de campos de formulário que utiliza acesso baseado em índice (GetFormFieldName(i))
  • Obtenha a chave de licença do IronPDF

Alterações no pacote

  • Remova o pacote NuGet GdPicture (e GdPicture.WPF / GdPicture.WinForms, se presente)
  • Remova o pacote legado PSPDFKit.NET, se presente
  • Instale o pacote NuGet IronPdf: dotnet add package IronPdf
  • Atualize importações de namespace (using GdPicture14;using IronPdf;)

Alterações no código

  • Adicionar configuração de chave de licença na inicialização
  • Substitua new GdPictureDocumentConverter() por new ChromePdfRenderer() para HTML/URL → PDF
  • Substitua new GdPicturePDF() + LoadFromFile por PdfDocument.FromFile()
  • Substitua converter.CombineToPDF(paths, ...) por PdfDocument.Merge()
  • Converta chamadas de desenho de marca d'água procedurais para pdf.ApplyWatermark(html, ...)
  • Substitua propriedades do conversor por RenderingOptions (tamanhos de papel nomeados, margens em mm)
  • Atualize cabeçalhos/rodapés para HtmlHeaderFooter com os tokens {page} / {total-pages}
  • Converta índices de página baseados em 1 para baseados em 0 em todo o documento

Pós-migração

  • Remova a dependência de Chrome / Edge do sistema das imagens de implantação se estava lá apenas para GdPicture
  • Execute testes de regressão comparando a saída em PDF.
  • Verificar se os cabeçalhos/rodapés correspondem aos números de página.
  • Teste de renderização de marca d'água
  • Atualizar o pipeline de CI/CD

  • {(i: (Nutrient, PSPDFKit, GdPicture e ORPALIS são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado por Nutrient, PSPDFKit, GdPicture ou ORPALIS. 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 bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.