[net.tbt-post/clj-jasper "0.0.12"]
A Clojure library to work with Jasper Reports
Add the following to your Leiningen’s project.clj
:
[net.tbt-post/clj-jasper "0.0.12"]
(ns my-app.jasper
(:require [clj-jasper.core :as jc]
[clojure.java.io :as io]))
(defn render [name data properties]
(binding [jc/*jr-templates-path* "my-templates"]
(let [out (jc/data->report {:name (format "my-reports/%s" name)
:data data
:ops properties})]
{:status 200
:headers {"Content-Type" (:type out)
"Content-Disposition" (format "attachment; filename=\"%s\"" (:name out))
"Cache-Control" "no-cache"}
:body (-> out :file io/input-stream)})))
Current implementation supports only PDF generations.
There is a bug in JAXP/XERCES (derived from CLJ←JR←Digester) that prevent the use of a parser that contains a schema with a DTD.
Well tested with Java versions:
OpenJDK 11.0.12
OpenJDK 15.0.1
GraalVM 19.3.6.r11
Corretto 8.322.06.1
Version v0.0.9 and v0.0.10 may be runtime incompatible with uberjar build in some circumstances
JasperReports is very dependent on the SAX parser and requires at least a basic X setup on the server in order to render.
Default font have to be available in JVM
Final app is very sensitive to AOT compilation so pay attention on:
Proper AOT compilation may require added line like :uberjar-merge-with {#"^jasperreports_extension\.properties$" [slurp #(clojure.string/join "\r\n" %&) spit]}
into your project directly.
For some circumstances this may be not enough, and complete avoiding of AOT for particular class might be required.
For some rare and very complex cases even complete avoiding :uberjar {:aot :all}
might be highly recommended
Copyright © 2018-2022
Distributed under the MIT License.
Can you improve this documentation? These fine people already did:
MelKori, source-c & Oleg NogaEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close