フッターコンテンツにスキップ
ビデオ

How to Convert RTF to PDF Using C#

GhostscriptからIronPDFへの移行により、.NET PDFワークフローをコマンドラインプロセスの生成と文字列ベースのスイッチ操作から、型付きのIntelliSense対応のネイティブ.NET APIに移行します。 このガイドは、AGPL-3.0のライセンス露出と外部のネイティブバイナリ依存を取り除くステップバイステップの移行パスを解説します。

用語についての注意:Ghostscript(Artifex Softwareによる)はAGPL-3.0または商業ライセンスのデュアルライセンスであり、単純なGPLではありません。 "GPL"タグは、長年にわたるオープンソースビルドのためのコミュニティの略語です; このガイドのすべては、GhostscriptのAGPL-3.0ビルドと、Ghostscript.NETラッパー(こちらもAGPL-3.0 / 商用デュアルライセンス)を指しています。 .NETからは、通常そのラッパーを介して消費され、これがネイティブのgsdll32.dll / gswin32c / Process.Start経由でシェルアウトします。

なぜGhostscriptからIronPDFへ移行するのか

Ghostscriptの課題

Ghostscriptは、数十年の歴史を持つArtifex Software製の古くからあるPostScript/PDFインタープリターです。 現代 for .NETアプリケーションへの使用にはいくつかの実際的な課題があります:

  1. AGPL-3.0ライセンス制限: Ghostscript自体とGhostscript.NETラッパーの両方がArtifexからの商用ライセンスまたはAGPL-3.0のデュアルライセンスです。 AGPLのネットワークコピーレフト条項は通常、対応するソースのリリースを要求します(特にSaaS/ネットアクセス可能な展開において)—商業ライセンスを購入しない限り。 これは通常、クローズドソースまたはホスト型.NETアプリケーションに対してAGPLビルドを排除するルールです。

  2. コマンドラインインターフェース: Ghostscriptは基本的にコマンドラインツールです。 C#から使用することの意味は、プロセスを生成し、文字列引数を渡し、出力を解析することを意味します。それはGhostscript.NETのP/Invokeラッパーを介して行われます。

  3. 外部バイナリ依存: Ghostscriptを個別にインストールし、PATH変数を管理し、環境全体でバージョンを整合させなければなりません。 32ビットと64ビット用に異なるネイティブDLLが必要です(gsdll64.dll)。

  4. ネイティブのHTML-to-PDFがない: GhostscriptはHTMLからPDFへの直接変換ができません。 まず他のツールを使用してHTMLをPostScriptに変換し、次にGhostscriptを実行してPostScriptをPDFに変換します—外部依存を伴う多段パイプラインです。

  5. 複雑なスイッチ構文: 操作は、-dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=...のようなコマンドラインスイッチによって制御されます。 IntelliSenseもコンパイル時のチェックもありません。

6.エラー処理:エラーはテキスト文字列として stderr から渡されるため、構造化例外処理ではなく解析が必要です。

  1. プロセスマネジメントのオーバーヘッド: 各操作が別のプロセスを生成し、タイムアウトとリソースクリーンアップのために負担と複雑さを加えます。

GhostscriptとIronPDFの比較

アスペクト Ghostscript IronPDF
ライセンス AGPL-3.0(ネットワークコピーレフト)またはArtifexの商業ライセンス 明確な用語によるコマーシャル
インテグレーション コマンドラインプロセスの起動 .NETネイティブライブラリ
APIデザイン 文字列ベースのスイッチ 型付き、インテリセンス対応API
エラー処理 標準エラーテキストの解析 .NET の例外
HTMLからPDFへ 非対応(外部ツールが必要) 内蔵Chromiumエンジン
依存関係 外部バイナリのインストール 自己完結型NuGetパッケージ
デプロイメント PATHの設定、DLLのコピー NuGetリファレンスを追加するだけです。
スレッドの安全性 プロセス分離のみ スレッドセーフ設計
最新 for .NET Ghostscript.NET v1.3.xは.NET Standard 2.0をターゲットにしています。 .NET Framework 4.6.2+および.NET 6/7/8/9
非同期サポート プロセスベース ネイティブasync/await

マイグレーションの複雑さの評価

機能別の見積もり作業

