emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* generating org headings from a source block
@ 2015-11-09 20:29 Matt Price
  2015-11-09 21:57 ` Nick Dokos
  0 siblings, 1 reply; 5+ messages in thread
From: Matt Price @ 2015-11-09 20:29 UTC (permalink / raw)
  To: Org Mode

[-- Attachment #1: Type: text/plain, Size: 2995 bytes --]

I would like to be able to insert into an org-buffer the text extracted
from a pdf file. PDF-Tools (https://github.com/politza/pdf-tools/) provides
some excellent tools for doing this.  I've written (well, msotly stolen) a
defun that finds all my highlights and returns them in the form of an org
heading:

(defun pdf-annot-export-as-org-heading (pdfpath)
  "Acquire highlight annotations as text, and insert into existing buffer
as org heading"
  (interactive)
  (let ((outputstring "")

        )
    (save-excursion
      (find-file pdfpath)
      (let (
            (annots (sort (pdf-annot-getannots nil (list 'highlight)  nil)
'pdf-annot-compare-annotations))
            (filename (format "%s.org"
                          (file-name-sans-extension
                           (buffer-name))))
        (linktext (concat "[[file://" (buffer-file-name)
                          "][" (file-name-sans-extension (buffer-name))
"]]" )))
      (setq outputstring (concat "** " (file-name-sans-extension
(buffer-name)) "\n\n"))

      ;; (insert (concat "#+TITLE: Notes for " (file-name-sans-extension
filename)))
      ;; (org-insert-heading-respect-content)
      ;; (insert (file-name-sans-extension filename))
      (mapc
       (lambda (annot) ;; traverse all annotations
         (message "%s" annot)
         (let ((page (assoc-default 'page annot))
               (text (assoc-default 'subject annot))
               )
           ;;(insert (concat "\n" text " (" linktext ", " (number-to-string
page) ")\n"))
           (setq outputstring (concat outputstring text " (" linktext ", "
(number-to-string page) ")\n\n"))
           )
         )
       annots)
      ))
    ;;(write-file filename t)
    outputstring
    ))

-------------

I'm sure it is very clumsy, but it sort of works.  I would like to be able
to call this function from a source block:

#+BEGIN_SRC elisp
(pdf-annot-export-as-org-heading
"/home/matt/HackingHistory/readings/latour-pandoras-hope.pdf")
(pdf-annot-export-as-org-heading
"/home/matt/HackingHistory/readings/historical-authority-hampton.pdf")
#+END_SRC

The results are close to, but not precisely, what I want:

#+RESULTS:
#+begin_example
** historical-authority-hampton

 ([[file:///home/matt/HackingHistory/readings/historical-authority-hampton.pdf][historical-authority-hampton]],
1)

In the Tudor palace at Hampton Court, there is a....
...
#+end_example

(a) I only get the last command, because I guess :results value only
reports the final returned value. But :results output gets me nothing.
What should I be doing?
(b) the whole output is wrapped in an example block, which I don't want.
Can I do something to fix this?
also, (c): I'd rather set the level of the org heading based on context.
Can I do that when I call from a source block? Should I maybe be doing this
some other way (e.g., jsut write an interactive function and call it with
M-x? But I like being able to assemble all the readings at one go, if
possible.

Thanks as always,
Matt

[-- Attachment #2: Type: text/html, Size: 3994 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-11-10 16:31 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-09 20:29 generating org headings from a source block Matt Price
2015-11-09 21:57 ` Nick Dokos
2015-11-10 14:28   ` Matt Price
2015-11-10 16:16     ` Nick Dokos
2015-11-10 16:31       ` Matt Price

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).