IRONSOFTWAREHOME
ビデオ

How to Set and Edit PDF Metadata in C#

Curtis Chau
Curtis Chau
Updated: 2026年1月11日

なぜAspose.PDFから移行するのですか?

Aspose.PDFはエンタープライズグレードの機能を提供しますが、開発チームがPDF生成のニーズに対して最新の選択肢を求めるようになったのには、いくつかの要因があります。

コスト比較

Aspose.PDF は、1年間のアップデートを含む永続ライセンスモデルを使用しています; オプションの更新はアップデートウィンドウを拡張します。 出典: Aspose プライシングページ

アスペクトAspose.PDFIronPDF
開始価格 (開発者中小規模ビジネス)$1,199/開発者1回749ドル(Lite)
ライセンスモデル永続 + 1 年のアップデート; optional renewal永久ライセンス
開発者 OEM$3,597/開発者 (無制限のデプロイ)上位層に含まれるもの
サポートすべての有料ティアに含まれています含まれるもの
無料試用版30日間の一時ライセンス (水印 + サイズ制限有り)開発用には無料

HTMLレンダリングエンジンの比較

Aspose.PDF は、社内の HTML/CSS レンダリングエンジン (Chromium ではない) を使用しています; Aspose フォーラムでのユーザーの報告では Flexbox や CSS Grid といった最新の CSS レイアウト機能にギャップがあると指摘されています。IronPDFは、HTML から PDF へのレンダリングに組み込みの Chromium ビルドを使用しています。

フィーチャーAspose.PDF (社内エンジン)IronPDF (Chromium)
CSS3のサポート部分的; 最新レイアウト機能にギャップ完全なCSS3
フレックスボックス/グリッドアスペースフォーラムによると、限定的 / 一貫性がないフルサポート
JavaScript(JavaScript制限的フルサポート (V8 を Chromium 経由で使用)
ウェブフォント部分的完了
モダンHTML5部分的完了
レンダリング品質について複雑なレイアウトでは変動Chrome 相当

性能特性

ユーザーは Aspose サポートフォーラムでパフォーマンスの違いを報告しています。 下記の数値はコミュニティ報告先を反映しています — 自分のワークロードに対して検証してください。

メトリックAspose.PDFIronPDF
HTMLレンダリングユーザー報告によると、複雑な CSS ワークロードでの遅延最適化されたChromiumエンジン
大型文書一部のシナリオでメモリの増大が報告されています効率的なストリーミング
Linuxのパフォーマンスコミュニティフォーラムで報告される高い CPU やメモリの増加安定性

Aspose.PDFとIronPDFの比較:主な違い

アスペクトAspose.PDFIronPDF
価格 (初期)$1,199/開発者 (永続 + 1年の更新)1回749ドル(Lite)
HTMLエンジン社内エンジン (現代 CSS 限定)Chromium (フルCSS3/JS)
パフォーマンスフォーラムでの複雑な CSS での遅延報告最適化
ライセンスモデル永続 + .lic ファイル; 更新のためのオプション再契約永久+コードベースのキー
Linuxのサポートフォーラムで報告される CPU / メモリの問題安定性
ページ索引1から始まる (Pages[1])0から始まる (Pages[0])

移行前の準備

前提条件

あなたの環境がこれらの要件を満たしていることを確認してください:

  • .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+またはC#拡張機能付きVS Code
  • NuGetパッケージマネージャへのアクセス
  • IronPDFライセンスキー (ironpdf.com にて無料トライアル可能)

Aspose.PDFの使用法を監査する

ソリューションディレクトリでこれらのコマンドを実行し、すべてのAspose.PDF参照を特定します:

# Find all Aspose.Pdf using statements
grep -r "using Aspose.Pdf" --include="*.cs" .

# Find HtmlLoadOptions usage
grep -r "HtmlLoadOptions\|HtmlFragment" --include="*.cs" .

# Find Facades usage
grep -r "PdfFileEditor\|PdfFileMend\|PdfFileStamp" --include="*.cs" .

# Find TextAbsorber usage
grep -r "TextAbsorber\|TextFragmentAbsorber" --include="*.cs" .
SHELL

予想される画期的な変更

Aspose.PDFパターン必要な変更
new Document() + Pages.Add()HTMLレンダリングを使用する
HtmlLoadOptionsChromePdfRenderer.RenderHtmlAsPdf()
TextFragment + 手動位置設定CSSベースのポジショニング
PdfFileEditor.Concatenate()PdfDocument.Merge()
TextFragmentAbsorberpdf.ExtractAllText()
ImageStampHTMLベースの透かし
.lic ファイルライセンスコードベースのライセンスキー
1ベースのページインデックス0ベースのページインデックス

ステップごとの移行プロセス

ステップ 1: NuGet パッケージを更新する

Aspose.PDFを削除し、IronPDFをインストールしてください:

# Remove Aspose.PDF
dotnet remove package Aspose.PDF

# Install IronPDF
dotnet add package IronPdf
SHELL

またはパッケージマネージャーコンソールから:

Uninstall-Package Aspose.PDF
Install-Package IronPdf
PowerShell

ステップ 2: 名前空間参照の更新

Aspose.PDFの名前空間をIronPdf.PDFに置き換えてください:

// Remove these
using Aspose.Pdf;
using Aspose.Pdf.Text;
using Aspose.Pdf.Facades;
using Aspose.Pdf.Generator;

// Add these
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;

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

Aspose.PDFは.licファイルライセンスを使用しています。 IronPDFはシンプルなコードベースのキーを使用しています。

Aspose.PDFの実装:

var license = new Aspose.Pdf.License();
license.SetLicense("Aspose.Pdf.lic");

IronPDFの実装:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

完全な API 移行のリファレンス

コア クラス マッピング

Aspose.PDFクラスIronPDF 同等物
DocumentPdfDocument
HtmlLoadOptionsChromePdfRenderer
TextFragmentAbsorberPdfDocument.ExtractAllText()
PdfFileEditorPdfDocument.Merge()
TextStamp / ImageStampPdfDocument.ApplyWatermark()
LicenseIronPdf.License

ドキュメント操作

Aspose.PDFメソッドIronPDF メソッド
new Document()new PdfDocument()
new Document(path)PdfDocument.FromFile(path)
doc.Save(path)pdf.SaveAs(path)
doc.Pages.Countpdf.PageCount
doc.Pages.Delete(index)pdf.RemovePages(index)

HTMLからPDFへの変換

Aspose.PDFメソッドIronPDF メソッド
new HtmlLoadOptions()new ChromePdfRenderer()
new Document(stream, htmlOptions)renderer.RenderHtmlAsPdf(html)
new Document(path, htmlOptions)renderer.RenderHtmlFileAsPdf(path)

コード移行の例

HTML文字列をPDFに変換

Aspose.PDFはHTMLをMemoryStreamでラップする必要がありますが、IronPDFは文字列を直接受け取ります。

Aspose.PDFの実装:

// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>";
        
        using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(htmlContent)))
        {
            var htmlLoadOptions = new HtmlLoadOptions();
            var document = new Document(stream, htmlLoadOptions);
            document.Save("output.pdf");
        }
        
        Console.WriteLine("PDF created from HTML string");
    }
}

