From: Instructor account <instructor@andrew.cmu.edu>
To: Rainer M Krug <Rainer@krugs.de>
Cc: Andreas Leha <andreas.leha@med.uni-goettingen.de>, emacs-orgmode@gnu.org
Subject: Re: pdf images in html export
Date: Thu, 13 Nov 2014 07:21:58 -0500 [thread overview]
Message-ID: <m2tx2347fd.fsf@andrew.cmu.edu> (raw)
In-Reply-To: <m2mw7wwlph.fsf@krugs.de> (Rainer M. Krug's message of "Wed, 12 Nov 2014 15:13:46 +0100")
I think the best thing to do here is create a derived backend. Filters
could work to, but you will have to parse the img link, get the pdf
file, convert it and replace the path in the link.
with a derived backend you can get that a little more directly like
this. This code block works on a minimal example for me. I guess you
could make a little function to do the last line, and put this all in
your init files and it would work. This is a very unsophisticated format
function that does not check for attributes like width or height or link
descriptions... but, I get a png image in the html export of an org file
with a pdf image ;)
#+BEGIN_SRC emacs-lisp
(defun my-link-format (link contents info)
(let ((type (org-element-property :type link))
(path (org-element-property :path link)))
(cond
((and
(string= type "file")
(string-match "\.pdf" path))
(shell-command
(format
"convert %s %s"
path
(replace-regexp-in-string "\.pdf" ".png" path)))
(format "<img src=\"%s\">" (replace-regexp-in-string "\.pdf" ".png" path)))
;; anything else, we just do the regular thing
(t
(org-html-link link contents info)))))
(org-export-define-derived-backend 'my-html 'html
:translate-alist '((link . my-link-format)))
(browse-url (org-export-to-file 'my-html "custom-link.html"))
#+END_SRC
Rainer M Krug <Rainer@krugs.de> writes:
> Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:
>
>> Hi Rainer,
>>
>> Rainer M Krug <Rainer@krugs.de> writes:
>>> Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:
>>>
>>>> Hi Marco,
>>>>
>>>> Marco Wahl <marcowahlsoft@gmail.com> writes:
>>>>> Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:
>>>>>
>>>>>> how would I export an org file containing
>>>>>>
>>>>>> [[file:./myimage.pdf]]
>>>>>>
>>>>>> to html so that a say png version myimage.pdf is inlined in the html
>>>>>> which links to the pdf?
>>>>>>
>>>>>> I guess it should be possible to run imagemagick on all pdf links during
>>>>>> export somehow.
>>>>>
>>>>> You could introduce a relation of the pdf-filenames to the respective
>>>>> thumb-filenames e.g. by using the suffix '_thumb'. Before the export
>>>>> the conversion tool would create the thumbs.
>>>>>
>>>>> The org-file could reference the data as
>>>>>
>>>>> [[file:./myimage.pdf][file:myimage_thumb.png]]
>>>>>
>>>>> See the info page (info "(org)Images in HTML export")?
>>>>>
>>>>> Untested. I just accidentially browsed that info page yesterday.
>>>>>
>>>>>
>>>>
>>>> Thanks for your thoughts. I would like to automate all of that. So, I
>>>> guess the first question is where to put code that would trigger the
>>>> conversion and how to best detect links to pdfs.
>>>
>>> Well - this is coming again and again - but no solution out of the
>>> box. There are effectively two approaches:
>>>
>>> 1) Macro to change properties according to backend used.
>>>
>>> One usage is changing the file name extension according to the
>>> backend. This is implemented as a simplified macro below. This could
>>> be done by using ~(by-backend (html "graph.png") (latex "graph.pdf") (t "graph.pdf"))~
>>>
>>> See [[http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html#sec-4-3][work section ob-doc-LaTeX]] for details.
>>>
>>> #+begin_src emacs-lisp
>>> (setq org-babel-latex-htlatex "htlatex")
>>> (defmacro rmk-by-backend (&rest body)
>>> `(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body))
>>> #+end_src
>>>
>>> 2) To use svg image format, which is supported by both (although has
>>> it's drawbacks: slow rendering of the html, need to run external programs upon compilation)
>>>
>>> So the first might be the modst feasible option.
>>>
>>
>> Thanks for this. I am aware of how to *produce* graphics in different
>> formats for different export backends. I use your first approach,
>> which I think is the better solution.
>
> I agree with you.
>
>>
>> Here, I am after a solution, that works on images that are not produced
>> but merely included via [[file:./some.pdf]].
>
> OK - understood.
>
>>
>> I think there should be the possibility to include these into html (and
>> odt) export without any user interaction. So, I
>> - do not want to write a source block just to produce the by-backend image
>> - do not want to change the link manually
>> - do not want to run the converter manually
>
> I agree with you - this *should* be possible, and I assume not to
> difficult to implement. In my opinion, this should also work out of the
> box when enabling it e.g. via a property.
>
>>
>> I am pretty sure this should be achievable with standard orgmode tools
>> (like filters, export hooks, or anything).
>
> Yes - it should be.
>
>>
>> Since 'this is coming again and again' it seems a non-esoteric task.
>> And as there is 'no solution out of the box', I assume(d) that somebody has
>> written these filters already.
>
> Unfortunately not...
>
> Cheers,
>
> Rainer
>
>>
>> Regards,
>> Andreas
>>
>>
>>
--
-----------------------------------
John Kitchin
Professor
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
http://kitchingroup.cheme.cmu.edu
next prev parent reply other threads:[~2014-11-13 12:59 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-12 0:48 pdf images in html export Andreas Leha
2014-11-12 8:27 ` Marco Wahl
2014-11-12 9:30 ` Andreas Leha
2014-11-12 13:09 ` Rainer M Krug
2014-11-12 13:36 ` Andreas Leha
2014-11-12 14:13 ` Rainer M Krug
2014-11-13 12:21 ` Instructor account [this message]
2014-11-13 19:10 ` Andreas Leha
2014-11-12 19:03 ` Charles C. Berry
2014-11-12 20:50 ` Andreas Leha
2014-11-12 21:04 ` John Hendy
2014-11-12 21:32 ` Andreas Leha
2014-11-12 22:59 ` John Hendy
2014-11-13 9:11 ` Eric S Fraga
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2tx2347fd.fsf@andrew.cmu.edu \
--to=instructor@andrew.cmu.edu \
--cc=Rainer@krugs.de \
--cc=andreas.leha@med.uni-goettingen.de \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).