如何在iTextPdf中更改注释的字体大小?

时间:2011-03-17 14:38:53

标签: java pdf annotations itext

我正在编写一个系统,用于生成包含用户提交的注释的PDF文件。我想减小注释的大小,即每个注释的字体大小。我正在使用Java版的iTextPdf。

我的代码:

PdfAnnotation annotation = PdfAnnotation.createText(pdfStamper.getWriter(),
    new Rectangle(x, valor, x+100f, valor+100f), "authors", 
    comentario.getComentario(), true, "Comment");
annotation.setColor(Color.ORANGE);

我可以像这样缩小字体大小吗?

annotation.setFontSize("2px");

3 个答案:

答案 0 :(得分:0)

从API中我可以看到,我会说:不,这是不可能的。

也许您可以使用setAppearance方法。在iText网站上有一个example,它会创建一个拥有PdfAppearance方法的setFontAndSize对象。

答案 1 :(得分:0)

我从未使用iTextPdf,但其API表示the PdfAnnotation class没有setFontSize()方法。

但是,它确实包含setDefaultAppearanceString() method,它以a PdfContentByte为参数。 PdfContentBytea setFontAndSize() method

答案 2 :(得分:0)

您有两种选择。

  1. 您可以设置默认字体&正如Lord Torgamus所描述的那样。

  2. 您可以使用注释的Rich Text值,您必须使用从PdfDictionary继承的方法PdfAnnotation直接访问该注释:

  3. annotation.put(PdfName.RC, new PdfString( "<font size=\"whatever\">" + 
                                              comentario.getComentario() + 
                                              "</font>" ) );
    

    请注意,iText无法呈现富文本字段外观(至少尚未呈现),因此您必须关闭外观生成,以便生成的PDF将要求查看者执行此操作:

    myStamper.setGenerateAppearances( false );
    

    是的,必须使用压模。

    与Torg的建议相比,这可能更容易......但请注意兔子。它不适合其他人。

    PS:Splash的setAppearance()技巧会起作用,但是你必须自己画出整个东西......背景,边框和文字布局(由于ColumnText而更加容易)