Fork me on GitHub

does anyone have any experience with pdfboxing? in my example i'm trying to save the first page of a PDF as a file, but i get the following exception (and corrupt pdf file output):

(-> (pdf/split-pdf :input "/tmp/example.pdf")
  (.save "/tmp/page-1.pdf"))
Execution error (IOException) at org.apache.pdfbox.cos.COSStream/checkClosed (
COSStream has been closed and cannot be read. Perhaps its enclosing PDDocument has been closed?
where the first page's type is org.apache.pdfbox.pdmodel.PDDocument


Is it considered bad practice to keep atoms (or other mutable state) as values within immutable data structures? I tried this little experiment so that I could see what was going on:

client> (def t {:atom (atom nil)})

client> (update-in t [:atom] #(reset! % true))
{:atom true}

client> t
{:atom #atom[true 0x63a9848e]}


Or is this a pattern that shows up regularly?

Alex Miller (Clojure team)16:07:05

Not uncommon, totally fine

Alex Miller (Clojure team)16:07:36

You get to choose the granularity of your state - a map with several atoms or an atom holding a map

Alex Miller (Clojure team)16:07:44

More atoms gives you more granular state and smaller updates (with the caveat that they can’t be coordinated transactionally)

Alex Miller (Clojure team)16:07:00

In general with Clojure, people tend to make things pretty coarse as atom updates are usually very fast


awesome - thanks!

Alex Miller (Clojure team)16:07:39

cgrand (as usual) had a pretty advanced take on this with refs in

Alex Miller (Clojure team)16:07:22

That’s an oldie but should still work just fine today afaik