IronPDFの実装:

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

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>";
        
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF created from HTML string");
    }
}

IronPDFはMemoryStreamラッパーを完全に排除し、よりクリーンで直感的なAPIを提供します。

HTMLファイルからPDFへ

Aspose.PDFの実装:

// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;

class Program
{
    static void Main()
    {
        var htmlLoadOptions = new HtmlLoadOptions();
        var document = new Document("input.html", htmlLoadOptions);
        document.Save("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}

IronPDFの実装:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}

複数のPDFをマージする

Aspose.PDFでは、手作業でページを反復する必要があります。 IronPDFは静的なMergeメソッドを提供します。

Aspose.PDFの実装:

// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;

class Program
{
    static void Main()
    {
        var document1 = new Document("file1.pdf");
        var document2 = new Document("file2.pdf");
        
        foreach (Page page in document2.Pages)
        {
            document1.Pages.Add(page);
        }
        
        document1.Save("merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}

IronPDFの実装:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");
        
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
        
        Console.WriteLine("PDFs merged successfully");
    }
}

テキスト抽出

Aspose.PDFの実装:

using Aspose.Pdf;
using Aspose.Pdf.Text;

var document = new Document("document.pdf");
var absorber = new TextAbsorber();

foreach (Page page in document.Pages)
{
    page.Accept(absorber);
}

string extractedText = absorber.Text;
Console.WriteLine(extractedText);

IronPDFの実装:

using IronPdf;

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

// Extract all text - one line!
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);

// Or extract from specific page
string page1Text = pdf.ExtractTextFromPage(0);

IronPDFはテキスト抽出を複数のステップから単一のメソッド呼び出しに簡素化します。

透かしの追加

Aspose.PDFの実装:

using Aspose.Pdf;
using Aspose.Pdf.Text;

var document = new Document("document.pdf");

var textStamp = new TextStamp("CONFIDENTIAL");
textStamp.Background = true;
textStamp.XIndent = 100;
textStamp.YIndent = 100;
textStamp.Rotate = Rotation.on45;
textStamp.Opacity = 0.5;
textStamp.TextState.Font = FontRepository.FindFont("Arial");
textStamp.TextState.FontSize = 72;
textStamp.TextState.ForegroundColor = Color.Red;

foreach (Page page in document.Pages)
{
    page.AddStamp(textStamp);
}

document.Save("watermarked.pdf");

IronPDFの実装:

using IronPdf;
using IronPdf.Editing;

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

// HTML-based watermark with full styling control
string watermarkHtml = @"
<div style='
    color: red;
    opacity: 0.5;
    font-family: Arial;
    font-size: 72px;
    font-weight: bold;
    text-align: center;
'>CONFIDENTIAL</div>";

pdf.ApplyWatermark(watermarkHtml,
    rotation: 45,
    verticalAlignment: VerticalAlignment.Middle,
    horizontalAlignment: HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");

IronPDF はHTML/CSS ベースの透かしを使用しており、使い慣れた Web テクノロジーを通じて完全なスタイル制御を提供します。

パスワード保護

Aspose.PDFの実装:

using Aspose.Pdf;

var document = new Document("document.pdf");
document.Encrypt("userPassword", "ownerPassword", DocumentPrivilege.ForbidAll, CryptoAlgorithm.AESx256);
document.Save("protected.pdf");

IronPDFの実装:

using IronPdf;

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

// Set passwords
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";

// Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;

pdf.SaveAs("protected.pdf");

IronPDFは強く型付けされたプロパティを通してパーミッションのきめ細かなコントロールを提供します。 その他のオプションについては、暗号化のドキュメントを参照してください。

ヘッダーとフッター

IronPDFの実装:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-family:Arial; font-size:12px;'>
            Company Header
        </div>",
    DrawDividerLine = true,
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-family:Arial; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true,
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Content here</h1>");
pdf.SaveAs("with_headers.pdf");

IronPDFは動的なページ番号付けのために{total-pages}のようなプレースホルダートークンをサポートします。 その他のオプションについては、headers and footers documentationを参照してください。

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

ページのインデックス変更

Aspose.PDFは1ベースのインデックスを使用しています。 IronPDFは0ベースのインデックスを使用しています:

// Aspose.PDF - 1-based indexing
var firstPage = doc.Pages[1];  // First page
var thirdPage = doc.Pages[3];  // Third page

//IronPDF- 0-based indexing
var firstPage = pdf.Pages[0];  // First page
var thirdPage = pdf.Pages[2];  // Third page

ライセンス ファイルからコード キーへ

コードベースのアクティベーションを用いて.licファイルライセンスを置き換えます:

// Aspose.PDF
var license = new Aspose.Pdf.License();
license.SetLicense("Aspose.Pdf.lic");

// IronPDF
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Or from environment variable
IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY");

.NETコアの統合

IronPDFパターン:

[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate")]
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");

        return File(pdf.BinaryData, "application/pdf", "report.pdf");
    }

    [HttpGet("generate-async")]
    public async Task<IActionResult> GeneratePdfAsync()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");

        return File(pdf.BinaryData, "application/pdf", "report.pdf");
    }
}

依存性注入の構成

// Program.cs
public void ConfigureServices(IServiceCollection services)
{
    // Set license once
    IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"];

    // Register renderer as scoped service
    services.AddScoped<ChromePdfRenderer>();
}

パフォーマンスの最適化

// 1. Reuse renderer instance
private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer();

// 2. Disable unnecessary features for speed
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false; // If not needed
renderer.RenderingOptions.WaitFor.RenderDelay(0);   // No delay
renderer.RenderingOptions.Timeout = 30000;          // 30s max

// 3. Proper disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
}

