繁体   English   中英

更改PDF文件的文本和背景颜色

[英]Changing the text and background color of a PDF file

我想在PDF文档中以编程方式更改背景颜色和文本颜色,以便在晚上更好地阅读(有点像Adobe Reader: 编辑 - >首选项 - >辅助功能 - >替换文档颜色 )。

是否有适用于Windows的良好命令行工具或API可以做到这一点?

到目前为止,我还没有找到任何。 如果需要将新着色的PDF保存到新文件中,则可以。

没有办法直接这样做,没有(自由软件或免费软件)工具我知道。 (因为在一般情况下,您必须更改PDF页面的所有颜色,而不仅仅是背景,因此您仍然可以有一些对比度和颜色差异。)

您为Adobe Reader描述的内容不会更改PDF文件本身,它会更改应用程序呈现页面的方式(通过反转颜色或类似方式)。 在查看期间和之后,PDF保持不变。

但是,您可以通过将适当的ICC颜色配置文件应用于输入PDF来实现类似的功能,并在(最新版本的)Ghostscript的帮助下生成一个新的输出PDF。

问题仍然存在:对于您的目的,什么 “合适的”ICC颜色配置文件?


我很快就考虑在pdftk ... background ...命令行的帮助下将灰色背景应用于PDF。 但这可能会使一些或许多PDF不可读。 黑色背景肯定会让它变得难以理解,因为大多数文字是黑色的并且会保持不变。)

要创建可用作灰色背景的PDF页面(A4大小),可以使用Ghostscript: gs -o gray.pdf -sDEVICE=pdfwrite -g5950x8420 -c ".8 setgray 0 0 595 842 rectfill showpage"

然后将其应用于原始PDF(A4): pdftk original.pdf background gray.pdf output orig-with-backgr.pdf

请注意,这只会更改这些页面的背景(或页面的那些区域),其中原始背景是透明的, 因为大多数基于文本的PDF都是。 不适用于背景为不透明白色或彩色的页面或区域。)


在ImageMagick的帮助下,您还可以非常轻松地实现永久的颜色变化(反色)。 但是,这将同时咀嚼并制作好的矢量PDF文件,将它们转换为完整的光栅图像页面: convert nice.pdf -alpha off -invert inverted-colors-ugly-raster.pdf


最后,这是一种在Ghostscript的帮助下完成颜色反转的相当不可靠的方法。 它为输出PDF文件设置了colortransfer函数:

gs -o output.pdf     \
   -sDEVICE=pdfwrite \
   -c "{1 exch sub}{1 exch sub}{1 exch sub}{1 exch sub} setcolortransfer" \
   -f input.pdf

这是不可靠的,因为不是每个PDF查看器都会尊重该设置 我过去曾经测试了几次......

这些观众确实表现出反转的颜色:

  1. Adobe Reader
  2. Adobe Acrobat
  3. GV
  4. Ghostscript的/ GS
  5. Chrome的原生PDF渲染器( 'pdfium'

这些不显示倒置颜色:

  1. Chrome与PDF.js
  2. Firefox与PDF.js
  3. 迷走星球
  4. MuPDF

如果OP 真的不需要永久更改PDF文档颜色,但只需要Acrobat以外的PDF 查看器可以做类似的更改显示的颜色...

MuPDF: MuPDF是一个轻量级的PDF查看器(除此之外)。 对于任何文档打开,它可以通过i的简单笔划反转显示的颜色。 MuPDF也适用于Windows(以及iOS,Android,OSX和Linux)。 (它是由给我们Ghostscript的同一家公司制作的)。

MuPDF截图:“普通”视图(左)和“倒”视图(右)

SumatraPDF:这是一款非常受欢迎的Windows替代PDF查看器。 它的PDF渲染引擎基于MuPDF。 在演示模式下,它将背景更改为黑色。 在演示模式下按w ,它会将背景更改为白色。 (我不认为它也可以反转所有颜色,但我现在没有最新版本可供检查。)对于启动时,在命令行中添加-invert-colors ,它将反转渲染文档的颜色。

Zathura:适用于Linux和OSX的轻量级PDF查看器,可通过类似Vim的键盘快捷键进行控制。 ctrl + r将重新着色任何打开文档的渲染。 背景将变为暗,文本将变为亮灰色(但是它不会反转a,比如蓝色文本变为黄色,就像MuPDF那样)。 我不确定它是否也可以在Windows上使用。

Evince: Gnome PDF查看器,适用于Linux,OSX和Windows。 它也可以反转打开文档的颜色; 键盘快捷键是ctrl + i

XPDF: XPDF是Unix + Linux的一个古老的PDF查看器(不确定是否有可用的Windows版本 - 可能在Cygwin中)。 它在命令行中有一个启动选项: xpdf -rv -papercolor "#333333" file.pdf将反转颜色( -rv用于反向视频-papercolor允许您将背景更改为与纯黑色不同的颜色[如任何颜色]倒白会变成])。

当你要求API时,我会在混合中增加一个额外的可能性。 实际上可以为Adobe Acrobat编写一个插件(对于Adobe Reader也应该是可能的,但Reader插件更难)会干扰显示。

很久以前,我为Enfocus PitStop编写代码,为Adobe Acrobat内部的PDF文件实现线框渲染模式。 单击按钮,显示变为线框,再次单击,即可获得正常视图。 这是有效的,因为您可以(作为插件)修改Acrobat绘制的显示列表(对象列表)。

这意味着要绘制特殊显示模式,您可以创建一个新的显示列表(或修改现有的显示列表),使其在背面有一个所需颜色的矩形,然后修改显示中所有对象的颜色列出以满足您的需求。

这是相对复杂的,因为它更复杂的是 - 如果您不希望您的更改影响磁盘上的PDF文件,您必须拦截无数的Acrobat通知并撤消您的更改。 例如,如果用户在显示模式下查看时尝试保存PDF文档,则必须确保向您发出警告并在保存期间撤消更改。 Adobe Acrobat使这成为可能,因为它在保存过程之前和之后向您发送通知,但它仍然是一项严肃的工作,以确保不会搞砸任何事情。

但这是一种绝对酷炫且非常灵活的方式来实现您所追求的目标。 只要确保你有超过几周的时间来实现它:)

  1. 安装nodejs。
  2. npm i -g serve
  3. 在带有pdfs的目录中运行: serve
  4. 在Chrome中打开http:// localhost:5000并单击某个文件。
  5. 安装Chrome扩展程序Dark Reader
  6. Dark Reader > Toggle localhost:5000

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM