IRONSOFTWAREHOME
ビデオ

IronPDFを使用してPDFでWebGLコンテンツをレンダリング

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

Microsoft脚本家for .NET からIronPDFへの移行は、PDF生成ワークフローをブラウザ自動化テストフレームワークから専用のPDFライブラリへ移行させます。 このガイドは、非同期ブラウザライフサイクル管理と個別のplaywright installブラウザバイナリダウンロードステップを削除するステップバイステップの移行経路を提供します。

なぜPlaywrightからIronPDFに移行するのか

.NET用Playwrightを理解する

Playwright for .NET (NuGet Microsoft.Playwright、MITライセンス)は、Microsoftのブラウザ自動化フレームワークで、主にChromium、Firefox、およびWebKitを横断するエンドツーエンドテストのために設計されています。 その典型的なワークロードは対話形式であり、ボタンをクリックし、フォームを記入し、ネットワーク要求を傍受し、スクリーンショットを撮り、クロスブラウザーの互換性を検証します。

PlaywrightにおけるPDF生成はPage.PdfAsync()を介して公開される二次機能で、Chromiumのみでサポートされます—FirefoxとWebKitはPDF出力を実装していません。 出力はブラウザの印刷からPDFへのパス(Ctrl+Pに相当)を使用しており、レイアウト、背景、およびページ構成に影響を与えます。

  • テスト優先のアーキテクチャであり、ヘッドレスなドキュメント生成には最適化されていません
  • ブラウザバイナリ(ChromiumおよびオプションでFirefoxとWebKit)はplaywright installを介して個別にインストールする必要があります。
  • テスト自動化ワークフロー向けに設計された非同期API
  • PDF/A、PDF/UA、デジタル署名、ウォーターマーク、マージ、セキュリティ機能が組み込まれていません

PDF用にPlaywrightを使用する際の考慮事項

Playwrightは、ドキュメント生成ではなく、エンドツーエンドのテスト用に設計されています。 PDF用にリパーパスする際のいくつかの実際的な影響:

  1. **playwright installによるブラウザバイナリ。**Playwrightのデフォルト設定はブラウザバイナリ(Chromium、Firefox、WebKit)をダウンロードし、これは厳しいリソースまたは展開制約を持つ環境において考慮する点となるかもしれません。

  2. 非同期ブラウザ/コンテキスト/ページモデル。 開発者は、ブラウザコンテキストとページライフサイクル管理を含む廃止について慣れている必要があります。

  3. テスト優先のアーキテクチャ であり、高ボリュームのドキュメント生成には最適化されていません。

  4. 印刷からPDFへの意味 は Ctrl+P のブラウザ印刷と同等です。 レイアウトはリフローされ、背景はデフォルトで省略されます。

  5. **PDF/A または PDF/UA 出力なし。**脚本家は PDF/A(アーカイブ用)や PDF/UA(アクセシブル用)に準拠したドキュメントを生成しません。 セクション 508、EU のアクセシビリティ指令、または長期保存の要件には専用のPDFライブラリが通常必要です。

  6. レンダリングごとのブラウザリソース使用 は各PDFでブラウザコンテキストとページを起動します。

設定領域

Playwright はテスト自動化に向けた設定領域を公開しています。 PDF生成だけに使用する際に最も関連のある部分:

ブラウザインストール手順:

# Separate installation step before first use
playwright install            # Downloads browser binaries (Chromium, Firefox, WebKit)
# Or for a single browser:
playwright install chromium   # Chromium-only (the only engine that supports PDF output)
SHELL

ブラウザ起動構成:

// Testing-focused launch options for PDF generation
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
    Headless = true,  // Required for server environments
    Args = new[] { "--disable-gpu", "--no-sandbox" } // Linux/Docker configs
});

テスト固有の構成オプション:

  • Headless:本番環境のためにヘッドレスモードを構成する必要があります(テストのためにはデフォルトでヘッデッドになっています)
  • SlowMo:テストのタイミング遅延(PDF生成には無関係)
  • Devtools:テストツールの構成(ドキュメントには不要)
  • ExecutablePath:テスト環境のカスタムブラウザパス
  • Proxy:テストのためのネットワークインターセプション(不要な負担)
  • DownloadsPath:テストアーティファクト管理
  • TracesDir:テスト実行トレース

