From 75cf36f0afb878a9c8417f18468c3fc937813726 Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 2 Apr 2017 16:02:30 -0400 Subject: [PATCH] add support for setting pdf properties like title, subject, author, etc --- src/clj_htmltopdf/options.clj | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/clj_htmltopdf/options.clj b/src/clj_htmltopdf/options.clj index ce598ff..014033a 100644 --- a/src/clj_htmltopdf/options.clj +++ b/src/clj_htmltopdf/options.clj @@ -24,6 +24,12 @@ (.attr element "rel" "stylesheet") (.attr element "href" (str href)))) +(defn append-meta-tag! + ^Element [^Element parent name content] + (let [element (.appendElement parent "meta")] + (.attr element "name" (str name)) + (.attr element "content" (str content)))) + (def default-options {:logging? false :base-uri "" @@ -126,10 +132,19 @@ (sequential? additional-styles) (append-stylesheet-link-tags! parent additional-styles) (string? additional-styles) (append-stylesheet-link-tags! parent [additional-styles])))) +(defn append-doc-meta-tags! + [^Element parent options] + (let [{:keys [author keywords subject title]} (:doc options)] + (if author (append-meta-tag! parent "author" author)) + (if keywords (append-meta-tag! parent "keywords" keywords)) + (if subject (append-meta-tag! parent "subject" subject)) + (if title (append-meta-tag! parent "title" title)))) + (defn inject-options-into-html! [^Document doc options] (let [head-tag (-> doc (.select "head") (.first)) styles (:styles options)] + (if (:doc options) (append-doc-meta-tags! head-tag options)) (if (:page options) (append-style-tag! head-tag (page-options->css (:page options)))) (cond (sequential? styles) (append-stylesheet-link-tags! head-tag styles)