【问题标题】:clj-pdf: Error adding image in a tableclj-pdf:在表格中添加图像时出错
【发布时间】:2013-07-02 19:11:19
【问题描述】:

我正在使用 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

【问题讨论】:

  • 您能否提供更多代码和/或完整的堆栈跟踪(在 gist 或 pastebin 中,因为 Clojure 堆栈往往很大)?

标签: pdf clojure


【解决方案1】:

需要在行中指定: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 的这种用法。如果您想在一个单元格中使用多个单元格,我会在支持的 :cell 向量内创建另一个 :table 向量。

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

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

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

  • 这不会为您提供 4 个图表。由于您只提供了两个,我想这可以解决您的问题。

【讨论】:

  • 非常感谢!我将我的方法复制到显示数据上,但没有意识到没有 :cell 也可以。完美运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 2015-11-21
  • 2021-11-10
相关资源
最近更新 更多