2

我正在使用 Clojure 的 clj-pdf 库来创建包含图表的 pdf。我正在使用 Incanter 库制作图表并将图像转换为字节数组。然后我尝试使用 clj-pdf 制作一个有 4 个图表的 pdf,每个角落一个。当我这样做时,我收到一个错误 IllegalArgumentException 不知道如何从以下位置创建 ISeq:clojure.lang.Keyword clojure.lang.RT.seqFrom (RT.java:505)
我可以成功地将图像添加到表格之外,但是格式很烂,每行一张图片。任何人如何解决这个问题?

这是我正在尝试的代码行:

(pdf [{} [:table {} [:cell [:image {} plot1-bytearr]
         [:image {} plot2-bytearr]]]] "test.pdf")

编辑
跟踪链接:http: //pastebin.com/b7DEnjXY
链接到可行(希望)示例: http: //pastebin.com/fPvjFFbi

4

1 回答 1

2

A:table需要在行中指定,例如

(pdf [{} [:table row1 
                 row2
                 row3]] 
     "test.pdf")

行需要是序列。

(pdf [{} [:table ["11" "12" "13"]
                 ["21" "22" "23"]]] "test.pdf")

您在一个单元格中放置了两个图像,但是

(pdf [{} [:table [[:cell "11" "12" "13"]]
                 ["21" "22" "23"]]] "test.pdf")

将省略“12”和“13”并创建一个表格,其中第一行中包含 11、21 和 22,第二行中的第一个单元格为 23。我认为不:cell支持这种用法。如果您想在一个单元格中使用多个单元格,我将在支持:table的向量内创建另一个向量:cell

根据您的示例,解决方案是

(pdf [{} [:table [[:image plot1-bytearr][:image plot2-bytearr]]]]
     "test.pdf")

请注意 s 向量周围的额外括号:image。Clj-pdf 尝试将您的:cell关键字读取为包含 单元格的序列:table,因此异常告诉您它需要一个序列。

  • 这不会给你 4 个图表。由于您只提供了两个,我想这可以解决您的问题。
于 2013-07-03T03:42:05.073 回答