ブラウザコンテキスト管理:

// Complex context lifecycle from testing paradigm
var context = await browser.NewContextAsync(new BrowserNewContextOptions
{
    ViewportSize = new ViewportSize { Width = 1920, Height = 1080 },
    UserAgent = "custom-user-agent",
    Locale = "en-US",
    TimezoneId = "America/New_York"
});
var page = await context.NewPageAsync();
// ... generate PDF ...
await context.CloseAsync();  // Manual cleanup required
await browser.CloseAsync();  // Manual cleanup required

マルチブラウザの領域:

//脚本家supports launching multiple engines
await playwright.Chromium.LaunchAsync();  // For Chromium-based testing (and PDF output)
await playwright.Firefox.LaunchAsync();   // For Firefox testing
await playwright.Webkit.LaunchAsync();    // For WebKit/Safari testing
// Note: Page.PdfAsync() is implemented on Chromium only.
C#

IronPDF: 単一バンドルレンダラ

// No separate browser-binary install or context management
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

IronPDFはNuGetパッケージ内にレンダリングエンジンを搭載しているため、個別のplaywright installステップやブラウザ/コンテキスト/ページのライフサイクル管理が不要です。

PlaywrightとIronPDFのパフォーマンス比較

メトリック脚本家IronPDF
主な目的E2Eブラウザ自動化フレームワークPDFドキュメント生成
デザイン哲学テスト優先; PDFは副次的な機能専用のPDFライブラリ
NuGetパッケージMicrosoft.Playwright (MIT)IronPdf (商業用)
ブラウザ・バイナリステップ個別のplaywright installダウンロードNuGetパッケージにバンドルされています
PDFをサポートするエンジンChromiumのみ(Firefox / WebKitはPage.PdfAsync()を実装していない)単一のバンドルされたChromiumベースのレンダラ
ファーストレンダリング(コールドスタート)4.5秒2.8秒
後続レンダリング3.8-4.1秒0.8-1.2秒
変換あたりのメモリ280-420MB80~120MB
APIスタイル非同期ブラウザ/コンテキスト/ページライフサイクル同期または非同期 renderer-based
初期化CreateAsync() + LaunchAsync() + NewPageAsync()new ChromePdfRenderer()
PDF/Aサポート不可サポート対象
PDF/UAアクセシビリティ不可サポート対象
デジタル署名不可サポート対象
PDFの編集不可マージ、分割、スタンプ、編集
サポートモデルコミュニティSLA付き商用

IronPDFは、特にPDF生成のために開発されており、ドキュメント中心のAPIサーフェスを持っています。 単一のバンドルされたChromiumベースのレンダリングエンジンを使用しており、同期と非同期の操作の両方をサポートしています。このため、PDF出力が目的でブラウザの相互作用を求めていない場合、開発者にとってより単純なメンタルモデルを提供します。

結論

Playwrightは、主なワークロードがブラウザ自動化やクロスブラウザテストの時、PDF出力が時折の副次タスクである場合に適しています。 PDF生成が主なワークロードである場合には、IronPDFがより適しており、個別のブラウザバイナリのインストールステップがなく、ブラウザ/コンテキスト/ページライフサイクルの管理が不要であり、PDF/A、デジタル署名、セキュリティ、マージなどのドキュメント機能がすぐに利用可能です。


始める前に

前提条件

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

NuGetパッケージの変更

# Remove Playwright
dotnet remove package Microsoft.Playwright

# Remove the downloaded browser binaries
# Delete the .playwright folder in your project (and any cached binaries
# under your user profile, e.g. %USERPROFILE%\.cache\ms-playwright on Windows)

# Add IronPDF
dotnet add package IronPdf
SHELL

IronPDFではplaywright installが不要です - レンダリングエンジンは自動的にバンドルされます。

ライセンス構成

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

完全な API リファレンス

名前空間の変更

// Before: Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

コア API マッピング

