How to change pdf background color in evince?

22,895

Solution 1

I am sure that you can invert the color but I am not sure whether you can use a different color of your choice as a background color.

To invert the color.

Goto: View -> Inverted Colors (Ctrl+I)

Hope this helps.

Solution 2

I have have been fighting this issue for quite a while now. The best solution I have come up with is to use the xcalib command via two easily accessible application launchers on my tool/app bar. I have named them "Screen Mode" and "Paper Mode".

With the help of xcalib I can activate on-the-fly two different screen configurations without profiles and other bloat. Note that xcalib is the smallest bit of software and won't take any space or memory as it passes the configurations to the display adapter and exits. You can forget about the heavy specialist software like argyll+dispcalgui etc.

Firstly install xcalib with:

sudo apt-get install xcalib

Then set your two launchers with these commands:

To set the "Paper Mode" use:

xcalib -red 1.7 1 64 -green 1.7 1 57 -blue 1.7 1 28 -alter

To (re)set back to "Screen Mode" use:

xcalib -clear

As you can probably tell I am adjusting the parameters per-channel and my effort was to produce a Kindle like result. Obviously you can and should adjust these according to your preferences and screens. Of course this adjusts the screen as a whole but, for me at least, this has been a blessing for those all white IDEs. It will take you a couple of minutes to get used to it, but you'll never go back. It's a true Eye-Saver!

The command usage is xcalib -ChannelName Gamma Brightness Contrast and are all separated with a single space. The -alter feeds the signal to the adapter. The -clear send a "Clear" message to the adapter to clear all adjustments back to normal.

IMPORTANT TIP: In order not to loose the blackness of letters always keep Brightness to 1 as shown above. Play around only with Gamma and Contrast. Gamma will produce a darker/lighter result and playing with the Contrast between channels will adjust the resulting color.

Another TIP: Set the "Paper Mode" shortcut to first reset and then set the color (e.g., "xcalib -clear && xcalib -red 1.7 1 64 -green 1.7 1 57 -blue 1.7 1 28 -alter"), so that if accidentally use it multiple times it does not change you display color to black.

I hope this will prove handy to many of you!

Solution 3

I found Okular as better pdf viewer. It let you change from GUI the background color and the font color to any value you want. i.e.

Setting -> Configure Okular -> Accessibility -> Change Color

For example, set :

  • Dark Color as font color
  • Light color as background color.

I had Okular version 0.16.5


In Okular version 1.9.3

Setting -> Configure Okular -> Accessibility

Enable the checkbox for Change Color

In "Color mode" select "Change Dark & Light Colors"

"Dark Color" i.e. (font color) to any light color you want e.g. White or light gray

"Light color" i.e. (background color) to dark color e.g. Black Or dark gray

Solution 4

Change the background color of evince to the light greed and protect your eyes

Config the compile environment and download source

sudo apt source evince

Change the source to your color, such as the light green(R:199,G:237,B:204) Edit the function ev_document_misc_invert_surface in file: libdocument/ev-document-misc.c at line 467

change

cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE);
cairo_set_source_rgb (cr, 1., 1., 1.);

to

cairo_set_operator (cr, CAIRO_OPERATOR_DARKEN);
cairo_set_source_rgb (cr, 0.8, 0.9098, 0.8117647);

Config and make and make install

