ページを印刷

ウェブページの印刷は、情報を共有したり、アーカイブを維持したりするためによく行われるタスクです。Selenium は、PrintOptions、PrintsPage、browsingContext クラスを通じてこのプロセスを簡素化し、ウェブページの印刷を自動化するための柔軟で直感的なインターフェースを提供します。これらのクラスを使用すると、ページのレイアウト、余白、スケーリングなどの印刷設定を構成して、出力が特定の要件を満たすようにすることができます。

設定

向き

getOrientation() および setOrientation() メソッドを使用すると、ページの向き (PORTRAIT または LANDSCAPE) を取得/設定できます。

    public void TestOrientation() 
    {
        driver.get("https://selenium.dokyumento.jp/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setOrientation(PrintOptions.Orientation.LANDSCAPE);
        PrintOptions.Orientation current_orientation = printOptions.getOrientation();
    }
        public void TestOrientation()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dokyumento.jp");
            PrintOptions printOptions  = new PrintOptions();
            printOptions.Orientation = PrintOrientation.Landscape;
            PrintOrientation currentOrientation = printOptions.Orientation;
        }
    driver.get("https://selenium.dokyumento.jp/")
    print_options = PrintOptions()
    print_options.orientation = "landscape" ## landscape or portrait

範囲

getPageRanges() および setPageRanges() メソッドを使用すると、印刷するページの範囲 (例: "2-4") を取得/設定できます。

    public void TestRange() 
    {
        driver.get("https://selenium.dokyumento.jp/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setPageRanges("1-2");
        String[] current_range = printOptions.getPageRanges();
    }
        public void TestRange()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dokyumento.jp");
            PrintOptions printOptions  = new PrintOptions();
            printOptions.AddPageRangeToPrint("1-3"); // add range of pages
            printOptions.AddPageToPrint(5); // add individual page
        }   
    driver.get("https://selenium.dokyumento.jp/")
    print_options = PrintOptions()
    print_options.page_ranges = ["1, 2, 3"] ## ["1", "2", "3"] or ["1-3"]

サイズ

getPaperSize() および setPaperSize() メソッドを使用すると、印刷する用紙サイズ (例: "A0"、"A6"、"Legal"、"Tabloid" など) を取得/設定できます。

    public void TestSize() 
    {
        driver.get("https://selenium.dokyumento.jp/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setScale(.50);
        double current_scale = printOptions.getScale();
    }
        public void TestSize()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dokyumento.jp/");
            PrintOptions printOptions = new PrintOptions();
            PrintOptions.PageSize currentDimensions = printOptions.PageDimensions;
        }
    driver.get("https://selenium.dokyumento.jp/")
    print_options = PrintOptions()
    print_options.scale = 0.5 ## 0.1 to 2.0``

余白

getPageMargin() および setPageMargin() メソッドを使用すると、印刷するページの余白サイズ (上、下、左、右の余白) を設定できます。

    {
        driver.get("https://selenium.dokyumento.jp/");
        PrintOptions printOptions = new PrintOptions();
        PageMargin margins = new PageMargin(1.0,1.0,1.0,1.0);
        printOptions.setPageMargin(margins);
        double topMargin = margins.getTop();
        double bottomMargin = margins.getBottom();
        double leftMargin = margins.getLeft();
        double rightMargin = margins.getRight();
    }
        public void TestMargins()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dokyumento.jp/");
            PrintOptions printOptions = new PrintOptions();
            PrintOptions.Margins currentMargins = printOptions.PageMargins;
        }
    driver.get("https://selenium.dokyumento.jp/")
    print_options = PrintOptions()
    print_options.margin_top = 10
    print_options.margin_bottom = 10
    print_options.margin_left = 10
    print_options.margin_right = 10

スケール

getScale() および setScale() メソッドを使用すると、印刷するページのスケールを取得/設定できます (例: 1.0 は 100% またはデフォルト、0.25 は 25% など)。

    public void TestScale() 
    {
        driver.get("https://selenium.dokyumento.jp/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setScale(.50);
        double current_scale = printOptions.getScale();
    }
        public void TestScale()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dokyumento.jp/");
            PrintOptions printOptions = new PrintOptions();
            printOptions.ScaleFactor = 0.5;
            double currentScale = printOptions.ScaleFactor;
        }
    driver.get("https://selenium.dokyumento.jp/")
    print_options = PrintOptions()
    print_options.scale = 0.5 ## 0.1 to 2.0
    current_scale = print_options.scale

背景

getBackground() および setBackground() メソッドを使用すると、背景色と画像を表示するかどうか (boolean の true または false) を取得/設定できます。

    public void TestBackground() 
    {
        driver.get("https://selenium.dokyumento.jp/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setBackground(true);
        boolean current_background = printOptions.getBackground();
    }
        public void TestBackgrounds()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dokyumento.jp/");
            PrintOptions printOptions = new PrintOptions();
            printOptions.OutputBackgroundImages = true;
            bool currentBackgrounds = printOptions.OutputBackgroundImages;
        }
    driver.get("https://selenium.dokyumento.jp/")
    print_options = PrintOptions()
    print_options.background = True ## True or False

ShrinkToFit

getShrinkToFit() および setShrinkToFit() メソッドを使用すると、ページ上のコンテンツに合わせてページを縮小するかどうか (boolean の true または false) を取得/設定できます。

    public void TestShrinkToFit() 
    {
        driver.get("https://selenium.dokyumento.jp/");
        PrintOptions printOptions = new PrintOptions();
        printOptions.setShrinkToFit(true);
        boolean current_shrink_to_fit = printOptions.getShrinkToFit();
    }
        public void TestShrinkToFit()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dokyumento.jp/");
            PrintOptions printOptions = new PrintOptions();
            printOptions.ShrinkToFit = true;
            bool currentShrinkToFit = printOptions.ShrinkToFit;
        }
    driver.get("https://selenium.dokyumento.jp/")
    print_options = PrintOptions()
    print_options.shrink_to_fit = True ## True or False

印刷

PrintOptions を設定したら、ページを印刷する準備が整いました。これを行うには、print 関数を呼び出すと、ウェブページの PDF 表現が生成されます。生成された PDF は、後で使用または配布するためにローカルストレージに保存できます。PrintsPage() を使用すると、print コマンドは PDF データを base64 エンコード形式で返し、これをデコードして目的の場所にファイルとして書き込むことができます。BrowsingContext() を使用すると、String が返されます。

現在、選択した言語に応じて複数の実装が存在する場合があります。たとえば、Java では、BrowsingContext() または PrintsPage() のいずれかを使用して印刷できます。どちらもパラメータとして PrintOptions() オブジェクトを取ります。

注: BrowsingContext() は Selenium の BiDi 実装の一部です。BiDi を有効にする方法については、Enabling Bidi を参照してください。

PrintsPage()

    public void PrintWithPrintsPageTest() 
    {
        driver.get("https://selenium.dokyumento.jp/");
        PrintsPage printer = (PrintsPage) driver;
        PrintOptions printOptions = new PrintOptions();
        Pdf printedPage = printer.print(printOptions);
        Assertions.assertNotNull(printedPage);
    }

BrowsingContext()

    public void PrintWithBrowsingContextTest() 
    {
        BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle());
        driver.get("https://selenium.dokyumento.jp/selenium/web/formPage.html");
        PrintOptions printOptions = new PrintOptions();
        String printPage = browsingContext.print(printOptions);
        Assertions.assertTrue(printPage.length() > 0);
    }
        public void PrintWithPrintsPageTest() 
        {
            WebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://selenium.dokyumento.jp/");
            PrintOptions printOptions = new PrintOptions();
            PrintDocument printedPage = driver.Print(printOptions);
            Assert.IsTrue(printedPage.AsBase64EncodedString.StartsWith("JVBER"));
        }

print_page()

    driver.get("https://selenium.dokyumento.jp/")
    print_options = PrintOptions()
    pdf = driver.print_page(print_options)