Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
SeleniumHQ
GitHub Repository: SeleniumHQ/Selenium
Path: blob/trunk/rb/lib/selenium/webdriver/common/driver_extensions/prints_page.rb
1990 views
1
# frozen_string_literal: true
2
3
# Licensed to the Software Freedom Conservancy (SFC) under one
4
# or more contributor license agreements. See the NOTICE file
5
# distributed with this work for additional information
6
# regarding copyright ownership. The SFC licenses this file
7
# to you under the Apache License, Version 2.0 (the
8
# "License"); you may not use this file except in compliance
9
# with the License. You may obtain a copy of the License at
10
#
11
# http://www.apache.org/licenses/LICENSE-2.0
12
#
13
# Unless required by applicable law or agreed to in writing,
14
# software distributed under the License is distributed on an
15
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
# KIND, either express or implied. See the License for the
17
# specific language governing permissions and limitations
18
# under the License.
19
20
module Selenium
21
module WebDriver
22
module DriverExtensions
23
module PrintsPage
24
#
25
# Save a page as a PDF to the given path
26
#
27
# @example Save Printed Page
28
# driver.save_print_page('../printed_page.pdf')
29
#
30
# @param [String] path to where the pdf should be saved
31
#
32
# @api public
33
#
34
35
def save_print_page(path, **options)
36
File.open(path, 'wb') do |file|
37
content = Base64.decode64 print_page(**options)
38
file << content
39
end
40
end
41
42
#
43
# Return a Base64 encoded Print Page as a string
44
#
45
# @see https://w3c.github.io/webdriver/#print-page
46
#
47
# @api public
48
#
49
50
def print_page(**options)
51
options[:pageRanges] = Array(options.delete(:page_ranges)) || []
52
options[:shrinkToFit] = options.delete(:shrink_to_fit) { true }
53
54
@bridge.print_page(options)
55
end
56
end # PrintsPage
57
end # DriverExtensions
58
end # WebDriver
59
end # Selenium
60
61