2017-09-13 82 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