Playwright APIIronPDF API
Playwright.CreateAsync()new ChromePdfRenderer()
playwright.Chromium.LaunchAsync()不要
browser.NewPageAsync()不要
page.GotoAsync(url)renderer.RenderUrlAsPdf(url)
page.SetContentAsync(html) + page.PdfAsync()renderer.RenderHtmlAsPdf(html)
page.CloseAsync()不要
browser.CloseAsync()不要
PagePdfOptions.FormatRenderingOptions.PaperSize
PagePdfOptions.MarginRenderingOptions.MarginTop/Bottom/Left/Right
PagePdfOptions.DisplayHeaderFooterTextFooter
PagePdfOptions.HeaderTemplateRenderingOptions.HtmlHeader
PagePdfOptions.FooterTemplateRenderingOptions.HtmlFooter
<span class='pageNumber'>{page}

コード移行の例

例1: HTML文字列からPDFへの変換

ビフォア(脚本家):

// NuGet: Install-Package Microsoft.Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var playwright = await Playwright.CreateAsync();
        var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        
        string html = "<h1>Hello World</h1><p>This is a test PDF.</p>";
        await page.SetContentAsync(html);
        await page.PdfAsync(new PagePdfOptions { Path = "output.pdf" });
        
        await browser.CloseAsync();
    }
}

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        
        string html = "<h1>Hello World</h1><p>This is a test PDF.</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

この例は、基本的なアーキテクチャの違いを示しています。 Playwrightは5つの非同期操作を必要とします:CloseAsync()による明示的なブラウザクリーンアップ。

IronPDFはこの複雑さをすべて排除します:SaveAs()します。 非同期パターン、ブラウザライフサイクル、クリーンアップコードはありません。 IronPDFのアプローチは、よりきれいな構文と最新 for .NETアプリケーションとのより良い統合を提供します。 包括的な例については、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

ビフォア(脚本家):

// NuGet: Install-Package Microsoft.Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var playwright = await Playwright.CreateAsync();
        var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        
        await page.GotoAsync("https://www.example.com");
        await page.PdfAsync(new PagePdfOptions 
        { 
            Path = "webpage.pdf",
            Format = "A4"
        });
        
        await browser.CloseAsync();
    }
}

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

PlaywrightはPdfAsync()を続けます。 IronPDFは1回の呼び出しでナビゲーションとPDF生成を処理する単一のRenderUrlAsPdf()メソッドを提供します。 PlaywrightはRenderingOptions.PaperSizeを用いて用紙サイズを設定します。 詳しくは、チュートリアルをご覧ください。

例3: 余白を使ったカスタムページサイズ

ビフォア(脚本家):

// NuGet: Install-Package Microsoft.Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var playwright = await Playwright.CreateAsync();
        await using var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        await page.SetContentAsync("<h1>Custom PDF</h1><p>Letter size with margins</p>");
        await page.PdfAsync(new PagePdfOptions 
        { 
            Path = "custom.pdf",
            Format = "Letter",
            Margin = new Margin { Top = "1in", Bottom = "1in", Left = "0.5in", Right = "0.5in" }
        });
    }
}

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.MarginTop = 25;
        renderer.RenderingOptions.MarginBottom = 25;
        renderer.RenderingOptions.MarginLeft = 12;
        renderer.RenderingOptions.MarginRight = 12;
        var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Letter size with margins</p>");
        pdf.SaveAs("custom.pdf");
    }
}

Playwrightは文字列ベースの余白値("0.5in")を使用し、IronPDFは数値のミリメートル値を使用します。 変換は1インチ = 25.4mmですので、12になります。 PlaywrightのPaperSize = PdfPaperSize.Letterに対応しています。

例4: ヘッダー、フッター、カスタム設定

ビフォア(脚本家):

