フッターコンテンツにスキップ
移行ガイド

C#でSumatra PDFからIronPDFへ移行する方法

Sumatra PDFからIronPDFへの移行は、PDFワークフローをデスクトップビューアアプリケーションによる外部プロセス管理から、完全なPDF作成、操作、抽出機能を備えた.NETネイティブライブラリ統合へと変えます。 このガイドは、外部依存、GPLライセンスの制限、そしてSumatra PDFが開発ライブラリではなくビューアであるという基本的な制限を排除した、完全でステップバイステップの移行パスを提供します。

なぜスマトラPDFからIronPDFへ移行するのか

スマトラを理解する PDF

Sumatra PDFは、主に軽量なオープンソースのPDFリーダーで、そのシンプルさとスピードで有名です。 しかし、Sumatra PDFは、PDFファイルを閲覧するだけでなく、PDFファイルの作成や操作に必要な機能を提供していません。 PDFを読むための無料で多用途なオプションとして、飾り気のない体験を求める多くのユーザーに愛用されています。 しかし、アプリケーション内での作成やライブラリ統合のような、より包括的なPDF機能を必要とする開発者に関しては、Sumatra PDFは、その固有の設計上の制限のために不足しています。

Sumatra PDFはデスクトップPDFビューアアプリケーションであり、開発ライブラリではありません。 .NETアプリケーションでSumatra PDFを使用している場合、おそらく次のようなことが考えられます:

1.PDFを表示する外部プロセスとして起動する 2.コマンドラインでPDFを印刷する 3.ユーザーがインストールしなければならない依存関係として、このツールに依存してください。

スマトラPDF統合の主な問題点

課題 インパクト
ライブラリではありません プログラムによるPDFの作成や編集はできません。
外部プロセスの場合 別プロセスの起動が必要
GPLライセンス 商用ソフトウェアに対する制限
ユーザー依存性 ユーザーはSumatraを別途インストールする必要があります。
APIはありません コマンドライン引数に限定
閲覧のみ PDFの作成、編集、操作はできません。
ウェブサポートはありません デスクトップ専用アプリケーション

スマトラPDFとIronPDFの比較

フィーチャー スマトラPDF IronPDF
タイプ アプリケーション ライブラリ
PDFリーディング はい はい
PDFの作成 なし はい
PDFの編集 なし はい
統合 制限付き(スタンドアロン) アプリケーションへの完全統合
ライセンス GPL 商用
PDFを作成する なし はい
PDFを編集する なし はい
HTMLからPDFへ なし はい
マージ/スプリット なし はい
ウォーターマーク なし はい
デジタル署名 なし はい
フォーム入力 なし はい
テキスト抽出 なし はい
.NETインテグレーション なし ネイティブ
ウェブアプリケーション なし はい

IronPDFはSumatra PDFとは異なり、特定のデスクトップアプリケーションや外部プロセスに縛られることはありません。 C#で直接PDF文書を動的に作成、編集、操作するための柔軟なライブラリを開発者に提供します。 このように外部プロセスから切り離すことで、単純明快で適応性が高く、単に見るだけでなく幅広い用途に適しているという顕著な利点があります。

2025年と2026年まで.NET 10とC# 14の採用を計画しているチームに対して、IronPDFは外部プロセスのオーバーヘッドとSumatra PDFのGPLライセンス制限を排除するネイティブライブラリ統合を提供します。


始める前に

前提条件

  1. .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGetアクセス: NuGetパッケージをインストールする機能
  3. IronPDFライセンス: ironpdf.comからライセンスキーを取得します。

インストール

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

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

完全な API リファレンス

名前空間の変更

// Before:スマトラPDF(external process)
using System.Diagnostics;
using System.IO;

// After: IronPDF
using IronPdf;
// Before:スマトラPDF(external process)
using System.Diagnostics;
using System.IO;

// After: IronPDF
using IronPdf;
$vbLabelText   $csharpLabel

