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

Como migrar do Ghostscript GPL para o IronPDF em C#

A migração do Ghostscript GPL para o IronPDF transforma seu fluxo de trabalho de PDF em .NET , passando da criação de processos pela linha de comando e manipulação de parâmetros baseada em strings para uma API nativa do .NET com tipagem estática e habilitada para IntelliSense. Este guia fornece um caminho de migração abrangente, passo a passo, que elimina as preocupações com a licença AGPL e as dependências binárias externas para desenvolvedores .NET profissionais.

Por que migrar do Ghostscript GPL para o IronPDF?

Os desafios do Ghostscript GPL

Ghostscript GPL é um interpretador PostScript/PDF consagrado com décadas de história, mas seu uso em aplicações .NET modernas apresenta desafios significativos:

  1. Restrições da Licença AGPL: A licença AGPL do Ghostscript GPL exige que você libere seu código-fonte se distribuir software que o utilize — a menos que compre uma licença comercial cara da Artifex. Esse modelo de licenciamento "viral" cria um risco legal significativo para aplicativos proprietários.

  2. Interface de linha de comando: O Ghostscript GPL é fundamentalmente uma ferramenta de linha de comando. Utilizá-lo em C# exige a criação de processos, a passagem de argumentos em formato de string e a análise da saída — uma abordagem frágil e propensa a erros.

  3. Dependência binária externa: Você deve instalar o Ghostscript GPL separadamente, gerenciar as variáveis ​​PATH e garantir a compatibilidade de versões em todos os ambientes de implantação. DLLs diferentes são necessárias para 32 bits em comparação com 64 bits (gsdll32.dll vs gsdll64.dll).

  4. Sem conversão nativa de HTML para PDF: o Ghostscript GPL não consegue converter HTML para PDF diretamente. Primeiro, você precisa converter o HTML para PostScript usando outra ferramenta e, em seguida, usar o Ghostscript GPL para converter o PostScript para PDF — um processo de várias etapas com dependências externas.

  5. Sintaxe de interruptor complexa: As operações são controladas por meio de interruptores de linha de comando enigmáticos, como -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=.... Sem IntelliSense, sem segurança de digitação e fácil de digitar errado.

  6. Tratamento de erros: Os erros chegam pelo stderr como cadeias de texto, exigindo análise sintática em vez de um tratamento estruturado de exceções.

  7. Sobrecarga de gerenciamento de processos: Cada operação gera um processo separado, adicionando sobrecarga e complexidade para tratamento de erros, tempos limite e limpeza de recursos.

Comparação entre Ghostscript GPL e IronPDF

Aspecto Ghostscript GPL IronPDF
Licença AGPL (viral) ou comercial caro Comercial com termos claros
Integração Geração de processos pela linha de comando Biblioteca nativa do .NET
Design de API Interruptores baseados em strings API tipada e com IntelliSense integrado
Tratamento de erros Analisar texto stderr Exceções do .NET
HTML para PDF Não suportado (necessita de ferramentas externas) Motor Chromium integrado
Dependências Instalação binária externa Pacote NuGet independente
Implantação Configure o PATH, copie as DLLs. Basta adicionar a referência do NuGet.
Segurança da rosca Somente isolamento de processo Projetado para ser seguro contra roscas.
.NET moderno Suporte limitado Suporte completo for .NET 6/7/8/9/10
Suporte assíncrono Baseado em processos assíncrono/await nativo

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 que se integra nativamente aos padrões modernos do .NET .


Avaliação da Complexidade da Migração

Esforço estimado por funcionalidade

Recurso Complexidade da Migração
PDF para imagens Baixo
Mesclar PDFs Baixo
Comprimir PDF Baixo
Otimização de PDF Baixo
Criptografia Médio
Extração de Páginas Baixo
PostScript para PDF Médio-Alto
Interruptores personalizados Médio-Alto

Mudança de paradigma

A mudança fundamental nesta migração do Ghostscript para a GPL é a transição da execução de processos em linha de comando para chamadas de API .NET tipadas:

Ghostscript GPL: "Passe essas opções de string para um processo externo"
IronPDF: "Chame esses métodos em objetos .NET "

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 Ghostscript sob a licença GPL

# Find all Ghostscript.NET references
grep -r "Ghostscript\.NET\|GhostscriptProcessor\|GhostscriptRasterizer\|gsdll" --include="*.cs" .

# Find direct process calls to Ghostscript
grep -r "gswin64c\|gswin32c\|gs\|ProcessStartInfo.*ghost" --include="*.cs" .

# Find package references
grep -r "Ghostscript" --include="*.csproj" .
# Find all Ghostscript.NET references
grep -r "Ghostscript\.NET\|GhostscriptProcessor\|GhostscriptRasterizer\|gsdll" --include="*.cs" .

# Find direct process calls to Ghostscript
grep -r "gswin64c\|gswin32c\|gs\|ProcessStartInfo.*ghost" --include="*.cs" .

# Find package references
grep -r "Ghostscript" --include="*.csproj" .
SHELL

Alterações no pacote NuGet

# Remove Ghostscript.NET
dotnet remove package Ghostscript.NET

# Install IronPDF
dotnet add package IronPdf
# Remove Ghostscript.NET
dotnet remove package Ghostscript.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

Remover dependências GPL do Ghostscript

Após a migração:

  • Desinstale o Ghostscript GPL dos servidores
  • Remover gsdll32.dll / gsdll64.dll das implantações
  • Remover a configuração PATH para o Ghostscript GPL
  • Remova quaisquer referências a GhostscriptVersionInfo

Migração de Início Rápido

Etapa 1: Atualizar a configuração da licença

Antes (Ghostscript GPL):

O Ghostscript GPL, sob a licença AGPL, exige a divulgação do código-fonte ou uma licença comercial cara da Artifex.

Após (IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
' Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
$vbLabelText   $csharpLabel

Etapa 2: Atualizar importações de namespace

// Before (Ghostscript GPL)
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using Ghostscript.NET.Rasterizer;

// After (IronPDF)
using IronPdf;
// Before (Ghostscript GPL)
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using Ghostscript.NET.Rasterizer;

// After (IronPDF)
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Referência completa da API

Mapeamento de Classes Principais

Ghostscript.NET IronPDF Descrição
GhostscriptProcessor Vários métodos PdfDocument Processamento de PDF
GhostscriptRasterizer PdfDocument.ToBitmap() / RasterizeToImageFiles() PDF para imagens
GhostscriptVersionInfo N/A (não necessário) localização da DLL
GhostscriptStdIO Não aplicável (use exceções) Manipulação de E/S
Processo + linha de comando ChromePdfRenderer HTML para PDF

Mapeamento de opções de linha de comando

Ghostscript GPL Switch Equivalente ao IronPDF Descrição
-dNOPAUSE N/A (não necessário) Não faça pausas entre as páginas.
-dBATCH N/A (não necessário) Sair após o processamento
-dSAFER Não aplicável (padrão) Acesso seguro a arquivos
-sDEVICE=pdfwrite Vários métodos de PDF PDF de saída
-sDEVICE=png16m ToBitmap() ou RasterizeToImageFiles() Saída PNG
-sOutputFile=X SaveAs("X") Nome do arquivo de saída
-r300 Parâmetro DPI em métodos Resolução
-dPDFSETTINGS=/ebook CompressImages(quality: 75) Qualidade média
-sOwnerPassword=X SecuritySettings.OwnerPassword Senha do proprietário
-sUserPassword=X SecuritySettings.UserPassword Senha do usuário

Exemplos de migração de código

Exemplo 1: Conversão de HTML para PDF

Antes (Ghostscript GPL):

// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.IO;
using System.Text;

class GhostscriptExample
{
    static void Main()
    {
        // Ghostscript cannot directly convert HTML to PDF
        // You need to first convert HTML to PS/EPS using another tool
        // then use Ghostscript to convert PS to PDF

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        string psFile = "temp.ps";
        string outputPdf = "output.pdf";

        // This is a workaround - Ghostscript primarily works with PostScript
        GhostscriptProcessor processor = new GhostscriptProcessor();

        List<string> switches = new List<string>
        {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}",
            psFile
        };

        processor.Process(switches.ToArray());
    }
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.IO;
using System.Text;

class GhostscriptExample
{
    static void Main()
    {
        // Ghostscript cannot directly convert HTML to PDF
        // You need to first convert HTML to PS/EPS using another tool
        // then use Ghostscript to convert PS to PDF

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        string psFile = "temp.ps";
        string outputPdf = "output.pdf";

        // This is a workaround - Ghostscript primarily works with PostScript
        GhostscriptProcessor processor = new GhostscriptProcessor();

        List<string> switches = new List<string>
        {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}",
            psFile
        };

        processor.Process(switches.ToArray());
    }
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Processor
Imports System.IO
Imports System.Text

Class GhostscriptExample
    Shared Sub Main()
        ' Ghostscript cannot directly convert HTML to PDF
        ' You need to first convert HTML to PS/EPS using another tool
        ' then use Ghostscript to convert PS to PDF

        Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
        Dim psFile As String = "temp.ps"
        Dim outputPdf As String = "output.pdf"

        ' This is a workaround - Ghostscript primarily works with PostScript
        Dim processor As New GhostscriptProcessor()

        Dim switches As New List(Of String) From {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}",
            psFile
        }

        processor.Process(switches.ToArray())
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class IronPdfExample
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()

        Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

A diferença é gritante: o Ghostscript GPL não consegue converter HTML para PDF diretamente — ele requer uma conversão intermediária em PostScript usando ferramentas externas. O ChromePdfRenderer do IronPDF oferece conversão direta de HTML para PDF com suporte completo a CSS3, JavaScript e padrões web modernos. Consulte a documentação de conversão de HTML para PDF para obter mais opções de renderização.

Exemplo 2: PDF para imagens

Antes (Ghostscript GPL):

// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Rasterizer;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

class GhostscriptExample
{
    static void Main()
    {
        string inputPdf = "input.pdf";
        string outputPath = "output";

        GhostscriptVersionInfo gvi = new GhostscriptVersionInfo("gsdll64.dll");

        using (GhostscriptRasterizer rasterizer = new GhostscriptRasterizer())
        {
            rasterizer.Open(inputPdf, gvi, false);

            for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
            {
                Image img = rasterizer.GetPage(300, pageNumber);
                img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png);
                img.Dispose();
            }
        }
    }
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Rasterizer;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

class GhostscriptExample
{
    static void Main()
    {
        string inputPdf = "input.pdf";
        string outputPath = "output";

        GhostscriptVersionInfo gvi = new GhostscriptVersionInfo("gsdll64.dll");

        using (GhostscriptRasterizer rasterizer = new GhostscriptRasterizer())
        {
            rasterizer.Open(inputPdf, gvi, false);

            for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
            {
                Image img = rasterizer.GetPage(300, pageNumber);
                img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png);
                img.Dispose();
            }
        }
    }
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Rasterizer
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO

Class GhostscriptExample
    Shared Sub Main()
        Dim inputPdf As String = "input.pdf"
        Dim outputPath As String = "output"

        Dim gvi As New GhostscriptVersionInfo("gsdll64.dll")

        Using rasterizer As New GhostscriptRasterizer()
            rasterizer.Open(inputPdf, gvi, False)

            For pageNumber As Integer = 1 To rasterizer.PageCount
                Dim img As Image = rasterizer.GetPage(300, pageNumber)
                img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png)
                img.Dispose()
            Next
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        var images = pdf.ToBitmap();

        for (int i = 0; i < images.Length; i++)
        {
            images[i].Save($"output_page{i + 1}.png");
        }
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        var images = pdf.ToBitmap();

        for (int i = 0; i < images.Length; i++)
        {
            images[i].Save($"output_page{i + 1}.png");
        }
    }
}
Imports IronPdf
Imports System

Class IronPdfExample
    Shared Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")

        Dim images = pdf.ToBitmap()

        For i As Integer = 0 To images.Length - 1
            images(i).Save($"output_page{i + 1}.png")
        Next
    End Sub
End Class
$vbLabelText   $csharpLabel

A abordagem do Ghostscript GPL exige localizar o objeto externo gsdll64.dll, criar um objeto GhostscriptVersionInfo e usar números de página indexados a partir de 1. O método ToBitmap() do IronPDF oferece uma abordagem limpa, em uma única linha, sem dependências externas. Observe a diferença na indexação das páginas: o Ghostscript GPL 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 ).

Exemplo 3: Mesclar arquivos PDF

Antes (Ghostscript GPL):

// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.Collections.Generic;

class GhostscriptExample
{
    static void Main()
    {
        string outputPdf = "merged.pdf";
        string[] inputFiles = { "file1.pdf", "file2.pdf", "file3.pdf" };

        GhostscriptProcessor processor = new GhostscriptProcessor();

        List<string> switches = new List<string>
        {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}"
        };

        switches.AddRange(inputFiles);

        processor.Process(switches.ToArray());
    }
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.Collections.Generic;

class GhostscriptExample
{
    static void Main()
    {
        string outputPdf = "merged.pdf";
        string[] inputFiles = { "file1.pdf", "file2.pdf", "file3.pdf" };

        GhostscriptProcessor processor = new GhostscriptProcessor();

        List<string> switches = new List<string>
        {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}"
        };

        switches.AddRange(inputFiles);

        processor.Process(switches.ToArray());
    }
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Processor
Imports System.Collections.Generic

