IRONSOFTWAREHOME
ビデオ

How to Convert RTF to PDF Using C#

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

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の比較

アスペクトGhostscriptIronPDF
ライセンスAGPL-3.0(ネットワークコピーレフト)またはArtifexの商業ライセンス明確な用語によるコマーシャル
インテグレーションコマンドラインプロセスの起動.NETネイティブライブラリ
APIデザイン文字列ベースのスイッチ型付き、インテリセンス対応API
エラー処理標準エラーテキストの解析.NET の例外
HTMLからPDFへ非対応(外部ツールが必要)内蔵Chromiumエンジン
依存関係外部バイナリのインストール自己完結型NuGetパッケージ
デプロイメントPATHの設定、DLLのコピーNuGetリファレンスを追加するだけです。
スレッドの安全性プロセス分離のみスレッドセーフ設計
最新 for .NETGhostscript.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オブジェクトで呼び出します"
Text

始める前に

前提条件

  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" .
SHELL

NuGetパッケージの変更

# 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";

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

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

// After (IronPDF)
using IronPdf;

完全な API リファレンス

コア クラス マッピング

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

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

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

翻訳後(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");
    }
}

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

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

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

翻訳後(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");
    }
}

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

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

スレッドの安全性

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は現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。