Uses Windows 10 APIs to render a PDF Document as image in WPF, planned to support rudimentary text annotation and entity management. This project is directly inspired by Lander Verhack's post Creating a PDF Viewer in WPF using Windows 10 APIs. The goal is to provide a simple way to handle knowledge management from within a PDF context - partly due to the modern "PDF culture" - if you know what I mean.
This program serves one single purpose: provides a simple way to add annotations to PDFs and allow data interoperation, as such it doesn't intend to have any heavy-weight functionalities. The annotations are saved as an external metadata file with the same name as the PDF in YAML format; It supports direct export to KMD format. This program can be used as part of a process along the personal note/data management pipeline.
Current
- (bug) It seems every time we open a new PDF, old images are not cleared.
- (issue) If user saves a large PDF immediately when she opens it without letting it load all the pages, in which case annotations didn't get a chance to be loaded yet, that will save a blank annotation file, effectively overwriting and clearing all existing annotations.
- (Bug) Currently from "Note Summary" window jump navigation doesn't respect zoom, i.e. it will jump to incorrect location.
- (Issue) Note Summary window display should be sorted by page number. Currently it's sorted by order of note creation.
Future Features
- Allow arbitary taggable page-level Ink Canvas to be associated with each page (for highlight, sketch and draft purpose, not for annotation purpose per-se, thus the whole thing is managed as a single entity).
- (Usability) Add configuration to configure next-open image size (mostly width) - or instead to save memory we should still use fixed width as currently set and allow zooming; Also we might need horizontal scroll bar for items container
- (UI) Annotation property window notes text input should have a max width so horizontal scroll bar can show;
- (UI) Add deliberate max width to annotation widget (e.g. 500 px).
- (Issue) Current solution certainly doens't handle large PDFs well (e.g. Java the complete reference). Well we may simply don't bother with this.
- (Important) Add a "Summary" window showing all notes created so far, and most importantly, enable jumping to specific pages by clicking on the note preview in a list view. Just like how VideoTagPlayer works. This enables quick "page marking" style annotation.
Implemented/Solved
- (Basic function) Allow adding text annotations as an entity, each entity for now just need to contain content, along side optional tags string (notice we don't have the concept of a title because it's dumb and better used as a tag if really really needed). Entities contain location information and it's relative to owner page (subject to PDF page image resolution difference but that's as good as we can do). Pages are identified by page ID, starting from 0, for a particular document.
- (Implementation) Entities on page are only for display purpose, it's edited in seperate window.
- (Improvement, bug fix) When save windows title is not updating save status (the
*
is still present). - (Bug fix) Clear annoations list when loading new file.
- (Export, format) Export into Knowledge Markdown plain text.
- (UI) Don't show Annotation Properties window in Taskbar.
- Entity: All annotations, be it texts for inks, are defines as an entity. Each entity can contain some meta data besides its main content. All entities are confined to a particular page.
- Page: Each PDF document consists of multiple pages; Page is the smallest container for information.
Due to difference in Windows SDK installation paths new checkouts need to setup corresponding paths to two assemblies:
- C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.18362.0\Windows.winmd (Needs to "Show All Files" when "Add Reference...")
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll
Additional details is available in Lander Verhack's post.
Icon made by Smashicons from www.flaticon.com
- Use SumatraPDF with the only issue that you can't export your annotations.