I have to read through various research papers and during the course I have to highlight and annotate. But if I rename the file later or change machine the highlights and annotations will be missing since they are stored separately. How can I preserve these highlights/annotations created in Okular if I change machines in the future?
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.
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
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:
underneath it is the directory:
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!