2013-08-12 50 views
1

如何添加矩形(或其他圖形元素)作爲內嵌元素添加到iText PDF中?什麼我想要實現使用iText將矩形添加爲內聯元素

示例代碼:

foreach (Row r in entrylist) 
{ 
    p = new Paragraph(); 
    p.IndentationLeft = 10; 
    p.SpacingBefore = 10; 
    p.SpacingAfter = 10; 

    p.Add(new Rectangle(0, 0, 10, 10)); <<<<<<<<< THAT ONE FAILS 
    p.Add(new Paragraph(r.GetString("caption"), tahoma12b)); 
    p.Add(new Paragraph(r.GetString("description"), tahoma12)); 
    ((Paragraph)p[1]).IndentationLeft = 10; 
    doc.Add(p); 
} 

這件事情像文本塊的一列,其中,他們每個人都有(僅打印)複選框。

我試過各種東西DirectContent,但它需要我提供絕對的X和Y值。我根本沒有。元素應該打印在當前位置,無論哪裏都可以。

任何線索?

+0

你是什麼意思「那一個失敗」?它沒有顯示?它顯示,但不是在預期的位置?它會拋出異常? –

+0

它實際上拋出了一個異常「插入非法元素:30」。 Add方法不歡迎元素的類型。我不一定需要編譯上面的代碼,它只是爲了展示我想要實現的目標。 – Chuck

回答

2

您需要一個Chunk爲此您定義了一個generic tag。例如,在this example列出了許多電影中,在製作電影的年份繪製了一小片pellicule,並且在IMDB鏈接的背景中繪製了一個橢圓。

如果您看一下MovieYears示例,您將瞭解如何使用PdfPageEvent接口及其onGenericTag()方法。你是對的,你不能將Rectangle添加到Paragraph(恕我直言,這沒有多大意義)。如您所示,您需要將矩形繪製到直接內容中,並通過使用setGenericTag()方法獲得Chunk的座標。一旦在頁面上繪製Chunk,其座標將被傳遞給onGenericTag()方法。

+1

工作。雖然有點複雜。就個人而言,我會更喜歡一個我可以重寫OnDraw方法的抽象對象。例如:'MyRectangle:IPdfDrawable' – Chuck