フィーチャー 移行の複雑さ
PDFから画像へ 低レベル
PDFのマージ 低レベル
PDF圧縮 低レベル
PDF最適化 低レベル
暗号化 中規模
ページ抽出 低レベル
ポストスクリプトからPDFへ 中・高
カスタムスイッチ 中・高

パラダイムシフト

このGhostscriptからの移行における基本的な変化は、コマンドラインプロセス実行から型付き.NET API呼び出しへの移行です:

Ghostscript: "これらの文字列スイッチを外部プロセスに渡します"
IronPDF: "これらのメソッドを.NETオブジェクトで呼び出します"

始める前に

前提条件

  1. .NETバージョン: IronPDFは.NET Framework 4.6.2+および.NET Core / .NET 5+(.NET 6/7/8/9を含む)をサポートしています。 Ghostscript.NET v1.3.xは.NET Standard 2.0をターゲットにしています。 2.ライセンスキー: IronPDFからIronPDFライセンスキーを取得します。 3.バックアップ:移行作業用のブランチを作成する

すべての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

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

Ghostscriptの依存関係を削除する

移行後

  • サーバーからGhostscriptをアンインストールします
  • デプロイメントからgsdll32.dll / gsdll64.dllを削除します。
  • GhostscriptのPATH設定を削除します
  • すべてのGhostscriptVersionInfo参照を削除します。

クイック スタート マイグレーション

ステップ 1: ライセンス構成の更新

前(Ghostscript):

GhostscriptのAGPL-3.0に基づく使用は、AGPL条項に基づいてソース開示を求めるか、Artifexからの商業ライセンスを必要とします。

