如何在 iText 中修改 PdfAnnotations 的大小并禁用某些选项

How to modify size for PdfAnnotations in iText and disable some options

我有一个要求使注释的内容不可编辑并禁用选项。所以,

1. 是否可以禁用 PdfAnnotation 对象(文本、图章等)的选项下拉列表 iText.If 是的,那么如何??
2. 注释框(用于弹出窗口、文本等)的大小也可以更改吗? 使用此 PdfAnnotation.FLAGS_READONLY

使注释中的文本不可编辑

如何在此处禁用下拉选项 http://imgur.com/lA5k1hk

您无法阻止人们使用下拉列表,但您可以确保 "Reply" 和 "Delete" 等功能不会显示在该列表中 加密 使用所有者密码的文档,确保您没有设置允许人们添加注释的选项。 PDF 加密后,您会注意到下拉列表中的条目是有限的。 (请参阅 How to protect an already existing PDF with a password? 了解如何加密文档。)

更改注释的大小就是替换为该注释定义的 PDF 矩形。请查看 MovePopup 示例。

我们有以下注释和弹出窗口:

顺便说一句,我知道文本注释是 /Annots 数组中的第一个注释,而弹出窗口是第二个。这意味着我可以在我的代码中偷工减料:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(src);
    PdfDictionary page = reader.getPageN(1);
    PdfArray annots = page.getAsArray(PdfName.ANNOTS);
    PdfDictionary sticky = annots.getAsDict(0);
    PdfArray stickyRect = sticky.getAsArray(PdfName.RECT);
    PdfRectangle stickyRectangle = new PdfRectangle(
        stickyRect.getAsNumber(0).floatValue() - 120, stickyRect.getAsNumber(1).floatValue() -70,
        stickyRect.getAsNumber(2).floatValue(), stickyRect.getAsNumber(3).floatValue() - 30
    );
    sticky.put(PdfName.RECT, stickyRectangle);
    PdfDictionary popup = annots.getAsDict(1);
    PdfArray popupRect = popup.getAsArray(PdfName.RECT);
    PdfRectangle popupRectangle = new PdfRectangle(
        popupRect.getAsNumber(0).floatValue() - 250, popupRect.getAsNumber(1).floatValue(),
        popupRect.getAsNumber(2).floatValue(), popupRect.getAsNumber(3).floatValue() - 250
    );
    popup.put(PdfName.RECT, popupRectangle);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    stamper.close();
}

我通过从此处注释的 /Rect 值中的 xy 值中减去 120、70、250... 用户单位,使两个矩形都变大了还有。

结果如下所示:

文本注释图标和带有文本的实际弹出窗口现在都变大了。

由您调整代码,以便:

  1. 您找到要放大的实际弹出式注释,
  2. 您可以使用您选择的用户单位数量更改该注释的矩形。