2013-07-02 15 views
2

我正在使用Clojure的clj-pdf庫來創建包含圖表的pdf。我使用Incanter庫製作圖表並將圖像轉換爲字節數組。然後,我試圖用clj-pdf製作一張包含4個圖表的pdf,每個角落一個。當我這樣做時,我得到一個錯誤IllegalArgumentException不知道如何創建ISeq:clojure.lang.Keyword clojure.lang.RT.seqFrom(RT.java:505)
我可以成功地添加圖像以外的圖像但格式化很糟糕,每行一個圖像。任何人如何解決這個問題?clj-pdf:在表中添加圖像時出錯

繼承人的代碼行我想:

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

編輯
鏈接跟蹤:http://pastebin.com/b7DEnjXY
鏈接到可行的(希望)例如:http://pastebin.com/fPvjFFbi

+0

你可以提供更多的代碼和/或完整的堆棧跟蹤(在Clojure堆棧往往是巨大的要點或pastebin)嗎? – noahlz

+0

完成並完成! – postelrich

回答

2

一個: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") 

請注意周圍的:image S中的向量額外的支架。 Clj-pdf會嘗試將:cell關鍵字讀作包含:table的單元格的序列,因此例外情況會告訴您它期待的是序列。

  • 這不會給你4個圖表。既然你只提供了兩個,我想這解決了你的問題。
+0

非常感謝!我複製了我的方法來顯示數據,並沒有意識到我沒有:單元格。完美的作品 – postelrich