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

Como migrar do Ghostscript GPL para o IronPDF em C#

Migrar doGhostscriptpara o IronPDF move seu fluxo de trabalho de PDF .NET do processo de comando da linha de comando e manipulação de chave baseada em string para uma API nativa .NET digitada, habilitada para IntelliSense. Este guia percorre um caminho de migração passo-a-passo que remove a exposição de licenciamento AGPL-3.0 e a dependência de binários nativos externos.

Uma nota sobre terminologia:Ghostscript(da Artifex Software) é duplamente licenciado sob AGPL-3.0 ou uma licença comercial, não GPL puro. A tag "GPL" é uma abreviatura de longa data da comunidade para a build de código aberto; tudo neste guia refere-se à compilação AGPL-3.0 doGhostscripte ao wrapper Ghostscript.NET (que também é AGPL-3.0 / comercial-dual). A partir do .NET, oGhostscripté normalmente consumido através desse wrapper, que realiza P/Invoke do nativo gsdll32.dll / gsdll64.dll, ou através da execução de comandos para gswin32c / gswin64c via Process.Start.

Por que Migrar doGhostscriptpara o IronPDF

Os Desafios do Ghostscript

Ghostscript é um intérprete de PostScript/PDF de longa data da Artifex Software com décadas de história. Seu uso em aplicações modernas de .NET apresenta vários desafios práticos:

  1. Restrições de Licença AGPL-3.0: Tanto oGhostscriptquanto o wrapper Ghostscript.NET são licenciados duplamente sob AGPL-3.0 ou uma licença comercial da Artifex. A cláusula copyleft de rede do AGPL normalmente exige que você libere o código correspondente do trabalho maior — incluindo para uso SaaS / de rede — a menos que você adquira uma licença comercial. Isso geralmente descarta a build AGPL para aplicativos .NET de código fechado ou hospedados.

  2. Interface de Linha de Comando: OGhostscripté fundamentalmente uma ferramenta de linha de comando. Usá-lo a partir de C# significa criar processos, passar argumentos de string e analisar a saída — ou via Process.Start contra gswin*c.exe ou via o wrapper P/Invoke Ghostscript.NET.

  3. Dependência de Binário Externo: Você deve instalar oGhostscriptseparadamente, gerenciar as variáveis PATH e manter as versões alinhadas em todos os ambientes. Diferentes DLLs nativas são necessárias para 32 bits versus 64 bits (gsdll32.dll vs gsdll64.dll).

  4. Sem HTML-para-PDF Nativo: OGhostscriptnão pode converter HTML para PDF diretamente. Primeiro, você precisa converter o HTML para PostScript com outra ferramenta e depois executar oGhostscriptpara converter o PostScript em PDF — um pipeline de múltiplas etapas com dependências externas.

  5. Sintaxe Complexa de Comutadores: As operações são controladas via comutadores de linha de comando como -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=.... Sem IntelliSense, sem verificações de tempo de compilação.

  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 Processo: Cada operação cria um processo separado, adicionando sobrecarga e complexidade para timeouts e limpeza de recursos.

Comparação entreGhostscripte IronPDF

Aspecto Ghostscript IronPDF
Licença AGPL-3.0 (copyleft de rede) ou comercial da Artifex 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 Ghostscript.NET v1.3.x targets .NET Standard 2.0 .NET Framework 4.6.2+ and .NET 6/7/8/9
Suporte assíncrono Baseado em processos assíncrono/await nativo

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 doGhostscripté de execução de processo de linha de comando para chamadas de API .NET digitadas:

Ghostscript: "Passe esses switches de string para um processo externo"
IronPDF: "Chame esses métodos em objetos .NET"

Antes de começar

Pré-requisitos

  1. .NET Version:IronPDF supports .NET Framework 4.6.2+ and .NET Core / .NET 5+ (including .NET 6/7/8/9). Ghostscript.NET v1.3.x targets .NET Standard 2.0.
  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

# 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 do Ghostscript

Após a migração:

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

Migração de Início Rápido

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

Before (Ghostscript):

OGhostscriptsob AGPL-3.0 requer a divulgação de código fonte sob os termos do AGPL ou uma licença comercial da Artifex.

Após (IronPDF):

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

Etapa 2: Atualizar importações de namespace

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

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

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

' After (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.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

Switch do Ghostscript 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 RasterizeToImageFiles("*.png", DPI: N) Saída PNG
-sOutputFile=X SaveAs("X") Nome do arquivo de saída
-r300 Parâmetro DPI: 300 Resolução
-dPDFSETTINGS=/ebook CompressImages(quality: 60) Qualidade média
-dFirstPage=N -dLastPage=M CopyPages(new[] {N-1, ..., M-1}) Extração de página (indexada a partir de 0)
-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

Before (Ghostscript):

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

class GhostscriptExample
{
    static void Main()
    {
        //Ghostscriptcannot directly convert HTML to PDF
        // You need to first convert HTML to PS/EPS using another tool
        // then useGhostscriptto 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 -Ghostscriptprimarily 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()
    {
        //Ghostscriptcannot directly convert HTML to PDF
        // You need to first convert HTML to PS/EPS using another tool
        // then useGhostscriptto 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 -Ghostscriptprimarily 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()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        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()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        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()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        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

OGhostscriptnão pode converter HTML para PDF diretamente - ele espera a entrada de PostScript ou PDF, então um fluxo de trabalho HTML requer uma conversão intermediária (normalmente via wkhtmltopdf ou similar). O ChromePdfRenderer do IronPDF fornece renderização direta de HTML para PDF com suporte a CSS, JavaScript e padrões web modernos via um mecanismo Chromium embutido. Veja a documentação de HTML para PDF para mais opções de renderização.

Exemplo 2: PDF para imagens

Before (Ghostscript):

// 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()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

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

        // One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI: 300);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

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

        // One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI: 300);
    }
}
Imports IronPdf
Imports System

Class IronPdfExample
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdf = PdfDocument.FromFile("input.pdf")

