反转PDF中的白色和黑色

时间:2015-05-17 07:13:17

标签: pdf

鉴于黑白PDF,我如何反转颜色,使背景为黑色,其他一切都是白色的?

Adob​​e Reader执行此操作(首选项 - >辅助功能)仅用于在程序中查看。但是,本质上不会更改文档,以便在其他PDF阅读器中也可以反转颜色。

如何永久扭转颜色?

4 个答案:

答案 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%。

注意:以上命令会反转显示 所有 颜色,而不仅仅是黑+白!

警告:

  1. 某些PDF查看器无法显示反转的颜色,尤其是Mac OS X上的 Preview.app Evince MuPDF PDF.js 赢了。但Chrome的本机PDF查看器 PDFium 将会执行此操作,以及Ghostscript和Adobe Reader。

  2. 它不适用于所有 PDF(或PDF的所有页面),因为它还取决于文档颜色的确切定义。

  3. 更新

    上面的命令在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脚本。这取决于pdftkawk。只需将代码复制到文件中并使其可执行即可。然后运行它:

$ /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也与原始解决方案相同。

相关问题