使用Selify和ChromeDriver,可自动调整打印页面的大小

Using Selenium and ChromeDriver, automatically scale the size of the page on print(使用Selify和ChromeDriver,可自动调整打印页面的大小)
本文介绍了使用Selify和ChromeDriver,可自动调整打印页面的大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个脚本,以便在Chrome中自动打印一组网页。如果我要手动打印它们,我会从比例下拉菜单中选择"自定义",然后在下面的输入栏中输入50。

当我使用Selnium和ChromeDriver自动批量打印这些页面时,我想不出需要传入哪些参数来复制此设置。

appState = { "recentDestinations": [{
                "id": "Save as PDF",
                "origin": "local",
                "account": "",
                "printing.scaling": 'Custom', # <== Does it go here?
             }],
             "selectedDestinationId": "Save as PDF",
             "version": 2,
             "printing.scaling": 'Custom',  # <== Or here?
           }
profile = { 'printing.print_preview_sticky_settings.appState': json.dumps(appState),
            'printing.print_header_footer': False,

            # So many different versions of things I have tried :-(
            'printing.scaling': 'Custom',
            'printing.scaling_type': 'Custom',
            'print_preview.scaling': 'Custom',
            'print_preview.scaling_type': 'Custom',
            'printing.custom_scaling': True,
            'printing.fit_to_page_scaling': 50,
            'printing.page_scaling': True,
          }
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', profile)
br = webdriver.Chrome(options=chrome_options)

上面显示的所有不同选项都是在阅读了大量Chromium源代码以获取提示后猜测的。

https://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/pref_names.cc?view=markup https://chromium.googlesource.com/chromium/src/+/master/printing/print_job_constants.cc https://chromium.googlesource.com/chromium/src/+/master/printing/print_job_constants.h

我没有线索了……有谁有什么主意吗?谢谢!

推荐答案

经过多次搜索和反复试验,我终于找到了解决方案!该设置位于appState词典中,名为";scalingType";,但它是一个枚举,令人恼火的是,它似乎只接受定义为here (Github mirror)或here (googlesource)的数字。3提供自定义缩放,然后您可以在";scaling";设置(它是一个字符串!)中定义它。因此,我的设置现在如下所示:

chrome_options = webdriver.ChromeOptions()
appState = {"recentDestinations": [{"id": "Save as PDF", "origin": "local", "account": ""}],
            "selectedDestinationId": "Save as PDF",
            "version": 2,
            "isHeaderFooterEnabled": False,
            "isLandscapeEnabled": True,
            "scalingType": 3,
            "scaling": "141"}
prefs = {'printing.print_preview_sticky_settings.appState': json.dumps(appState),
         'savefile.default_directory': BASE_DIR}
chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument('kiosk-printing')

driver = webdriver.Chrome(f'{BASE_DIR}\chromedriver.exe', options=chrome_options)

当前伸缩类型选项为:

  • 0:默认
  • 1:适合页面
  • 2:适合纸张
  • 3:自定义

但我使用这两个"适合"选项都没有成功。

更一般地,这些设置/选项中的大多数可以通过查看铬源和/或其包含文件夹的this file来确定。

这篇关于使用Selify和ChromeDriver,可自动调整打印页面的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)