翻訳後(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

ステップ 2: 名前空間インポートを更新する

// 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

完全な API リファレンス

コア クラス マッピング

Ghostscript.NET IronPDF 翻訳内容
GhostscriptProcessor 各種PdfDocumentメソッド PDF処理
GhostscriptRasterizer PdfDocument.RasterizeToImageFiles() PDFから画像へ
GhostscriptVersionInfo 該当なし(不要) DLLの場所
GhostscriptStdIO 該当なし(例外あり) I/O処理
プロセス+コマンドライン ChromePdfRenderer HTML to PDF.

コマンドライン スイッチ マッピング

Ghostscriptスイッチ IronPDF 同等物 翻訳内容
-dNOPAUSE 該当なし(不要) ページ間で一時停止しない
-dBATCH 該当なし(不要) 処理終了後
-dSAFER 該当なし(デフォルト) 安全なファイルアクセス
-sDEVICE=pdfwrite さまざまなPDFメソッド 出力PDF
-sDEVICE=png16m RasterizeToImageFiles("*.png", DPI: N) PNG出力
-sOutputFile=X SaveAs("X") 出力ファイル名
-r300 DPI: 300パラメーター 解像度
-dPDFSETTINGS=/ebook CompressImages(quality: 60) 中程度の品質
-dFirstPage=N -dLastPage=M CopyPages(new[] {N-1, ..., M-1}) ページ抽出(0インデックス)
-sOwnerPassword=X SecuritySettings.OwnerPassword オーナーパスワード
-sUserPassword=X SecuritySettings.UserPassword ユーザーパスワード

コード移行の例

例1: HTMLからPDFへの変換

前(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

翻訳後(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

GhostscriptはHTMLをPDFに直接変換することができません—PostScriptまたはPDF入力を想定しているため、HTMLワークフローには中間的な変換が必要です(通常はwkhtmltopdfなどで)。 IronPDFのChromePdfRendererは、埋め込まれたChromiumエンジンを介して、CSSやJavaScript、モダンウェブ標準サポートによる直接HTMLからPDFへのレンダリングを提供します。HTMLからPDFのドキュメントで、より多くのレンダリングオプションを参照してください。

例2:PDFから画像へ

前(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

翻訳後(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

Ghostscriptのアプローチは、外部GhostscriptVersionInfoオブジェクトを作成し、1から始まるページ番号でページを反復することを必要とします。 IronPDFのDPI:パラメーターを使用して、単一の呼び出しですべてのページを書き込みます。 ページインデックスを扱うときに注意すべき点として、Ghostscriptは1インデックスのページを使用しますが、IronPDFは標準 for .NET規則である0インデックスのページを使用します。

例3: PDFファイルをマージする

前(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

翻訳後(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

Ghostscriptのアプローチは、フルスイッチ呪文(-sDEVICE=pdfwrite)を必要とし、ファイルパスを文字列配列に結合することを必要とします。 IronPDFの静的PdfDocumentを返します。 PDFのマージと分割については、こちらをご覧ください。


重要な移行に関する注意事項

ページインデックス変換

この移行における最も重要な違いの一つはページインデックスです。 Ghostscriptのスイッチ-dFirstPage=N / -dLastPage=Mは1から始まります; IronPDFのCopyPagesは0から始まります(標準 for .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

AGPL-3.0ライセンスの懸念

GhostscriptとGhostscript.NETラッパーは、Artifexからの商用ライセンスまたはAGPL-3.0のデュアルライセンスです。 AGPL-3.0のネットワークコピーレフト条項は、SaaSやネットワークアクセス可能なデプロイメントを含め、対応するソースの公開を通常は求めます一部。 IronPDFへのPDFワークロードの移行は、その移行先の部分についてその義務を排除します。 GhostscriptをPostScriptの取り込みにのみ使用する場合は、Artifexの商業ライセンスがその部分をカバーします。 (This is a general summary, not legal advice — consult counsel for your specific deployment.)

外部バイナリは使用しないでください

IronPDFはNuGetパッケージとして配布されています。 移行後、これらを削除してください:

  • gsdll64.dllファイル
  • サーバーからのGhostscriptのインストール
  • PATH環境変数の設定
  • コード内のGhostscriptVersionInfo参照

ポストスクリプトファイル

IronPDFはポストスクリプト(.ps)ファイルを直接扱いません。 ワークフローで PostScript 処理が必要な場合は、次のいずれかを行ってください: 1.IronPDFで処理する前に別のツールでPostScriptをPDFに変換する。 2.ソースコンテンツをHTMLに変換し、IronPDFのHTMLレンダリングを使用する。


パフォーマンスの考慮事項

プロセス生成なし

gsdll64.dllをP/Invokeする)ことは、操作ごとにプロセスとネイティブ相互運用のオーバーヘッドを伴います。 IronPDFは、マネージド.NETコードとしてインプロセスで実行されます:

// 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

スレッドの安全性

IronPDFは、複数のスレッドからPdfDocumentの同時使用をサポートしています。 IronPDFのドキュメントで並列レンダリングパターンに関するガイドを参照してください。


移行チェックリスト

移行前

  • コードベース内のすべてのGhostscriptの使用をインベントリする
  • 現在使用されているコマンドラインスイッチを文書化する
  • PostScript処理を識別する(特別な処理が必要)
  • AGPL-3.0ライセンスのコンプライアンス状態を確認する
  • IronPDFライセンスキーを取得する
  • バージョン管理に移行ブランチを作成する

コードの移行

  • Ghostscript.NET NuGetパッケージ:dotnet remove package Ghostscript.NETを削除します。 -IronPDFNuGetパッケージ:dotnet add package IronPdfをインストールします。
  • 外部のGhostscriptバイナリ依存を削除する
  • GhostscriptVersionInfoとDLL参照を削除します。
  • GhostscriptProcessor.Process()をIronPDFメソッドに変換します。
  • pdf.RasterizeToImageFiles()に変換します。
  • コマンドラインスイッチをAPI呼び出しに置き換える
  • エラー処理をstderr解析から例外に更新
  • 1から始まるページ番号を0から始まるページ番号に変換する

テスティング

  • PDFから画像への変換をテストする
  • PDF結合のテスト
  • テストページの抽出
  • 圧縮品質のテスト
  • パスワード保護をテストする
  • 出力品質が期待通りであることを確認する
  • パフォーマンスベンチマークのクリティカルパス

展開

  • サーバーからGhostscriptを削除する
  • PATH設定を削除する
  • デプロイメントからgsdll*.dllファイルを削除します。
  • Ghostscriptをインストールせずにアプリケーションが動作することを確認する

移行後

  • Artifex商業ライセンスをキャンセルする(以前に取得していた場合で、もはや必要ない場合)
  • ドキュメントの更新 -IronPDFAPI についてチームをトレーニングする
  • 問題がないか生産状況を監視

ご注意Ghostscriptはその所有者の登録商標です。 このサイトはArtifex Softwareに関係しておらず、承認も支援も受けておりません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね