将 pdf 书籍的背景颜色从白色永久更改为柔和的灰色

Permanently change the background color of a pdf book from white to a gentle grey

我正在阅读一本 800 页的 PDF 书,白色的背景颜色刺痛了我的眼睛。我想给它一个灰色阴影,for instance this background color

我想修改文件,而不是使用可以调整阅读颜色的查看器,因为我已经有一个首选的查看器。

我发现 通过这样的方式实现了它:

gs -o gray.pdf -sDEVICE=pdfwrite -g85x110 -c ".9 setgray 0 0 85 110 rectfill showpage"

pdftk book.pdf background gray.pdf output new-book.pdf

这可行,但是,它会使文件大小增加 3 倍,也许它会为每个页面添加背景。我想知道是否有更简单的方法来简单地更改背景颜色。

"a preferred viewer"

通常可能包括该选项,Acrobat、SumatraPDF、Okular(最广泛的选择)和其他几个有,它唯一的浏览器内置扩展可能不会。

@mkl 在 2014 年之前对类似的反对问题的回答中提到了这一点。

The backdrop is nominally white, although varying according to the actual properties of the medium. However, some conforming readers may choose to provide a different backdrop, ...

感兴趣的是您在其他地方推荐 SumatraPDF,它具有如此高级的选项设置,可以通过快捷方式从命令行启动(同意这不是那么容易)随意切换。

根据 OP 评论更简单

for Sumatra users who find this answer: an easier way is to go to Settings > Advanced Options, then change the "BackgroundColor =" value, to something like #eeeeee. – @ZYinMD

许多用户询问如何在两种状态之间切换,例如开关切换,因此对于那些最容易通过命令行或两个以上快捷方式设置的状态。

在版本 3.3.3 中工作,但命令行的短期问题影响 3.4.0/1(应该在 3.4.2 之后再次工作)

-set-color-range < text-hexcolor > < background-hexcolor > 所以在 "C:\Program Files\SumatraPDF\SumatraPDF.exe" -set-color-range #------ #------

等快捷方式的末尾

对于您开始使用的自然色

-set-color-range #000000 #ffffff

对于您开始使用的柔和背景颜色

-set-color-range #000000 #c0c0c0

但它会改变整个色域。您也可以使用热键 i 来反转它们。

另外 2 个高级背景选项也可用于页面边界外。

您可以使用带有 Ghostscript 的 BeginPage 过程来初始用颜色填充页面,然后呈现页面内容。如果您使用 pdfwrite 设备作为输出设备,那么您可以创建一个背景为 non-white.

的新 PDF 文件

使用此内容在磁盘上创建一个文本文件(例如 gray.ps)

%!
<<
/BeginPage
{
pop
0.9 setgray
0 0
currentpagedevice /PageSize get
aload pop rectfill
}
>> setpagedevice

然后像这样调用 Ghostscript:

gs -sDEVICE=pdfwrite -o out.pdf gray.ps in.pdf

你应该会发现'out.pdf'和in.pdf的内容是一样的,只是页面背景变成了浅灰色。对于更深的灰色,将 setgray 的值从 0.9 更改为 0 = 黑色,1.0 = 白色。

正如我所说,如果 PDF 文件做了一些事情,例如用白色填充整个页面,这将破坏背景绘制,因为它会覆盖背景。但我怀疑这也能击败观众背景的任何诡计。

在这种情况下生成的 PDF 将适用于任何查看器,因为 PDF 文件现在具有背景 'built in'。