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

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

スマトラPDFからIronPDFへの移行:完全なC#移行ガイド

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

フィーチャースマトラPDFIronPDF
タイプアプリケーションライブラリ
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";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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()</コード></コード透かし
不可<コード>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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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}\""
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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 });
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

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


機能比較

フィーチャースマトラPDFIronPDF
作成する。
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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • [Process.Start("SumatraPDF.exe", ..))
  • [ドキュメント印刷ワークフロー(-print-to-default引数)
  • [使用される Sumatra コマンドライン引数に注意してください。
  • [ironpdf.comからIronPDFライセンスキーを入手してください。

コードの更新

  • [ ] IronPdf NuGetパッケージをインストールしてください。
  • [ ] Sumatraプロセスコードの削除
  • [ ]Process.Start("SumatraPDF.exe", pdfPath).を PdfDocument.FromFile(pdfPath) に置き換えてください。
  • [ ] 外部のwkhtmltopdf.exe呼び出しをChromePdfRenderer.RenderHtmlAsPdf()に置き換えてください。
  • [ ] 外部の pdftotext.exe 呼び出しをpdf.ExtractAllText()を使用してください。に置き換えてください。
  • [ ] -print-to-defaultプロセスコールをpdf.Print()に置き換えてください。
  • [アプリケーション起動時のライセンス初期化機能の追加

テスティング

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

クリーンアップ

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

結論

まとめると、Sumatra PDFとIronPDFのどちらを選ぶかは、あなたの要件に大きく依存します。 高速でわかりやすいPDFリーダーを必要とするエンドユーザーにとって、Sumatra PDFは素晴らしい体験を提供します。 しかしながら、高度なPDF操作や統合機能を必要とする開発者や企業にとって、IronPdfは優れた選択肢として際立っています。そのライブラリ設計、PDFの全機能、商用ライセンスにより、C#アプリケーションを新たな高みへと昇華させる強力なツールとなります。

この移行における主な変更点は以下のとおりです: 1.アーキテクチャ: 外部デスクトップアプリケーション → ネイティブ.NETライブラリ 2.PDF作成: 不可 → ChromePdfRenderer.RenderHtmlAsPdf()。 3.PDFの読み込みProcess.Start("SumatraPDF.exe", path)PdfDocument.FromFile(path). 4.テキスト抽出: 外部 pdftotext.exepdf.ExtractAllText()pdf.ExtractTextFromPage()。 5.印刷-print-to-default CLI 引数 → pdf.Print(). 6.マージ: 不可 → PdfDocument.Merge()。 7.透かし: 不可 → pdf.ApplyWatermark()。 8.セキュリティ: 不可 → pdf.SecuritySettings。 9.ライセンス:GPL (制限的) → 商用 (柔軟) 10.依存関係:ユーザーはSumatraをインストールする必要があります。

IronPDFドキュメントチュートリアルAPIリファレンスをご覧いただき、Sumatra PDFへの移行を加速させてください。

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

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

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