2015-04-29 93 views
4

我想在PDF文檔中以編程方式更改背景顏色和文本顏色,以便它們在夜晚更好閱讀(有點像在Adobe Reader中:編輯 - >首選項 - >輔助功能 - >替換文檔顏色)。更改PDF文件的文本和背景顏色

有什麼好的命令行工具或API的Windows可以做到這一點?

到目前爲止我還沒有找到任何。如果需要將新着色的PDF保存到新文件中,則可以。

+0

如果你是一些編程,你可能想嘗試一些沿着[這個答案](http://stackoverflow.com/ a/16877278/1729265),在頁面上以混合模式Difference繪製白色矩形。 – mkl

回答

2

沒有辦法直接做到這一點,沒有(免費軟件或免費)工具,我知道。 (因爲在一般情況下,你就必須改變的PDF頁面的所有顏色,不只是單純的背景,所以你仍然可以有一些對比度和色彩差異。)

你描述的是什麼Adobe Reader不會自行更改PDF文件,它會更改應用程序呈現頁面的方式(通過反轉顏色或類似方式)。在查看期間和之後,PDF保持不變。

但是,您可能會通過對輸入PDF應用合適的ICC顏色配置文件並在Ghostscript(最新版本)的幫助下生成一個新的PDF輸出PDF 。

問題仍將:什麼IS「合適」的ICC色彩PROFIL你的目的?


我認爲不久的灰色十歲上下的背景適用於PDF與pdftk ... background ...命令行的幫助。但是這可能會使一些或許多PDF不可讀。 (A 黑色背景肯定會使其不可讀,因爲大多數文字爲黑色,並會繼續這樣做。)

要創建一個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的幫助相當不可靠的方式。它建立了一個colortransfer功能輸出PDF文件:

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. 火狐PDF.js
  3. 迷走星球
  4. MuPDF
+0

作爲一個(也許太令人生氣)除了你的答案,實際上有一些工具,如PitStop或pdfToolbox(警告 - 聯盟),可以應用這樣的轉移曲線,一旦它在那裏(換句話說,計算新的顏色考慮到轉移曲線)。這將使它永久,因此所有的觀衆:) –

+0

@DavidvanDriessche:謝謝大衛 - 當然我*的意思是*說我沒有意識到任何'自由'(如在自由)或'自由'(作爲在免費)我知道的工具...我完全忘記提及商業公共事業,儘管當我寫下我的答案時我打算提及。 –

3

以防萬一OP不真的需要改變PDF文檔的顏色永久,但只想要一個PDF 觀衆 Acrobat之外,可以做同樣改變顯示的顏色...

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將重新着色任何打開文檔的渲染。背景將變爲黑暗,文字將變爲明亮的灰色(但它不會反轉,例如藍色文字變成黃色,就像MuPDF一樣)。我不確定它是否可以在Windows上使用。

Evince: Gnome PDF查看器,可用於Linux,OSX和Windows。它也可以反轉打開的文檔的顏色;鍵盤快捷鍵是ctrl + i。 (不知道是否有可用的Windows版本 - 也許在Cygwin中)XPDF是一款非常古老的Unix + Linux的PDF閱讀器(不確定是否有Windows版本可用 - 也許在Cygwin中)。它在命令行中有一個啓動選項:xpdf -rv -papercolor "#333333" file.pdf將反轉顏色(-rv用於反轉視頻-papercolor可讓您將背景更改爲與純黑色不同的東西[因爲任何倒立的白色都會變成])。

2

正如您所要求的API,我會在混合中再添加一個可能性。實際上可以爲Adobe Acrobat編寫一個插件(對於Adobe Reader也應該可能,但Reader插件更難),這會干擾顯示。

很久以前,我爲Enfocus PitStop編寫代碼,爲Adobe Acrobat內部的PDF文件實現線框渲染模式。點擊一個按鈕,顯示變爲線框,再次點擊,你有正常的看法。這可以起作用,因爲您可以(作爲插件)修改由Acrobat繪製的顯示列表(對象列表)。

這意味着要繪製您的特殊顯示模式,您可以創建一個新的顯示列表(或修改現有的顯示列表),使其在所需顏色的最後面具有矩形,然後修改所有顏色顯示列表中的對象以滿足您的需求。

這相對比較複雜,因爲它更復雜的是 - 如果您不希望更改影響磁盤上的PDF文件,則必須攔截無數Acrobat通知並撤消更改。例如,如果用戶嘗試在顯示模式下查看時保存PDF文檔,則必須確保已收到警告,並在保存期間撤消更改。 Adobe Acrobat使這成爲可能,因爲它會在保存過程之前和之後向您發送通知,但確保沒有任何事情被搞砸仍然是一項嚴肅的工作。

但是,這是一個絕對酷,非常靈活的方式來實現你以後的東西。只要確保你有超過幾個星期來實現它:)

相關問題