cd evince
./configure --prefix=$YOUR-PLACE  --enable-nls --disable-scrollkeeper --disable-dbus --disable-debug --disable-tests --disable-nautilus --disable-thumbnailer --disable-previewer --disable-comics --without-keyring --without-gconf --without-gtk-unix-print
```

Then make, and I get the error:

Making all in synctex
make[3]: Entering directory '/home/luopeng/Downloads/evince-3.28.4/cut-n-paste/synctex'
  CC       libsynctex_la-synctex_parser.lo
  CC       libsynctex_la-synctex_parser_utils.lo
synctex_parser_utils.c:106:29: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
        result += vfprintf(stderr, reason, arg);
                                   ^~~~~~
1 error generated.
Makefile:545: recipe for target 'libsynctex_la-synctex_parser_utils.lo' failed
make[3]: *** [libsynctex_la-synctex_parser_utils.lo] Error 1

Of course, fix it by:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
    result = fprintf(stderr,"SyncTeX ERROR: ");
    result += vfprintf(stderr, reason, arg);
    result += fprintf(stderr,"\n");
#pragma GCC diagnostic pop

In the version of Ubuntu 18.04, I found several errors as the above case and I fix them with the GCC ignored. (please add # before the pragma in the following code)

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
  the code where the errors occur
#pragma GCC diagnostic pop

Then change the config in /usr/share/applications/evince.desktop

change Exec=$YOUR-Evince-PLACE/bin/evince %U

When click the view->Inverted Color, your background color will change to light green

Enjoy it!

Solution 5

Thanks for Evan's invitation. Here is what I did to achieve the light green background in Evince 2.30.3.

As mentioned in a thread(https://mail.gnome.org/archives/evince-list/2011-November/msg00015.html) posted by me several years ago, I replaced the source code from Line 327 to 329 of libdocument/ev-document-misc.c with the following snippet:

// make sure that we just turn the near "white" back ground to light green
if ((245 <= p[0] && p[0] <= 255) &&
    (245 <= p[1] && p[1] <= 255) &&
    (245 <= p[2] && p[2] <= 255)) {
    p[0] = 204; /* cc */
    p[1] = 232; /* e8 */
    p[2] = 207; /* cf */
}

Note that the code position may vary for different versions of Evince.

Then re-compile Evince:

$ ./configure --prefix=/usr --enable-nls --disable-scrollkeeper --disable-dbus --disable-debug --disable-tests --disable-nautilus --disable-thumbnailer --disable-previewer --disable-comics --without-keyring --without-gconf --without-gtk-unix-print
$ make

After compilation, DONOT run make install, because this may change your locale settings of Evince. Just backup the original /usr/lib/libevdocument.so.2.0.0, and replace it with the modified libdocument/.libs/libevdocument.so.2.0.0 manually.

Then re-launch Evince, open a .pdf file(or other supported formats, whatever), and use the "Inverted Color" option to change the background color into light green.

May this be helpful :)

Share:
22,895

Related videos on Youtube

waterloo2005
Author by

waterloo2005

Updated on September 18, 2022

Comments

  • waterloo2005
    waterloo2005 almost 2 years

    White background color is harm to eyes. How to change pdf background color in evince? Now I use evince 3.4.0 in ubuntu 12.04 x64.

    • Admin
      Admin over 8 years
      I suffer also from white background and I used to use xcalib below, but currently mostly I relay on KWin which offers invertion of colors for each window separately. That's why I use on most machines KDE as I have it out_of_the_box, just need to turn it in settings.
    • Admin
      Admin over 7 years
      I am only suggesting workarounds, but Zathura is another (really cool) pdf viewer, and its background is black. Otherwise, you could customize your global Ubuntu theme (for e.g copy the theme Ambiance from /usr/share/themes/Ambiance to $HOME/.themes/, and tweak the color definitions in gtk.css). Unfortunately, I don't know where are the specific variables for evince, so all your apps would then have a black background XD. Personally I'm anyway much happier with a totally dark theme, but it's matter of taste.
    • Admin
      Admin over 3 years
      After inverting the colors there are grey bars are left on both sides - you could get rid of them by just resizing the window to only show the inner inverted PDF content - alt-right mouse for the resizing shortcut, then alt-left mouse to move the window around. I think this is the simplest and most straightforward solution, provided your desktop background is dark/black.
  • waterloo2005
    waterloo2005 almost 12 years
    I want to change back color to others like light green. I think this is easy to implement for developer of evince.
  • devav2
    devav2 almost 12 years
    Yes it is very much possible. After your comment I just went through the evince source code and found this. ev-document-misc.c holds the inverted color section if (inverted_colors) cairo_set_source_rgb (cr, 0, 0, 0); else. So by changing this i think we can achieve our desired color but i haven't compiled and tested this. You can try your luck.
  • GRE2608
    GRE2608 over 11 years
    As I noticed that the 1.7 gamma was just about cracking the font anti-aliasing (as well as the fact that I used some really funny numbers above), a more appropriate command for "Paper Mode" would be... xcalib -red 1.5 0 65 -green 1.5 0 60 -blue 1.5 0 25 -alter
  • Elena
    Elena about 8 years
    it would be useful if you showed the code around your snippet. Otherwise it is not clear how to find the right place without spending too much time.
  • Tijs Maas
    Tijs Maas almost 5 years
    At the time of writing xcalib is incompatible with Wayland (window renderer), since each process is only allowed to draw within its respective window.
  • Jake
    Jake over 2 years
    great! continuous scroll, multi page, change bg-color, all in this one