2017-09-13 81 views
0

我是新來的itext,我無法讓我的註釋圖標正確顯示。無法使itext矩形與註釋一起正常工作

我正在嘗試爲我的註釋圖標創建一個矩形。我的例子如下:

Rectangle rect = new Rectangle(164, 190, 164, 110); 

chunk_text.setAnnotation(PdfAnnotation.createText(writer, rect, "Warning", comments, false, "Comment"));   

PdfContentByte pdb = new PdfContentByte(writer); 

chunk_free.setAnnotation(PdfAnnotation.createFreeText(writer, rect, comments, pdb)); 

chunk_popup.setAnnotation(PdfAnnotation.createPopup(writer, rect, comments, false)); 

但是,圖標未能出現或只是PDF中的一個小點。

我無法找到我做錯了什麼。

回答

1

你創建一個這樣

Rectangle rect = new Rectangle(164, 190, 164, 110); 

矩形按照JavaDocs

public Rectangle(float llx, 
      float lly, 
      float urx, 
      float ury) 

構造一個Rectangle -object。

參數:

LLX - 左下方X

LLY - 左下Ÿ

URX - 右上角的X

URY - 上部右側y

隨着你左下x等於你的右上x,矩形的寬度爲零。因此,

圖標無法顯示,或者只是PDF中的一個小點而並不令人驚訝。

因此,使用描述足夠大的矩形的座標,例如,

Rectangle rect = new Rectangle(164, 190, 328, 300); 

另一個問題:您可以通過設置它作爲一個塊註釋和(大概)補充說,大塊的PDF添加註釋:

chunk_text.setAnnotation(PdfAnnotation.createText(writer, rect, "Warning", comments, false, "Comment"));   

這種技術最終反正通過替換您的矩形渲染的塊文本的邊界框。因此,它可能不是你想要的。請使用您的PdfWriteraddAnnotation方法。


此外,您還添加了一個與任何其他註釋都無關的Popup註釋。根據規範,這是沒有意義的:

彈出式註釋(PDF 1.3)在彈出式窗口中顯示文本以進行輸入和編輯。它不應單獨出現,而應與標註註釋及其父註釋相關聯,並用於編輯父項文本。

利用iText搭建父註釋parent和彈出式窗口父母關係使用

parent.setPopup(popup); 
+0

它做同樣的事情 – TYD

+0

如果我做writer.addAnnotation一個彈出式註釋popup,似乎什麼都沒有。我必須使用大塊出現。 – TYD

+0

@TYD *「如果我這樣做了writer.addAnnotation,什麼都不會顯示」* - 在編輯我的答案之前,我使用'writer.addAnnotation'進行了測試,它工作正常。因此,你做了超出你告訴我們的錯誤。 – mkl