Chromium 浏览器不允许设置“打印到文件”的默认纸张尺寸

Chromium 浏览器不允许设置“打印到文件”的默认纸张尺寸

在 Chromium 中,与其他 Web 浏览器一样,有一个打印功能,其中包括打印到物理打印机,以及“打印到文件”功能。

物理打印机的默认纸张尺寸似乎设置为与 CUPS 本身的打印机设置相同的默认纸张尺寸。所以这些都很好。

但是,“打印到文件”选项的默认纸张尺寸设置为“US Letter”,我不知道如何更改它。这已经是询问超级用户两年半前,在撰写本文时,但没有给出合理的答案。我找不到任何明显的问题或错误。我错过了什么吗?

我(可能是天真的)期望 Chromium 会从默认系统设置中获取它。最明显的设置是/etc/papersize,它恰好被设置为letter。我把它改为a4并重新启动浏览器,但没有任何区别。

我使用的 Chromium 版本是35.0.1916.153-1~deb7uDebian 7.6(wheezy),这是该版本的当前默认版本。

更新:将此报告给 Chromium 问题跟踪器 Chromium 浏览器不允许设置“打印到文件”的默认纸张尺寸,但我并没有屏住呼吸等待答复。

更新 2:@don_crissti 指出 Chromium 从 LC_PAPER 的“打印到文件”中获取了默认纸张尺寸,或者无论如何,它是它所关注的内容之一。我验证了这一点。我之前在网上看到过一些关于此的内容,包括这个 Mozilla 错误报告有我们自己的@derobert 的条目,但没有足够认真地对待这种可能性来检查它。

当然,这里还有一个 Debian 错误报告:使用 LC_PAPER

对于任何能够在 Chromium 源中记录如何完成此操作的人来说,可以加分。

答案1

它实际上是 GTK2(Chromium 使用的小部件工具包,以及许多其他程序)的默认设置。

默认值确定于gtk/gtkpapersize.c, 功能gtk_paper_size_get_default。按照优先顺序,它从以下位置获取纸张尺寸:

  1. nl_langinfo,在可以返回纸张尺寸的系统上。 AFAIK,Linux/glibc 不是其中之一,因此此步骤与 Linux 无关。它只会将 A4 或 Letter 作为默认尺寸,忽略任何其他尺寸(并继续执行其余步骤以获得 A4 或 Letter)。
  2. 接下来,它将获取区域设置信息。如果可用,它将使用LC_PAPER类别,否则,它将使用LC_MESSAGES。 Linux/glibc 有LC_PAPER,所以这就是它将使用的类别。根据 Single Unix 规范,区域设置信息作为“与区域设置的指定类别相关联的字符串”返回。简而言之,类似于en_US.UTF-8.
  3. 如果它没有获得区域设置字符串,则假定为 A4,然后完成。
  4. 否则,它将区域设置字符串与使用 US Letter 的地点的国家/地区代码硬编码列表进行比较。这些是(至少在我的 gtk2 版本中)BZ、CA、CL、CO、CR、GT、MX、NI、PA、PH、PR、SV、US 和 VE。有评论说该列表来自Unicode 领土语言信息如果区域设置在该列表中,则返回 Letter。否则,返回 A4。

附带说明一下,区域设置是在多个位置配置的。对于LC_PAPER类别来说,搜索顺序是(根据man 7 locale): 1、LC_ALL环境变量; 2、LC_PAPER环境变量; 3、LANG环境变量。

答案2

我认为Chromium根据您当前的区域设置设置默认纸张尺寸。如果您从带有一些欧元设置的终端启动它LC_PAPER,例如

LC_PAPER=fr_FR.utf8 chromium

或者

LC_PAPER=en_GB.utf8 chromium

它应该默认为A4when Printing to File

相关内容