// NuGet: Install-Package Microsoft.Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var playwright = await Playwright.CreateAsync();
        var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        
        string html = "<h1>Custom PDF</h1><p>With margins and headers.</p>";
        await page.SetContentAsync(html);
        
        await page.PdfAsync(new PagePdfOptions
        {
            Path = "custom.pdf",
            Format = "A4",
            Margin = new Margin { Top = "1cm", Bottom = "1cm", Left = "1cm", Right = "1cm" },
            DisplayHeaderFooter = true,
            HeaderTemplate = "<div style='font-size:10px; text-align:center;'>Header</div>",
            FooterTemplate = "<div style='font-size:10px; text-align:center;'>Page <span class='pageNumber'></span></div>"
        });
        
        await browser.CloseAsync();
    }
}

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.TextHeader.CenterText = "Header";
        renderer.RenderingOptions.TextFooter.CenterText = "Page {page}";
        
        string html = "<h1>Custom PDF</h1><p>With margins and headers.</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom.pdf");
    }
}

この例では、ヘッダーとフッターのプレースホルダーの構文の違いを示しています。 PlaywrightはHTMLクラスベースのプレースホルダー({page})を使用します。 Playwrightはヘッダー/フッターを有効にするためにDisplayHeaderFooter = trueを必要としますが、IronPDFはヘッダー/フッターの内容を設定すると自動的にそれらを有効にします。


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

非同期から同期への変換

Playwrightは、全体を通してasync/awaitを必要とします; IronPDFは同期操作をサポートしています:

// Playwright: Async required
public async Task<byte[]> GeneratePdfAsync(string html)
{
    using var playwright = await Playwright.CreateAsync();
    await using var browser = await playwright.Chromium.LaunchAsync();
    var page = await browser.NewPageAsync();
    await page.SetContentAsync(html);
    return await page.PdfAsync();
}

// IronPDF: Sync is simpler
public byte[] GeneratePdf(string html)
{
    var renderer = new ChromePdfRenderer();
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}

マージン単位の変換

Playwrightは文字列単位を使用します; IronPDFはミリメートルの数値を使用しています:

脚本家IronPDF (mm)
"1in"25
"0.5in"12
"1cm"10

ヘッダー/フッター プレースホルダーの変換

劇作家クラスIronPDF プレースホルダー
<span class='pageNumber'>{page}
<span class='totalPages'>{total-pages}
<span class='date'>{date}
<span class='title'>{html-title}

ブラウザーのライフサイクルの排除

すべてのブラウザ管理コードを削除してください:

// Playwright: Explicit cleanup required
await page.CloseAsync();
await browser.CloseAsync();
playwright.Dispose();

// IronPDF: No disposal needed - just use the renderer
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

移行後の新機能

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

PDFマージ

var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");

ウォーターマーク

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");

パスワード保護

pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "readonly";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

デジタル署名

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);

PDF/A準拠

pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3b);

移行チェックリスト

移行前

-脚本家PDF生成コードをすべて特定する

  • ドキュメントの余白値(インチ/cmをミリメートルに変換)
  • 変換のためのヘッダー/フッターのプレースホルダー構文に注意してください
  • IronPDFからIronPDFライセンスキーを取得します

パッケージの変更

  • Microsoft.Playwright NuGetパッケージを削除します
  • .playwrightフォルダを削除します(およびユーザープロファイル下にあるキャッシュされたPlaywrightブラウザバイナリ)
  • IronPdf NuGetパッケージをインストールします:dotnet add package IronPdf

コードの変更

  • 名前空間のインポートを更新する
  • 非同期ブラウザライフサイクルをChromePdfRendererに置き換えます
  • page.SetContentAsync() + RenderHtmlAsPdf()に変換します
  • page.GotoAsync() + RenderUrlAsPdf()に変換します
  • マージン文字列をミリメートル値に変換する
  • ヘッダー/フッターのプレースホルダー構文を変換する
  • すべてのブラウザ/ページ破棄コードを削除します
  • アプリケーションの起動時にライセンスの初期化を追加

移行後

  • PDF出力の視覚的な比較
  • ページ番号付きのヘッダー/フッターのレンダリングを検証する
  • 余白とページサイズの精度をテストする
  • 必要に応じて新しい機能(セキュリティ、透かし、結合)を追加します

ご注意: Playwrightはその所有者の登録商標です。 このサイトは、マイクロソフトと提携しているわけでも、マイクロソフトが推奨しているわけでも、マイクロソフトがスポンサーしているわけでもありません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。