{"id":17059208,"url":"https://github.com/novoid/extract_pdf_annotations_to_orgmode","last_synced_at":"2025-04-12T17:51:45.631Z","repository":{"id":2647915,"uuid":"3638024","full_name":"novoid/extract_pdf_annotations_to_orgmode","owner":"novoid","description":"Extracting RepliGo PDF annotations to a Org-mode format snippet (unmaintained!)","archived":false,"fork":false,"pushed_at":"2015-11-12T11:38:23.000Z","size":101,"stargazers_count":28,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-26T12:11:52.125Z","etag":null,"topics":["orgdown","orgmode","pdf","pdf-document","shellscript"],"latest_commit_sha":null,"homepage":"http://karl-voit.at/2015/12/26/reference-management-with-orgmode/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/novoid.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-03-06T13:20:19.000Z","updated_at":"2023-01-24T04:45:58.000Z","dependencies_parsed_at":"2022-08-29T12:51:14.119Z","dependency_job_id":null,"html_url":"https://github.com/novoid/extract_pdf_annotations_to_orgmode","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novoid%2Fextract_pdf_annotations_to_orgmode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novoid%2Fextract_pdf_annotations_to_orgmode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novoid%2Fextract_pdf_annotations_to_orgmode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novoid%2Fextract_pdf_annotations_to_orgmode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/novoid","download_url":"https://codeload.github.com/novoid/extract_pdf_annotations_to_orgmode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248610407,"owners_count":21132920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["orgdown","orgmode","pdf","pdf-document","shellscript"],"created_at":"2024-10-14T10:33:18.132Z","updated_at":"2025-04-12T17:51:45.610Z","avatar_url":"https://github.com/novoid.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"* Extracting RepliGo PDF annotations to a Org-mode format snippet\n\nI annotate PDF research paper files on my tablet using\n[[http://www.cerience.com/products/reader/android][RepliGo Reader for Android]]. Because I am managing my research papers\nwithin [[http://orgmode.org][Org-mode]] similar to [[http://tincman.wordpress.com/2011/01/04/research-paper-management-with-emacs-org-mode-and-reftex/][this description]] I want to get the PDF\nannotations back out from the PDF files and into my Org-mode files.\n\nSince RepliGo stores its annotations very parser-friendly (it's text!)\nand Org-mode is just text, I can add something like this into Org-mode:\n\n: #+begin_src sh :results output\n: ${HOME}/bin/vkextract_annotations_to_orgmode_snippet.sh Qian2008\n: #+end_src\n\nWhen I execute this in Org-mode (using [[http://orgmode.org/org.html#Evaluating-code-blocks][babel: C-c C-c]]) its text output\ngets back into Org-mode like this example demonstrates:\n\n: #+results:\n: #+begin_example\n: ---- HIGHLIGHTS: ---\n: Manage Radiologic Portable Document Format \\(PDF\\) Files Using iTunes\n: In this article, we explain how to use the hidden function of iTunes \\(Apple Computer\\) to manage PDF documents as easily as managing music fles.\n: PDF\n: \n: #+end_example\n: \n: Sticky Notes:\n: #+begin_example\n: ---- NOTES: ---\n: This paper seems to be very relevant to my PIM study!\n: #+end_example\n\nThis method works with GNU Linux. Adaptations of paths and so forth\nare necessary in the script!\n\n* Be aware of special characters and German umlauts\n\nRepliGo does create «easy to extract» annotations under normal\ncircumstances. But when you\n\n- highlight special characters such as [[http://en.wikipedia.org/wiki/Germanic_umlaut#German_orthography][German umlauts]],\n- OR add sticky notes or text information containing non-[[http://en.wikipedia.org/wiki/Ascii#ASCII_printable_characters][ASCII]] characters,\n\nRepliGo Reader Android switches to an UTF encoding. PDF files with\nannotations stored as UTF can not extracted with this simple method\npresented here. In this case you'll notice (only) funny characters in\nthe output of this script.\n\n* Bonus: .emacs setup\n\nThese lines are part of my configuration. \"C-c )\" shows the reftex\ncitation menu and with \"j\" I can insert a snippet for inserting\nannotations.\n\nThe rest might be helpful for your setup as well.\n\n: ;;add a custom reftex cite format to insert links                                                                                  \n: (reftex-set-cite-format                                                                                                           \n:  '((?b . \"[[bib:%l][%l.bib]]\")                                                                                                    \n:    (?r . \"[[ref:%l][%l]]\")                                                                                                \n:    (?p . \"[[pdf:%l][%l.pdf]]\")                                                                                                 \n:    (?h . (concat \"** %l - %t\\n:PROPERTIES:\\n:CREATED: \"                                                                           \n:          \"\u003c\" (substring (format-time-string (org-time-stamp-format t t)) 1 -1) \"\u003e\"                                                \n:          \"\\n:ID: %l\\n:END:\\n[[bib:%l][%l.bib]]\\n[[papers:%l][%l.pdf]]\\n\\n\"))                                                      \n:    (?n . (concat \"*** PDF Annotations: [[%l-notes.pdf][%l-notes.pdf]]\\n:PROPERTIES:\\n:CREATED: \"                                  \n:          \"\u003c\" (substring (format-time-string (org-time-stamp-format t t)) 1 -1) \"\u003e\"                                                \n:          \"\\n:ID: %l-annotations\\n:END:\\n\\n\"                                                                                       \n:          \"\\#+begin_src sh :results output\\n\"                                                                                      \n:          \"${HOME}/bin/vkextract_annotations_to_orgmode_snippet.sh %l\\n\"                                                           \n:                      \"#+end_src\\n\\n\"))                                                                                            \n:    ))))                                                                                                             \n:\n: ;; define shortcut for inserting references:              \n: (define-key org-mode-map (kbd \"C-c )\") 'reftex-citation)\n:\n: ;; define my own links for e.g. \"[[pdf:Voit2012]]\" -\u003e \"~/archive/papers_from_web/Voit2012.pdf\"\n: (setq org-link-abbrev-alist                                                                                                            \n:       '(                                                                                                                               \n:     (\"bib\" . \"~/archive/papers_from_web/references.bib::%s\")                                                                           \n:     (\"ref\" . \"~/share/all/org-mode/references.org::/%s/\")                                                                             \n:     (\"pdf\" . \"~/archive/papers_from_web/%s.pdf\")                                                                                    \n:     (\"notes\" . \"~/archive/papers_from_web/%s-notes.pdf\")                                                                           \n:     ))\n\n* License\n\nThis documentation is licensed under a [[http://creativecommons.org/licenses/by-nc-sa/3.0/][Creative Commons\nAttribution-NonCommercial-ShareAlike 3.0 Unported License]].\n\nThe script file is licenced under [[http://www.gnu.org/copyleft/gpl.html][GPL v3 or newer]].\n\n* Example\n\nThis is an example entry of one paper in my «references.org» file:\n\n** DONE Voit2011 - TagTree: storing and Re-Finding Files Using Tags  :prioritized:to_read:\nCLOSED: [2011-11-20 Sun 23:19]\n:PROPERTIES:\n:CREATED: \u003c2011-11-20 Sun 23:19\u003e\n:ID: Voit2011\n:END:\n[[bib:Voit2011][Voit2011.bib]]\n[[pdf:Voit2011][Voit2011.pdf]]\n\nISBN-13: 978-3-642-25363-8\nISBN-10: 3-642-25363-6\nhttp://www.meduni-graz.at/imi/usab2011/\n24-26 Nov 2011, Graz, Austria\nhttp://www.springerlink.com/content/978-3-642-25363-8\n\n- acceptance rate USAB2011: 18%\n- this paper got recommended by [[contact:John Smith][John Smith]] on CHI2012\n\n*** PDF Annotations: [[notes:Voit2011][Voit2011-notes.pdf]]\n:PROPERTIES:\n:CREATED: \u003c2012-03-19 Mon 20:36\u003e\n:ID: Voit2011-notes\n:END:\n\n#+begin_src sh :results output\n${HOME}/bin/vkextract_annotations_to_orgmode_snippet.sh Voit2011\n#+end_src\n\n#+RESULTS:\n#+begin_example\n---- HIGHLIGHTS: ---\nnavigation through folder hierarchies is\nstill the dominant mode of information access\nstrict hierarchy of folders\nThis paper describes TagTree, a new concept for storing and retrieving\nfiles and folders using tagging and automatically maintained\nnavigational hierarchies.\ncompatible with all currently prevalent\nsoftware\nimplementation called tagstore\nprovides a flexible framework for experimentation and a testbed for both\nusability studies and longer term field tests.\n[...]\n#+end_example\n\nAnnotations:\n#+begin_example\n---- Annotations: ---\nthis paper seems relevant to me\nthe authors seem to have achieved clever system integration\n#+end_example\n\n* Alternatives\n\nMatt published\n[[http://matt.hackinghistory.ca/2015/11/11/note-taking-with-pdf-tools/][a very\nsimilar method on his blog]]. You might as well check it out.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnovoid%2Fextract_pdf_annotations_to_orgmode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnovoid%2Fextract_pdf_annotations_to_orgmode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnovoid%2Fextract_pdf_annotations_to_orgmode/lists"}