コア機能のマッピング

スマトラPDFアプローチ IronPDF 同等物 ノート
Process.Start("SumatraPDF.exe", pdfPath). PdfDocument.FromFile()を使用してください。 PDFを読み込む
コマンドライン引数 ネイティブAPIメソッド CLI不要
外部の pdftotext.exe を使用してください。 pdf.ExtractAllText()を使用してください。 テキスト抽出
外部 wkhtmltopdf.exe renderer.RenderHtmlAsPdf() HTMLからPDFへ
-print-to-default引数 pdf.Print() 印刷
不可 PdfDocument.Merge()を使用してください。 PDFのマージ
不可 pdf.ApplyWatermark()</code> 透かし
不可 pdf.SecuritySettings パスワード保護

コード移行の例

例1: HTMLからPDFへの変換

ビフォア(スマトラPDF):

// NuGet: Install-Package SumatraPDF (Note: Sumatra is primarily a viewer, not a generator)
//スマトラPDFdoesn't have direct C# integration forHTMLからPDFへconversion
// You would need to use external tools or libraries and then open with Sumatra
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        //スマトラPDFcannot directly convert HTML to PDF
        // You'd need to use wkhtmltopdf or similar, then view in Sumatra
        string htmlFile = "input.html";
        string pdfFile = "output.pdf";

        // Using wkhtmltopdf as intermediary
        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = "wkhtmltopdf.exe",
            Arguments = $"{htmlFile} {pdfFile}",
            UseShellExecute = false
        };
        Process.Start(psi)?.WaitForExit();

        // Then open with Sumatra
        Process.Start("SumatraPDF.exe", pdfFile);
    }
}
// NuGet: Install-Package SumatraPDF (Note: Sumatra is primarily a viewer, not a generator)
//スマトラPDFdoesn't have direct C# integration forHTMLからPDFへconversion
// You would need to use external tools or libraries and then open with Sumatra
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        //スマトラPDFcannot directly convert HTML to PDF
        // You'd need to use wkhtmltopdf or similar, then view in Sumatra
        string htmlFile = "input.html";
        string pdfFile = "output.pdf";

        // Using wkhtmltopdf as intermediary
        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = "wkhtmltopdf.exe",
            Arguments = $"{htmlFile} {pdfFile}",
            UseShellExecute = false
        };
        Process.Start(psi)?.WaitForExit();

        // Then open with Sumatra
        Process.Start("SumatraPDF.exe", pdfFile);
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

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

        string htmlContent = "<h1>Hello World</h1><p>This isHTMLからPDFへconversion.</p>";

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

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

        string htmlContent = "<h1>Hello World</h1><p>This isHTMLからPDFへconversion.</p>";

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

        Console.WriteLine("PDF created successfully!");
    }
}
$vbLabelText   $csharpLabel

この例は、基本的なアーキテクチャの違いを示しています。 スマトラPDFは、HTMLを直接PDFに変換することはできませんので、wkhtmltopdfのような外部ツールを仲介として使用し、結果を表示するために別のプロセスとしてスマトラを起動する必要があります。 このため、2つの外部実行ファイルと複数のプロセス起動が必要です。

IronPdfはChromePdfRendererRenderHtmlAsPdf()をわずか3行のコードで使用します。 外部ツール、プロセス管理、中間ファイルは使用しません。 PDFはメモリ内で直接作成され、SaveAs()で保存されます。 包括的な例については、HTML to PDF documentationを参照してください。

例 2:PDFを開いて表示する

ビフォア(スマトラPDF):

