|
15 | 15 | (:import (org.apache.poi.xssf.streaming SXSSFSheet) |
16 | 16 | (org.apache.poi.ss.usermodel Sheet) |
17 | 17 | (java.io File) |
18 | | - (org.jodconverter.office DefaultOfficeManagerBuilder) |
19 | | - (org.jodconverter OfficeDocumentConverter) |
| 18 | + (org.jodconverter.local.office LocalOfficeManager) |
| 19 | + (org.jodconverter.local LocalConverter) |
20 | 20 | (java.awt Desktop HeadlessException))) |
21 | 21 |
|
22 | 22 |
|
|
140 | 140 | "Convert the `from-document`, either a File or a path to any office document, |
141 | 141 | to pdf format and write the pdf to the given pdf-path. |
142 | 142 |
|
143 | | - Requires OpenOffice. See https://github.com/sbraconnier/jodconverter. |
| 143 | + Requires LibreOffice or Apache OpenOffice https://github.com/sbraconnier/jodconverter |
144 | 144 |
|
145 | 145 | Returns a File pointing at the PDF." |
146 | 146 | [from-document pdf-path] |
147 | 147 | (let [path (force-extension pdf-path "pdf") |
148 | | - office-manager (.build (DefaultOfficeManagerBuilder.))] |
| 148 | + office-manager (-> (LocalOfficeManager/builder) |
| 149 | + (.build))] |
149 | 150 | (.start office-manager) |
150 | 151 | (try |
151 | | - (let [document-converter (OfficeDocumentConverter. office-manager)] |
152 | | - (.convert document-converter (io/file from-document) (io/file path))) |
| 152 | + (let [document-converter (LocalConverter/make office-manager)] |
| 153 | + (-> document-converter |
| 154 | + (.convert (io/file from-document)) |
| 155 | + (.to (io/file path)) |
| 156 | + (.execute))) |
153 | 157 | (finally |
154 | 158 | (.stop office-manager))) |
155 | 159 | (io/file path))) |
|
181 | 185 | (open (write-pdf! workbook (temp ".pdf")))) |
182 | 186 |
|
183 | 187 |
|
184 | | -(defn example |
185 | | - "Write & open a sheet composed of a simple grid." |
186 | | - [] |
187 | | - (let [grid [["A" "B" "C"] |
188 | | - [1 2 3]]] |
189 | | - (quick-open! {"Sheet 1" grid}))) |
190 | | - |
191 | | - |
192 | | -(defn example-plus |
193 | | - "Write & open a sheet composed of a more involved grid." |
194 | | - [] |
195 | | - (let [t (java.util.Calendar/getInstance) |
196 | | - grid [["String" "Abc"] |
197 | | - ["Numbers" 100M 1.234 1234 12345N] |
198 | | - ["Date (not styled, styled)" t (style t {:data-format :ymd})]] |
199 | | - |
200 | | - header-style {:border-bottom :thin :font {:bold true}} |
201 | | - header-rows [[(-> "Type" |
202 | | - (style header-style) |
203 | | - (dims {:height 2}) |
204 | | - (style {:vertical-alignment :center})) |
205 | | - (-> "Examples" |
206 | | - (style header-style) |
207 | | - (dims {:width 4}) |
208 | | - (style {:alignment :center :border-bottom :none}))] |
209 | | - (mapv #(style % {:font {:italic true} |
210 | | - :alignment :center |
211 | | - :border-bottom :thin}) |
212 | | - [nil 1 2 3 4])] |
213 | | - excel-file (quick-open! {"Sheet 1" (concat header-rows grid)})] |
214 | | - (try |
215 | | - (open (convert-pdf! excel-file (temp ".pdf"))) |
216 | | - (catch Exception e |
217 | | - (println "(Couldn't open a PDF on this platform.)"))))) |
| 188 | +(comment |
| 189 | + (defn example |
| 190 | + "Write & open a sheet composed of a simple grid." |
| 191 | + [] |
| 192 | + (let [grid [["A" "B" "C"] |
| 193 | + [1 2 3]]] |
| 194 | + (quick-open! {"Sheet 1" grid}))) |
| 195 | + |
| 196 | + |
| 197 | + (defn example-plus |
| 198 | + "Write & open a sheet composed of a more involved grid." |
| 199 | + [] |
| 200 | + (let [t (java.util.Calendar/getInstance) |
| 201 | + grid [["String" "Abc"] |
| 202 | + ["Numbers" 100M 1.234 1234 12345N] |
| 203 | + ["Date (not styled, styled)" t (style t {:data-format :ymd})]] |
| 204 | + |
| 205 | + header-style {:border-bottom :thin :font {:bold true}} |
| 206 | + header-rows [[(-> "Type" |
| 207 | + (style header-style) |
| 208 | + (dims {:height 2}) |
| 209 | + (style {:vertical-alignment :center})) |
| 210 | + (-> "Examples" |
| 211 | + (style header-style) |
| 212 | + (dims {:width 4}) |
| 213 | + (style {:alignment :center :border-bottom :none}))] |
| 214 | + (mapv #(style % {:font {:italic true} |
| 215 | + :alignment :center |
| 216 | + :border-bottom :thin}) |
| 217 | + [nil 1 2 3 4])] |
| 218 | + excel-file (quick-open! {"Sheet 1" (concat header-rows grid)})] |
| 219 | + (try |
| 220 | + (open (convert-pdf! excel-file (temp ".pdf"))) |
| 221 | + (catch Exception e |
| 222 | + (println "(Couldn't open a PDF on this platform.)")))))) |
0 commit comments