UPDATE . The author of clj-pdf was so kind as to add links to the library. Here is the updated code using clj-pdf version "1.11.9":
(defn gen-pdf []
(time
(pdf [{:references {:batman [:image "sample_logos/batman.jpeg"]
:superman [:image "sample_logos/superman.jpeg"]}}
(for [i (range 80000)]
[:paragraph
[:reference :batman]
[:reference :superman]])]
"super.pdf")))
that end for 12 seconds on my car.
[clj-pdf "1.11.7" ], 68 5.4Gb .
python:
from reportlab.pdfgen import canvas
from datetime import datetime
batman = "sample_logos/batman.jpeg"
superman = "sample_logos/superman.jpeg"
n = 80000
def hello(c):
for i in range(0, n):
c.drawImage(batman, 0,0)
c.showPage()
for i in range(0, n):
c.drawImage(superman, 0,0)
c.showPage()
t1 = datetime.now()
c = canvas.Canvas("super_py.pdf")
hello(c)
c.save()
t2 = datetime.now()
print (t2 - t1)
, python 2.7.5+ reportlab 2.7 53 108 .
Reportlab , clj-pdf, iText Image :image - . https://github.com/yogthos/clj-pdf/blob/master/src/clj_pdf/core.clj#L461
, as-is:
(let [img (cond
(instance? Image img-data)
img-data
(instance? java.awt.Image img-data)
(Image/getInstance (.createImage ...
(defn gen-pdf []
(let [batman (Image/getInstance "sample_logos/batman.jpeg")
superman (Image/getInstance "sample_logos/superman.jpeg")]
(time
(pdf [{}
(for [i (range 80000)]
[:paragraph
;; [:image "sample_logos/batman.jpeg"]
;; [:image "sample_logos/superman.jpeg"]
[:image batman]
[:image superman]])]
"super.pdf"))))
pdf 17 70
source
share