// NuGet: Install-Package SumatraPDF.CommandLine (or direct executable)
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        //スマトラPDFexcels at viewing PDFs
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "SumatraPDF.exe",
            Arguments = $"\"{pdfPath}\"",
            UseShellExecute = true
        };

        Process.Start(startInfo);

        // Optional: Open specific page
        // Arguments = $"-page 5 \"{pdfPath}\""
    }
}
// NuGet: Install-Package SumatraPDF.CommandLine (or direct executable)
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        //スマトラPDFexcels at viewing PDFs
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "SumatraPDF.exe",
            Arguments = $"\"{pdfPath}\"",
            UseShellExecute = true
        };

        Process.Start(startInfo);

        // Optional: Open specific page
        // Arguments = $"-page 5 \"{pdfPath}\""
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        // Extract information
        Console.WriteLine($"Page Count: {pdf.PageCount}");

        //IronPDFcan manipulate and save, then open with default viewer
        pdf.SaveAs("modified.pdf");

        // Open with default PDF viewer
        Process.Start(new ProcessStartInfo("modified.pdf") { UseShellExecute = true });
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        // Extract information
        Console.WriteLine($"Page Count: {pdf.PageCount}");

        //IronPDFcan manipulate and save, then open with default viewer
        pdf.SaveAs("modified.pdf");

        // Open with default PDF viewer
        Process.Start(new ProcessStartInfo("modified.pdf") { UseShellExecute = true });
    }
}
$vbLabelText   $csharpLabel

Sumatra PDFはPDFの表示に優れていますが、コマンドライン引数で外部プロセスを起動することには制限があります。 プログラムでPDFコンテンツにアクセスすることはできません。

IronPDFはPdfDocument.FromFile()でPDFを読み込み、完全なプログラム的アクセスを提供します。 ページ数のようなプロパティを読み、ドキュメントを操作し、変更を保存し、システムのデフォルトのPDFビューアで開くことができます。 重要な違いは、IronPDFは単なるプロセス引数ではなく、実際のAPIを提供することです。 詳しくは、チュートリアルをご覧ください。

例3: PDFからテキストを抽出する

ビフォア(スマトラPDF):

//スマトラPDFdoesn't provide C# API for text extraction
// You would need to use command-line tools or other libraries
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        //スマトラPDFis a viewer, not a text extraction library
        // You'd need to use PDFBox, iTextSharp, or similar for extraction

        string pdfFile = "document.pdf";

        // This would require external tools like pdftotext
        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = "pdftotext.exe",
            Arguments = $"{pdfFile} output.txt",
            UseShellExecute = false
        };

        Process.Start(psi)?.WaitForExit();

        string extractedText = File.ReadAllText("output.txt");
        Console.WriteLine(extractedText);
    }
}
//スマトラPDFdoesn't provide C# API for text extraction
// You would need to use command-line tools or other libraries
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        //スマトラPDFis a viewer, not a text extraction library
        // You'd need to use PDFBox, iTextSharp, or similar for extraction

        string pdfFile = "document.pdf";

        // This would require external tools like pdftotext
        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = "pdftotext.exe",
            Arguments = $"{pdfFile} output.txt",
            UseShellExecute = false
        };

        Process.Start(psi)?.WaitForExit();

        string extractedText = File.ReadAllText("output.txt");
        Console.WriteLine(extractedText);
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        // Extract text from all pages
        string allText = pdf.ExtractAllText();
        Console.WriteLine("Extracted Text:");
        Console.WriteLine(allText);

        // Extract text from specific page
        string pageText = pdf.ExtractTextFromPage(0);
        Console.WriteLine($"\nFirst Page Text:\n{pageText}");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        // Extract text from all pages
        string allText = pdf.ExtractAllText();
        Console.WriteLine("Extracted Text:");
        Console.WriteLine(allText);

        // Extract text from specific page
        string pageText = pdf.ExtractTextFromPage(0);
        Console.WriteLine($"\nFirst Page Text:\n{pageText}");
    }
}
$vbLabelText   $csharpLabel

Sumatra PDF はビューアであり、テキスト抽出ライブラリではありません。 テキストを抽出するには、pdftotext.exeのような外部コマンドラインツールを使用し、プロセスを起動し、完了するまで待ち、出力ファイルを読み、関連するすべてのファイルI/Oとクリーンアップを処理する必要があります。

