How to preserve highlighting and annotations created in Okular?

Since KDE 4.2, Okular has the "document archiving" feature. This is an Okular-specific format for carrying the document plus various metadata related to it (currently only annotations). You can save a "document archive" from the open document by choosing File → Export As → Document Archive. To open an Okular document archive, just open it with Okular as it would be e.g. a PDF document.

Since Okular 0.15 you can also save annotations directly into PDF files. This feature is only available if Okular has been built with version 0.20 or later of the Poppler rendering library. You can use File → Save As... to save the copy of the PDF file with annotations.

read here: https://docs.kde.org/stable5/en/kdegraphics/okular/annotations.html


Current version of Okular allows one to save the PDF with the annotations by going into File -> Save As.

However, I wanted something automated. So, I created an Autokey script so that whenever I close my PDF, the annotations are automatically saved in the PDF itself. Note that this script will save your PDF overwriting the original PDF.

The Autokey Script

First, you will need to install autokey-gtk and xdotool first:

sudo apt-get install autokey-gtk xdotool

Now, in autokey, go to New -> Script. Add the following code to your new script:

#This is used to save PDF in okular so that the annotations persist in the PDF file itself
#We have to use to `xdotool` to bring the dialogs back into focus, otherwise they are losing focus 
import subprocess

keyboard.send_keys("<ctrl>+<shift>+s")
time.sleep(0.4)
subprocess.call(["xdotool", "windowfocus", "`xdotool getwindowfocus`"])
time.sleep(0.1)
keyboard.send_key("<enter>")
time.sleep(0.1)
subprocess.call(["xdotool", "windowfocus", "`xdotool getwindowfocus`"])
time.sleep(0.1)
keyboard.send_key("<tab>")
time.sleep(0.1)
keyboard.send_key("<enter>")
time.sleep(0.1)
subprocess.call(["xdotool", "windowfocus", "`xdotool getwindowfocus`"])
time.sleep(0.5)
keyboard.send_keys("<ctrl>+q") #Quit Finally

You can now assign a window filter and hotkey to this script. In window filter, add .*okular.*. And in hotkey, I've used <ctrl>+s. You could use anything else that you prefer.

So, now whenever I have to quit okular, I use CtrlS, and okular quits after saving my pdf.


I think I have the answer. After running this simple find command in your Home directory:

find -type d -iname "*okular*" -print

You'll find this directory:

/home/YOUR_USER_NAME_HERE/.kde/share/apps/okular

underneath it is the directory:

docdata

This docdata directory contains xml files for each document you've opened with Okular. Just backup this folder and carry to your new machine and paste it there in the same place. Your annotations are preserved!