improve(pdf): display pdf meta info

pull/2471/head
charlie 2021-08-02 13:48:26 +08:00
parent f288a1a9c3
commit 80ad5949d2
3 changed files with 40 additions and 1 deletions

View File

@ -468,6 +468,18 @@
outline-data)]
[:section.is-empty "No outlines"])]])))
(rum/defc docinfo-display
[info]
[:div.extensions__pdf-doc-info
(for [[k v] info
:let [k (pr-str k)]]
[:p {:key k} [:strong k] " " [:i (pr-str v)]])])
(defn make-docinfo-in-modal
[info]
(fn [close-fn]
(docinfo-display info)))
(rum/defc pdf-toolbar
[^js viewer]
(let [[outline-visible?, set-outline-visible!] (rum/use-state false)
@ -508,12 +520,20 @@
{:on-click #(set-outline-visible! (not outline-visible?))}
(svg/view-list 16)]
;; metadata
[:a.button.is-info
{:on-click #(do
(p/let [ret (pdf-utils/get-meta-data$ viewer)]
(state/set-modal! (make-docinfo-in-modal ret))))}
(svg/info)]
[:a.button
{:on-click #(state/set-state! :pdf/current nil)}
(t :close)]]]
;; contents outline
(pdf-outline viewer outline-visible? #(set-outline-visible! false))
;; settings
(and settings-visible? (pdf-settings
viewer

View File

@ -60,7 +60,7 @@
height: 42px;
z-index: 5;
background: linear-gradient(0deg, rgba(255, 255, 255, 0) 3%, rgba(255, 255, 255, 1) 100%);
padding: 5px 20px;
padding: 8px 20px;
> .inner {
display: flex;
@ -75,6 +75,10 @@
margin-left: 8px;
padding: 4px 6px;
color: var(--ls-icon-color);
&.is-info {
opacity: .3;
}
}
}
}

View File

@ -80,6 +80,21 @@
(set! (.-currentScale viewer) new-scale)))))
(defn get-meta-data$
[^js viewer]
(when-let [^js doc (and viewer (.-pdfDocument viewer))]
(p/create
(fn [resolve]
(p/catch
(p/then (.getMetadata doc)
(fn [^js r]
(js/console.debug "[metadata] " r)
(when-let [^js info (and r (.-info r))]
(resolve (bean/->clj info)))))
(fn [e]
(resolve nil)
(js/console.error e)))))))
(defn clear-all-selection
[]
(.removeAllRanges (js/window.getSelection)))