IronPDFはExtractAllText()でドキュメント全体、またはExtractTextFromPage(0)で特定のページのネイティブテキスト抽出を提供します。 外部プロセス、一時ファイル、クリーンアップは不要です。


機能比較

フィーチャー スマトラPDF IronPDF
作成する。
HTMLからPDFへ なし はい
URLからPDFへ なし はい
テキストからPDFへ なし はい
画像からPDFへ なし はい
操作
PDFのマージ なし はい
PDFの分割 なし はい
ページの回転 なし はい
ページの削除 なし はい
ページの並び替え なし はい
コンテンツ
透かしの追加 なし はい
ヘッダー/フッターの追加 なし はい
スタンプテキスト なし はい
スタンプ画像 なし はい
セキュリティ
パスワード保護 なし はい
デジタル署名 なし はい
暗号化 なし はい
許可設定 なし はい
抽出
テキストの抽出 なし はい
画像の抽出 なし はい
プラットフォーム
ウィンドウズ はい はい
Linux なし はい
macOS なし はい
ウェブアプリ なし はい
Azure/AWS なし はい

移行後の新機能

IronPdfに移行した後は、Sumatra PDFでは提供できない機能を得ることができます:

HTMLからのPDF作成

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
    <head><style>body { font-family: Arial; }</style></head>
    <body>
        <h1>Invoice #12345</h1>
        <p>Thank you for your purchase.</p>
    </body>
    </html>");

pdf.SaveAs("invoice.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
    <head><style>body { font-family: Arial; }</style></head>
    <body>
        <h1>Invoice #12345</h1>
        <p>Thank you for your purchase.</p>
    </body>
    </html>");

pdf.SaveAs("invoice.pdf");
$vbLabelText   $csharpLabel

PDFマージ

var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var pdf3 = PdfDocument.FromFile("chapter3.pdf");

var book = PdfDocument.Merge(pdf1, pdf2, pdf3);
book.SaveAs("complete_book.pdf");
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var pdf3 = PdfDocument.FromFile("chapter3.pdf");

var book = PdfDocument.Merge(pdf1, pdf2, pdf3);
book.SaveAs("complete_book.pdf");
$vbLabelText   $csharpLabel

ウォーターマーク

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

pdf.ApplyWatermark(@"
    <div style='
        font-size: 60pt;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");

pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(@"
    <div style='
        font-size: 60pt;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");

pdf.SaveAs("watermarked.pdf");
$vbLabelText   $csharpLabel

パスワード保護

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Sensitive Data</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Sensitive Data</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • すべての Sumatra プロセスの起動を識別します ( Process.Start(&quot;SumatraPDF.exe&quot;, ...) )
  • ドキュメント印刷ワークフロー( -print-to-default引数)
  • 使用されたSumatraコマンドライン引数をメモします
  • ironpdf.comからIronPDFライセンスキーを取得します

コードの更新

  • IronPdf NuGetパッケージをインストールする
  • スマトラプロセスコードを削除
  • Process.Start(&quot;SumatraPDF.exe&quot;, pdfPath)PdfDocument.FromFile(pdfPath)に置き換えます。
  • 外部のwkhtmltopdf.exe呼び出しをChromePdfRenderer.RenderHtmlAsPdf()に置き換えます
  • 外部のpdftotext.exe呼び出しをpdf.ExtractAllText()に置き換えます
  • -print-to-defaultプロセス呼び出しをpdf.Print()に置き換えます
  • アプリケーションの起動時にライセンスの初期化を追加

テスティング

  • PDF生成品質をテストする
  • 印刷機能を確認する
  • すべてのターゲットプラットフォームでテスト
  • スマトラ依存が残っていないことを確認する

クリーンアップ

  • インストーラーからSumatraを削除する
  • ドキュメントの更新
  • システム要件からスマトラを削除する

カーティス・チャウ
テクニカルライター

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

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