鉴于黑白PDF,我如何反转颜色,使背景为黑色,其他一切都是白色的?
Adobe Reader执行此操作(首选项 - >辅助功能)仅用于在程序中查看。但是,本质上不会更改文档,以便在其他PDF阅读器中也可以反转颜色。
如何永久扭转颜色?
答案 0 :(得分:12)
您可以运行以下Ghostscript命令:
gs -o inverted.pdf \
-sDEVICE=pdfwrite \
-c "{1 exch sub}{1 exch sub}{1 exch sub}{1 exch sub} setcolortransfer" \
-f input.pdf
Acrobat会显示反转的颜色。
四个相同的部分{1 exch sub}
用于CMYK颜色空间,并按照出现的顺序应用于C(yan),M(agenta),Y(ellow)和(blac)K颜色通道。 / p>
您可以只使用其中的三个 - 然后它用于RGB颜色空间,并应用于R(ed),G(reen)和B(lue)。
当然,你可以发明"您也拥有传输函数,而不是简单的1 exch sub
:例如{0.5 mul}
将只使用每个颜色通道的原始颜色值的50%。
注意:以上命令会反转显示 所有 颜色,而不仅仅是黑+白!
警告:
某些PDF查看器无法显示反转的颜色,尤其是Mac OS X上的 Preview.app , Evince , MuPDF 和 PDF.js 赢了。但Chrome的本机PDF查看器 PDFium 将会执行此操作,以及Ghostscript和Adobe Reader。
它不适用于所有 PDF(或PDF的所有页面),因为它还取决于文档颜色的确切定义。
上面的命令在input.pdf之前添加了-f
参数(必需)进行了更新。很抱歉以前没有注意到我的命令行中的这个漏洞。我之所以再次意识到这一点,只是因为一些善良的灵魂今天给了它第一个upvote ...
其他更新:最新版本的Ghostscript不再需要添加-f
参数。已通过v9.26验证(即使使用v9.25或更早版本也可能如此)。
答案 1 :(得分:2)
最好的方法是使用“pdf2ps - Ghostscript PDF to PostScript translator”,将PDF转换为PS文件。
创建PS文件后,使用任何文本编辑器打开它。在第一行之前添加{1 exch sub} settransfer
。
现在使用上面使用的相同软件将PS文件“重新转换”为PDF。
答案 2 :(得分:1)
如果您安装了Adobe PDF打印机,请转到打印 - > Adobe PDF - >高级... - >输出区域并选择" Invert"复选框。您打印的PDF文件将永久反转。
答案 3 :(得分:0)
以前发布的解决方案都没有为我工作,所以我写了这个简单的bash脚本。这取决于pdftk
和awk
。只需将代码复制到文件中并使其可执行即可。然后运行它:
$ /path/to/this_script.sh /path/to/mypdf.pdf
剧本:
#!/bin/bash
pdftk "$1" output - uncompress | \
awk '
/^1 1 1 / {
sub(/1 1 1 /,"0 0 0 ",$0);
print;
next;
}
/^0 0 0 / {
sub(/0 0 0 /,"1 1 1 ",$0);
print;
next;
}
{ print }' | \
pdftk - output "${1/%.pdf/_inverted.pdf}" compress
此脚本适用于我,但您的里程可能会有所不同。有时,有时颜色会以1.000 1.000 1.000
而非1 1 1
的形式列出。可以根据需要轻松修改脚本。如果需要,还可以添加其他颜色转换。
对我来说,pdf2ps - >编辑 - > ps2pdf解决方案无效。中间.ps文件正确反转,但最终的.pdf与原始文件相同。建议的gs解决方案中的最终.pdf也与原始解决方案相同。