Currently, support for adding annotations is very limited in Evince whereby only text annotations can be added. However according to the PDF specification version 1.7, there are 15 more markup annotation types including Line, Highlight, Circle etc. In addition, there are 27 bugs regarding displaying and adding different annotation types in GNOME Bugzilla. The goal of this project is to improve the annotation support of Evince document viewer.
What is the ultimate goal of your proposal?
PDF annotations are the objects such as text or shape that are associated with a position in the page. Currently, displaying and adding different kind of annotations is a limited feature in Evince. There are many open bug reports regarding annotations. The ultimate goal of this project is to add support of many annotations types in Evince and fix as many bugs as possible in GNOME Bugzilla so that all (or almost all) types of annotations can be added and displayed in Evince thereby the need for other PDF readers is reduced. Moreover, PDF form widgets and highlighting support are very related to the annotation support since all are actually annotations from the PDF specification point of view. Therefore, if I have more time, I can also help on subjects such as forms and highlighting support.
What components/modules will the proposed work modify or create?
First of all, poppler-glib frontend which Evince heavily depends on, lacks many types of annotations. Currently, there is an attempt to fix that however it is incomplete and there are 18 bugs in Freedesktop/Poppler bugzilla regarding annotations. Secondly, on the Evince side, both shell (ev-sidebar-annotations.c, ev-annotation-properties-dialog.c), libview (ev-annotation-window.c) and libdocument (ev-annotation.c, ev-document-annotation.c) components will be modified. However, since I am not yet familiar with the entire evince codebase, I cannot name all the modules files need to be changed.
What benefits does your proposed work have for GNOME and its community?
I believe that the full support for PDF specification and therefore diminishing the need for other (possibly proprietary) PDF viewers is a very big step forward for GNOME and free software community. Implementation of annotation handling is a part of this objective and needs to be addressed. Enhancing annotation support in Evince will get us closer to this achievement. In addition, Evince project is looking for more contributors since there is a lack of developers. It would be great to support development of Evince project in this sense.
Schedule with dates and important milestones/deliverables
May 4 – June 17 (Before coding time):
- To remember the forgotten parts of PDF specification, and getting familiar with the annotation part,
- To get familiar with GTK3 programming,
- To get familiar with poppler, poppler-glib and evince codebases
- To investigate missing parts in popper and evince related to all kinds of annotations
June 17 - August 2 (Coding period before midterm)
- To fix bugs related to text annotations in GNOME and poppler bugzillas
- To implement incomplete parts of text annotations in poppler and Evince (such as text annotation deletion)
- UI improvements about the editing of text annotations such as adding a context menu to the list of annotation on side pane and implementing a more user-friendly add button
- Testing the implementation
August 2 - September 27 (Coding after midterm)
- To fix other bugs related to the annotations,
- To implement support for correctly adding and displaying highlight annotations,
- Testing implementation
What will be showable at mid-term?
Adding/displaying/editing/deleting text annotations will be flawless on both poppler-glib and evince side.