移行ガイド C#でGhostscript GPLからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年1月25日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る Ghostscript GPLからIronPDFに移行することで、.NET PDFワークフローをコマンドラインでのプロセス生成や文字列ベースのスイッチ操作から、タイプセーフでインテリセンス対応の.NETネイティブAPIに変換します。 このガイドは、プロの.NET開発者のために、AGPLライセンスの懸念と外部バイナリ依存を排除する包括的なステップバイステップの移行パスを提供します。 なぜGhostscript GPLからIronPDFに移行するのか GhostscriptのGPLの課題 Ghostscript GPL は、数十年の歴史を持つ由緒ある PostScript/PDF インタプリタですが、最新の .NET アプリケーションで使用するには大きな課題があります: AGPL ライセンスの制限:Ghostscript GPLの AGPL ライセンスでは、Artifex から高価な商用ライセンスを購入しない限り、それを使用するソフトウェアを配布する場合、ソース コードをリリースする必要があります。 この"バイラル"ライセンスモデルは、プロプライエタリなアプリケーションに重大な法的リスクをもたらします。 2.コマンドライン インターフェイス:Ghostscript GPLは基本的にコマンドライン ツールです。 C#からこのツールを使用するには、プロセスを起動し、文字列引数を渡し、出力を解析する必要があります。 3.外部バイナリ依存関係:Ghostscript GPLを個別にインストールし、PATH 変数を管理し、展開環境間でのバージョン互換性を確保する必要があります。 32ビットと64ビットでは異なるDLLが必要です(gsdll32.dllとgsdll64.dll)。 4.ネイティブ HTML から PDF への変換なし:Ghostscript GPLは HTML を PDF に直接変換できません。 まず別のツールを使ってHTMLをPostScriptに変換し、次にGhostscript GPLを使ってPostScriptをPDFに変換する必要があります。 5.複雑なスイッチ構文:操作は-dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=...のような難解なコマンドラインスイッチによって制御されます。 インテリセンス、タイプセーフティがなく、ミスタイプしやすい。 6.エラー処理:エラーはテキスト文字列として stderr から渡されるため、構造化例外処理ではなく解析が必要です。 7.プロセス管理のオーバーヘッド:各操作は個別のプロセスを生成し、エラー処理、タイムアウト、およびリソースのクリーンアップのオーバーヘッドと複雑さを追加します。 ゴーストスクリプトGPLとIronPDFの比較 アスペクト Ghostscript GPL IronPDF ライセンス AGPL(ウィルス性)または高価な商用 明確な用語によるコマーシャル インテグレーション コマンドラインプロセスの起動 .NETネイティブライブラリ APIデザイン 文字列ベースのスイッチ 型付き、インテリセンス対応API エラー処理 標準エラーテキストの解析 .NET の例外 HTMLからPDFへ 非対応(外部ツールが必要) 内蔵Chromiumエンジン 依存関係 外部バイナリのインストール 自己完結型NuGetパッケージ デプロイメント PATHの設定、DLLのコピー NuGetリファレンスを追加するだけです。 スレッドの安全性 プロセス分離のみ スレッドセーフ設計 最新の.NET 限定サポート .NET 6/7/8/9/10をフルサポート 非同期サポート プロセスベース ネイティブasync/await 2025年、2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFは最新の.NETパターンとネイティブに統合する将来性のある基盤を提供します。 マイグレーションの複雑さの評価 機能別の見積もり作業 フィーチャー 移行の複雑さ ノート PDFから画像へ 低レベル 直接APIマッピング PDFのマージ 低レベル IronPDFでよりシンプルに PDF圧縮 低レベル 組み込みオプション PDF最適化 低レベル さまざまなアプローチ 暗号化 中規模 さまざまなAPI ページ抽出 低レベル 0インデックス vs 1インデックス ポストスクリプトからPDFへ 中・高 まずPSからPDFに変換 カスタムスイッチ 中・高 同等の機能の研究 パラダイムシフト このGhostscript GPL移行における基本的な変化は、コマンドライン プロセス実行から型指定された .NET API 呼び出しへの変更です。 Ghostscript GPL: "これらの文字列スイッチを外部プロセスに渡す" IronPDF: ".NET オブジェクトでこれらのメソッドを呼び出す 始める前に 前提条件 .NETバージョン: IronPDFは.NET Framework 4.6.2以降および.NET Core 2.0以降 / .NET 5/6/7/8/9以降をサポートしています。 2.ライセンスキー: ironpdf.comからIronPDFライセンスキーを取得します。 3.バックアップ:移行作業用のブランチを作成する すべてのGhostscript 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 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のGPL依存関係を削除する 移行後 サーバーからGhostscript GPLをアンインストールする デプロイメントから gsdll32.dll / gsdll64.dll を削除する Ghostscript GPLのPATH設定を削除する `GhostscriptVersionInfo の参照をすべて削除してください。 クイック スタート マイグレーション ステップ 1: ライセンス構成の更新 ビフォア (Ghostscript GPL): Ghostscript GPL under AGPLは、ソースコードの開示か、Artifexからの高価な商用ライセンスが必要です。 翻訳後(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"; $vbLabelText $csharpLabel ステップ 2: 名前空間インポートを更新する // 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; $vbLabelText $csharpLabel 完全な API リファレンス コア クラス マッピング Ghostscript.NET IronPDF 翻訳内容 GhostscriptProcessor(ゴーストスクリプトプロセッサー さまざまな PdfDocument メソッド PDF処理 GhostscriptRasterizer(ゴーストスクリプトラスタライザー PdfDocument.ToBitmap() / RasterizeToImageFiles(). PDFから画像へ GhostscriptVersionInfo(ゴーストスクリプトバージョンインフォ 該当なし(不要) DLLの場所 GhostscriptStdIO` 該当なし(例外あり) I/O処理 プロセス+コマンドライン ChromePdfRenderer HTML to PDF. コマンドライン スイッチ マッピング Ghostscript GPL スイッチ IronPDF 同等物 翻訳内容 -dNOPAUSE 該当なし(不要) ページ間で一時停止しない -dBATCH 該当なし(不要) 処理終了後 -dSAFER 該当なし(デフォルト) 安全なファイルアクセス -sDEVICE=pdfwrite。 さまざまなPDFメソッド 出力PDF -sDEVICE=png16m。 ToBitmap()またはRasterizeToImageFiles()。 PNG出力 -sOutputFile=X。 SaveAs("X")のようにします。 出力ファイル名 -r300 メソッド内のDPIパラメータ 解像度 -dPDFSETTINGS=/ebook `CompressImages(quality: 75) 中程度の品質 -sOwnerPassword=X。 SecuritySettings.OwnerPassword。 オーナーパスワード -sUserPassword=X。 SecuritySettings.UserPassword` ユーザーパスワード コード移行の例 例1: HTMLからPDFへの変換 ビフォア (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()); } } $vbLabelText $csharpLabel 翻訳後(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"); } } $vbLabelText $csharpLabel Ghostscript GPLは、HTMLを直接PDFに変換することはできません。 IronPdfのChromePdfRendererはCSS3、JavaScript、最新のWeb標準を完全にサポートし、HTMLからPDFへの直接変換を提供します。 レンダリングオプションについては、HTML to PDF documentationを参照してください。 例2:PDFから画像へ ビフォア (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(); } } } } $vbLabelText $csharpLabel 翻訳後(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"); } } } $vbLabelText $csharpLabel Ghostscript GPL のアプローチでは、外部の gsdll64.dll</code> を見つけ、<code>GhostscriptVersionInfo オブジェクトを作成し、1 インデックスのページ番号を使用する必要があります。 IronPdfのToBitmap()メソッドは外部依存のないクリーンで単一行のアプローチを提供します。 ページのインデックスの違いに注意してください:Ghostscript GPLは1-indexedページを使用し、IronPDFは0-indexed (標準的な.NETの慣習)を使用します。 例3: PDFファイルをマージする ビフォア (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()); } } $vbLabelText $csharpLabel 翻訳後(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"); } } $vbLabelText $csharpLabel Ghostscript GPLのアプローチでは、スイッチ構文(-dNOPAUSE, -dBATCH, -sDEVICE=pdfwrite)を記憶し、ファイルパスを文字列配列に連結する必要があります。 IronPDFの静的なMergeメソッドはタイプセーフで、適切なPdfDocumentオブジェクトとのインテリセンスによるマージを提供します。 PDFのマージと分割については、こちらをご覧ください。 重要な移行に関する注意事項 ページインデックス変換 このGhostscript GPL移行における最も重要な変更点の一つは、ページインデックスの違いです: // 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"); } $vbLabelText $csharpLabel AGPLライセンスに関する懸念を払拭 Ghostscript GPLのAGPLライセンスには、アプリケーションを配布する際にソースコードの公開を要求する"ウィルス性"の特性があります。 IronPDFの商用ライセンスにはそのような条件はありません。 外部バイナリは使用しないでください IronPDFは完全に自己完結しています。 移行後、これらを削除してください: gsdll32.dllおよび gsdll64.dllファイル サーバーからのGhostscript GPLインストール PATH環境変数の設定 GhostscriptVersionInfoをコードで参照する ポストスクリプトファイル IronPDFはポストスクリプト(.ps)ファイルを直接扱いません。 ワークフローで PostScript 処理が必要な場合は、次のいずれかを行ってください: 1.IronPDFで処理する前に別のツールでPostScriptをPDFに変換する。 2.ソースコンテンツをHTMLに変換し、IronPDFのHTMLレンダリングを使用する。 パフォーマンスの考慮事項 プロセス生成なし Ghostscript GPL の操作は、関連するオーバーヘッドを伴う外部プロセスを生成します。 IronPDFは.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 スレッドの安全性 IronPDFは設計上スレッドセーフです。 複数のスレッドでChromePdfRendererとPdfDocumentを同時に使用することができます。 移行チェックリスト 移行前 コードベース内のすべてのGhostscript GPLの使用状況を一覧表示する 現在使用されているコマンドラインスイッチを文書化する PostScript処理を識別する(特別な処理が必要) AGPLライセンスのコンプライアンスステータスを確認する IronPDFライセンスキーを取得する バージョン管理に移行ブランチを作成する コードの移行 Ghostscript.NET NuGet パッケージを削除します: dotnet remove package Ghostscript.NET IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf 外部のGhostscript GPLバイナリ依存関係を削除する GhostscriptVersionInfoとDLL参照を削除する GhostscriptProcessor.Process()をIronPDFメソッドに変換する GhostscriptRasterizerをpdf.ToBitmap()に変換する コマンドラインスイッチをAPI呼び出しに置き換える エラー処理をstderr解析から例外に更新 1から始まるページ番号を0から始まるページ番号に変換する テスティング PDFから画像への変換をテストする PDF結合のテスト テストページの抽出 圧縮品質のテスト パスワード保護をテストする 出力品質が期待通りであることを確認する パフォーマンスベンチマークのクリティカルパス 展開 サーバーからGhostscript GPLを削除する PATH設定を削除する デプロイメントからgsdll*.dllファイルを削除します -Ghostscript GPLをインストールせずにアプリケーションが動作することを確認します 移行後 Ghostscript GPLライセンスを削除する(商用の場合) ドキュメントの更新 -IronPDFAPI についてチームをトレーニングする 問題がないか生産状況を監視 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む 公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む 公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む C#でGnostice PDFOneからIronPdfに移行する方法C#でGemBox PDFからIronPDFに移...
公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む
公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む
公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む