        ' One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI:=300)
    End Sub
End Class
$vbLabelText   $csharpLabel

A abordagem doGhostscriptrequer localizar o gsdll64.dll externo, criar um objeto GhostscriptVersionInfo e iterar páginas com números de página indexados a partir de 1. O RasterizeToImageFiles do IronPDF escreve todas as páginas em uma única chamada com um padrão de saída glob e um parâmetro DPI: explícito, sem dependência nativa externa. Observe que, quando você trabalha com índices de páginas, oGhostscriptutiliza 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

Before (Ghostscript):

// 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()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        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()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        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()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfs = 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 doGhostscriptrequer a invocação completa de comutadores (-dNOPAUSE, -dBATCH, -sDEVICE=pdfwrite) e concatenar caminhos de arquivo em um array de strings. O método estático Merge do IronPDF aceita um IEnumerable<PdfDocument> tipado e retorna um novo PdfDocument. Saiba mais sobre como mesclar e dividir PDFs .


Notas críticas sobre migração

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

Uma das diferenças mais importantes nesta migração é a indexação de páginas. Comutadores doGhostscriptcomo -dFirstPage=N / -dLastPage=M são indexados a partir de 1; O CopyPages do IronPDF é indexado a partir de 0 (padrão .NET):

// Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

// IronPDF: 0-indexed page array
var extracted = pdf.CopyPages(new[] {4, 5, 6, 7});
extracted.SaveAs("pages_5_to_8.pdf");
// Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

// IronPDF: 0-indexed page array
var extracted = pdf.CopyPages(new[] {4, 5, 6, 7});
extracted.SaveAs("pages_5_to_8.pdf");
' Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

' IronPDF: 0-indexed page array
Dim extracted = pdf.CopyPages({4, 5, 6, 7})
extracted.SaveAs("pages_5_to_8.pdf")
$vbLabelText   $csharpLabel

Preocupações com a Licença AGPL-3.0

Tanto oGhostscriptquanto o wrapper Ghostscript.NET são licenciados duplamente sob AGPL-3.0 ou uma licença comercial da Artifex. A cláusula copyleft de rede do AGPL tipicamente requer a liberação do código correspondente do trabalho maior — incluindo para implantações acessíveis pela rede/SaaS — a menos que você possua uma licença comercial da Artifex. Migrar cargas de trabalho de PDF para o IronPDF remove essa obrigação para as partes que são movidas; se você mantiver oGhostscriptapenas para ingestão de PostScript, uma licença comercial da Artifex cobre essa peça. (This is a general summary, not legal advice — consult counsel for your specific deployment.)

Sem binários externos

O IronPDF é distribuído como um pacote NuGet. Remova estes itens após a migração:

  • Arquivos gsdll32.dll e gsdll64.dll
  • Instalação doGhostscriptdos servidores
  • Configurações da variável de ambiente PATH
  • Referências GhostscriptVersionInfo 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

Executar comandos para gswin64c.exe (ou realizar P/Invoke de gsdll64.dll) acarreta sobrecarga de processo e interoperabilidade nativa por operação. O IronPDF executa em processo como código .NET gerenciado:

// Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray());

// IronPDF: in-process method call
var merged = PdfDocument.Merge(pdfs);
// Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray());

// IronPDF: in-process method call
var merged = PdfDocument.Merge(pdfs);
' Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray())

' IronPDF: in-process method call
Dim merged = PdfDocument.Merge(pdfs)
$vbLabelText   $csharpLabel

Segurança da rosca

O IronPDF suporta o uso simultâneo de ChromePdfRenderer e PdfDocument a partir de múltiplas threads. Veja a documentação do IronPDF para orientação sobre padrões de renderização paralela.


Lista de verificação para migração

Pré-migração

  • Inventário de todo o uso doGhostscriptno código
  • Documentar os parâmetros de linha de comando atualmente utilizados.
  • Identificar qualquer processamento PostScript (que necessite de tratamento especial)
  • Revisar o estado de conformidade com a licença AGPL-3.0
  • Obtenha a chave de licença do IronPDF
  • Criar branch de migração no controle de versão

Migração de código

  • Remova o pacote NuGet Ghostscript.NET: dotnet remove package Ghostscript.NET
  • Instale o pacote NuGet do IronPDF: dotnet add package IronPdf
  • Remover dependências de binário externo do Ghostscript
  • Remova GhostscriptVersionInfo e referências DLL
  • Converta GhostscriptProcessor.Process() para métodos do IronPDF
  • Converta GhostscriptRasterizer para pdf.RasterizeToImageFiles()
  • 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

  • RemoverGhostscriptdos servidores
  • Remover configuração do PATH
  • Remova arquivos gsdll*.dll das implantações
  • Verificar se o aplicativo funciona sem oGhostscriptinstalado

Pós-migração

  • Cancelar licença comercial da Artifex (se anteriormente mantida e não mais necessária)
  • Atualizar documentação
  • Treinar a equipe na API do IronPDF
  • Monitorar a produção para identificar quaisquer problemas.

ObserveGhostscript é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado por Artifex Software. 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