よくある移行の問題のトラブルシューティング

問題HtmlLoadOptions が見つかりません

次のChromePdfRendererに置き換えます:

// Remove this
var doc = new Document(stream, new HtmlLoadOptions());

// Use this
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlString);

課題TextFragmentAbsorber が見つかりません

直接テキスト抽出を使用します:

// Remove this
var absorber = new TextFragmentAbsorber();
page.Accept(absorber);
string text = absorber.Text;

// Use this
var pdf = PdfDocument.FromFile("doc.pdf");
string text = pdf.ExtractAllText();

課題PdfFileEditor.Concatenate が使用できません

次のPdfDocument.Merge()を使用してください:

// Remove this
var editor = new PdfFileEditor();
editor.Concatenate(files, output);

// Use this
var pdfs = files.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs(output);

移行後のチェックリスト

コードの移行が完了したら、以下を確認してください:

  • Aspose.PDF ライセンス ファイル (.lic) を削除します。
  • HTML レンダリング品質を確認します (CSS グリッド、Flexbox が正しく動作するはずです)
  • 大きなドキュメントと複雑な CSS を含むエッジケースをテストする
  • ページインデックス参照を更新(1 ベースから 0 ベースへ)
  • 該当する場合はDocker構成を更新します
  • 新しいライセンスキー設定でCI/CDパイプラインを更新する
  • チームの新しいパターンを文書化する

その他のリソース


Aspose.PDF からIronPDFへの移行によって、社内の HTML エンジンから Chromium ベースのレンダリングへのコードベースの移行が進みます。 MemoryStreamラッパーの削除、テキスト抽出の簡素化、CSS3の広範なサポートが即時の生産性向上をもたらし、IronPDFのコードベースのキーが.licファイル処理を置き換えます。

ご注意: Asposeは、各所有者の登録商標です。)] このサイトは、Aspose Pty Ltd.と提携しておらず、Aspose Pty Ltd.によって承認または後援されていません。すべての製品名、ロゴ、およびブランドは、それぞれの所有者の財産です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。