SATOXのシテオク日記

~ふもっふ、ふもふも~

メモ:C# WebDriverを使ってウェブサイト(html)をPDF出力

急に必要になったのでメモ。 C# Slenium.WebDriver(chrome)を使ったPDFレンダリング出力方法についてのメモ。

  1. プロジェクトにnugetで以下をインストール
  2. urlをPDF出力(outputPdf)する関数PrintToPdfは以下
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

public void PrintToPdf(String url, String outputPdf)
{
    // WebDriver作成
    var options = new ChromeOptions();
    options.AddArgument("--headless"); // ヘッドレス
    var driverService = ChromeDriverService.CreateDefaultService();
    driverService.HideCommandPromptWindow = true; // コマンドプロンプト非表示

    using (var driver = new ChromeDriver(driverService, options)) {
        // サイトを開く
        driver.Navigate().GoToUrl(url);
        // 印刷設定
        var printOptions = new PrintOptions() {
            Orientation = PrintOrientation.Portrait,
            OutputBackgroundImages = true,
        };
        //printOptions.AddPageToPrint(5); // ページ設定
        // 印刷
        var print = driver.Print(printOptions);
        print.SaveAsFile(outputPdf); // PDF出力

        driver.Quit();
    }
}

コマンドプロンプトを非表示にしてますが、タイミングによって一瞬表示されちゃうのがイマイチ。

https://www.selenium.dev/ja/