Class GhostscriptExample
    Shared Sub Main()
        Dim outputPdf As String = "merged.pdf"
        Dim inputFiles As String() = {"file1.pdf", "file2.pdf", "file3.pdf"}

        Dim processor As New GhostscriptProcessor()

        Dim switches As New List(Of String) From {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}"
        }

        switches.AddRange(inputFiles)

        processor.Process(switches.ToArray())
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class IronPdfExample
{
    static void Main()
    {
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("file1.pdf"),
            PdfDocument.FromFile("file2.pdf"),
            PdfDocument.FromFile("file3.pdf")
        };

        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class IronPdfExample
{
    static void Main()
    {
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("file1.pdf"),
            PdfDocument.FromFile("file2.pdf"),
            PdfDocument.FromFile("file3.pdf")
        };

        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic

Class IronPdfExample
    Shared Sub Main()
        Dim pdfs As New List(Of PdfDocument) From {
            PdfDocument.FromFile("file1.pdf"),
            PdfDocument.FromFile("file2.pdf"),
            PdfDocument.FromFile("file3.pdf")
        }

        Dim merged = PdfDocument.Merge(pdfs)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

A abordagem do Ghostscript GPL exige memorizar a sintaxe de seleção (-dNOPAUSE, -dBATCH, -sDEVICE=pdfwrite) e concatenar caminhos de arquivos em uma matriz de strings. O método estático Merge do IronPDF fornece mesclagem segura em relação a tipos e habilitada para IntelliSense com objetos PdfDocument adequados. Saiba mais sobre como mesclar e dividir PDFs .


Notas críticas sobre migração

Conversão de indexação de páginas

Uma das mudanças mais importantes nesta migração do Ghostscript para a licença GPL é a diferença na indexação de páginas:

// Ghostscript GPL: 1-indexed pages
for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
{
    Image img = rasterizer.GetPage(300, pageNumber);
}

// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < images.Length; i++)
{
    images[i].Save($"output_page{i + 1}.png");
}
// Ghostscript GPL: 1-indexed pages
for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
{
    Image img = rasterizer.GetPage(300, pageNumber);
}

// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < images.Length; i++)
{
    images[i].Save($"output_page{i + 1}.png");
}
Option Strict On



' Ghostscript GPL: 1-indexed pages
For pageNumber As Integer = 1 To rasterizer.PageCount
    Dim img As Image = rasterizer.GetPage(300, pageNumber)
Next

' IronPDF: 0-indexed pages (standard .NET)
For i As Integer = 0 To images.Length - 1
    images(i).Save($"output_page{i + 1}.png")
Next
$vbLabelText   $csharpLabel

Preocupações com a licença AGPL eliminadas

A licença AGPL do Ghostscript GPL possui propriedades "virais" que exigem a divulgação do código-fonte ao distribuir aplicativos. A licença comercial do IronPDF possui termos claros e não exige tais medidas.

Sem binários externos

IronPDF é totalmente independente. Remova estes itens após a migração:

  • Arquivos gsdll32.dll e gsdll64.dll
  • Instalação do Ghostscript GPL a partir de servidores
  • Configurações da variável de ambiente PATH
  • GhostscriptVersionInfo referências no código

Arquivos PostScript

O IronPDF não lida diretamente com arquivos PostScript (.ps). Se o seu fluxo de trabalho exigir processamento PostScript, você pode:

  1. Converta PostScript para PDF usando outra ferramenta antes do processamento com o IronPDF.
  2. Converta o conteúdo original para HTML e use a renderização HTML do IronPDF.

Considerações sobre o desempenho

Nenhum processo sendo gerado

As operações do Ghostscript sob a licença GPL geram processos externos com a sobrecarga associada. O IronPDF opera dentro do seu processo .NET :

// Ghostscript GPL: Process spawning overhead
processor.Process(switches.ToArray());  // Creates new OS process

// IronPDF: In-process execution
var merged = PdfDocument.Merge(pdfs);  // Native .NET method call
// Ghostscript GPL: Process spawning overhead
processor.Process(switches.ToArray());  // Creates new OS process

// IronPDF: In-process execution
var merged = PdfDocument.Merge(pdfs);  // Native .NET method call
$vbLabelText   $csharpLabel

Segurança da rosca

IronPDF foi projetado para ser seguro em relação a threads. Várias threads podem usar ChromePdfRenderer e PdfDocument simultaneamente sem problemas de sincronização.


Lista de verificação para migração

Pré-migração

  • Inventariar todo o uso do Ghostscript sob a licença GPL na base de código.
  • Documentar os parâmetros de linha de comando atualmente utilizados.
  • Identificar qualquer processamento PostScript (que necessite de tratamento especial)
  • Analisar o status de conformidade da licença AGPL
  • Obtenha a chave de licença do IronPDF
  • Criar branch de migração no controle de versão

Migração de código

  • Remover o pacote NuGet Ghostscript .NET : dotnet remove package Ghostscript.NET
  • Instale o pacote NuGet IronPDF : dotnet add package IronPdf
  • Remover dependências binárias externas do Ghostscript GPL
  • Remover GhostscriptVersionInfo e referências a DLLs
  • Converter GhostscriptProcessor.Process() para métodos IronPDF
  • Converter GhostscriptRasterizer para pdf.ToBitmap()
  • Substituir parâmetros de linha de comando por chamadas de API
  • Atualizar o tratamento de erros da análise de stderr para exceções.
  • Converter números de página com índice 1 para índice 0

Testando

  • Teste de conversão de PDF para imagem
  • Teste de fusão de PDFs
  • Extração de página de teste
  • Testar a qualidade da compressão
  • Testar proteção por senha
  • Verificar se a qualidade da saída corresponde às expectativas.
  • Caminhos críticos de benchmark de desempenho

Implantação

  • Remover o Ghostscript GPL dos servidores
  • Remover configuração do PATH
  • Remover arquivos gsdll*.dll das implantações
  • Verifique se o aplicativo funciona sem o Ghostscript GPL instalado.

Pós-migração

  • Remover a licença GPL do Ghostscript (se for comercial)
  • Atualizar documentação
  • Treinar a equipe na API do IronPDF
  • Monitorar a produção para identificar quaisquer problemas.

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