Liking cljdoc? Tell your friends :D

boundary.reports.shell.adapters.excel

Excel generation adapter using docjure (Apache POI wrapper).

Builds one worksheet per entry in :sheets, or derives a single sheet from :sections when :sheets is not provided.

Usage: (def xl-gen (create-excel-generator)) (generate! xl-gen my-report-def data {}) ;; => {:bytes #bytes[...] :type :excel :filename "my-report.xlsx"}

Excel generation adapter using docjure (Apache POI wrapper).

Builds one worksheet per entry in :sheets, or derives a single sheet
from :sections when :sheets is not provided.

Usage:
  (def xl-gen (create-excel-generator))
  (generate! xl-gen my-report-def data {})
  ;; => {:bytes #bytes[...] :type :excel :filename "my-report.xlsx"}
raw docstring

boundary.reports.shell.adapters.pdf

PDF generation adapter using OpenHTMLtoPDF.

Three-step pipeline:

  1. Render Hiccup → HTML string (via hiccup.core/html)
  2. Inject default CSS from resources/boundary/reports/default.css
  3. Pass HTML to PdfRendererBuilder → ByteArrayOutputStream → bytes

Usage: (def pdf-gen (create-pdf-generator)) (generate! pdf-gen my-report-def data {}) ;; => {:bytes #bytes[...] :type :pdf :filename "my-report.pdf"}

PDF generation adapter using OpenHTMLtoPDF.

Three-step pipeline:
  1. Render Hiccup → HTML string (via hiccup.core/html)
  2. Inject default CSS from resources/boundary/reports/default.css
  3. Pass HTML to PdfRendererBuilder → ByteArrayOutputStream → bytes

Usage:
  (def pdf-gen (create-pdf-generator))
  (generate! pdf-gen my-report-def data {})
  ;; => {:bytes #bytes[...] :type :pdf :filename "my-report.pdf"}
raw docstring

boundary.reports.shell.adapters.word

Word (DOCX) generation adapter using Apache POI XWPF.

Apache POI is already on the classpath as a transitive dependency via docjure → poi-ooxml. No new Maven dependencies are needed.

Supports the same declarative :sections API as the Excel adapter. The :template key is PDF-only and is ignored here.

Usage: (def wd-gen (create-word-generator)) (generate! wd-gen my-report-def data {}) ;; => {:bytes #bytes[...] :type :word :filename "my-report.docx"}

Word (DOCX) generation adapter using Apache POI XWPF.

Apache POI is already on the classpath as a transitive dependency
via docjure → poi-ooxml. No new Maven dependencies are needed.

Supports the same declarative :sections API as the Excel adapter.
The :template key is PDF-only and is ignored here.

Usage:
  (def wd-gen (create-word-generator))
  (generate! wd-gen my-report-def data {})
  ;; => {:bytes #bytes[...] :type :word :filename "my-report.docx"}
raw docstring

boundary.reports.shell.jobs-integration

Optional integration with boundary-jobs for async report generation.

This namespace provides async report generation via the jobs module. The jobs module is an OPTIONAL dependency — add it to your deps.edn:

{:deps {org.boundary-app/boundary-jobs {:mvn/version "0.1.0"}}}

If the jobs module is not available, async functions will throw descriptive errors with :type :missing-dependency.

Usage: ;; Queue report for async generation (queue-report-job! report-def {:invoice-id 42})

;; Register report job handler with jobs module (register-report-job-handler! job-registry)

The job handler will:

  • Resolve data via :data-source (if defined)
  • Generate the report bytes
  • Optionally store via boundary-storage (:storage-key in opts)
  • Optionally send an email notification (:notify-email in opts)
Optional integration with boundary-jobs for async report generation.

This namespace provides async report generation via the jobs module.
The jobs module is an OPTIONAL dependency — add it to your deps.edn:

  {:deps {org.boundary-app/boundary-jobs {:mvn/version "0.1.0"}}}

If the jobs module is not available, async functions will throw descriptive
errors with :type :missing-dependency.

Usage:
  ;; Queue report for async generation
  (queue-report-job! report-def {:invoice-id 42})

  ;; Register report job handler with jobs module
  (register-report-job-handler! job-registry)

The job handler will:
  - Resolve data via :data-source (if defined)
  - Generate the report bytes
  - Optionally store via boundary-storage (:storage-key in opts)
  - Optionally send an email notification (:notify-email in opts)
raw docstring

boundary.reports.shell.service

Public convenience API for report generation.

Provides generate (sync) and generate-async (queued via boundary-jobs). These functions live in the shell layer — not core — because they instantiate adapter records and call :data-source, both of which are side effects (FC/IS: Core → Shell is forbidden).

Typical HTTP handler usage:

(require '[boundary.reports.shell.service :as reports])

(defn export-handler [request] (let [output (reports/generate invoice-report {:invoice-id 42})] {:status 200 :headers {"Content-Type" "application/pdf" "Content-Disposition" (str "attachment; filename="" (:filename output) """)} :body (java.io.ByteArrayInputStream. (:bytes output))}))

Public convenience API for report generation.

Provides `generate` (sync) and `generate-async` (queued via boundary-jobs).
These functions live in the shell layer — not core — because they
instantiate adapter records and call :data-source, both of which are
side effects (FC/IS: Core → Shell is forbidden).

Typical HTTP handler usage:

  (require '[boundary.reports.shell.service :as reports])

  (defn export-handler [request]
    (let [output (reports/generate invoice-report {:invoice-id 42})]
      {:status  200
       :headers {"Content-Type"        "application/pdf"
                 "Content-Disposition" (str "attachment; filename=\""
                                            (:filename output) "\"")}
       :body    (java.io.ByteArrayInputStream. (:bytes output))}))
raw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close