0

由于从 LinkAnnotation 到 SquareAnnotation 的简单更改,我在使用 icepdf 时遇到了问题。

特别是我有来自icepdf网站的这个例子:

https://github.com/svn2github/icepdf/blob/master/examples/annotation/NewAnnotationPostPageLoad.java

所以有一个有趣的部分(过滤评论并删除链接操作):

.......
for (WordText wordText: foundWords) {
    // create a new link annotation
    LinkAnnotation linkAnnotation = (LinkAnnotation) AnnotationFactory.buildAnnotation(
        document.getPageTree().getLibrary(), Annotation.SUBTYPE_LINK,
        wordText.getBounds().getBounds());
    BorderStyle borderStyle = new BorderStyle();
    borderStyle.setBorderStyle(BorderStyle.BORDER_STYLE_SOLID);
    borderStyle.setStrokeWidth(2.0f);
    linkAnnotation.setBorderStyle(borderStyle);
    linkAnnotation.setColor(Color.red);
    AnnotationComponent annotationComponent = AnnotationComponentFactory.buildAnnotationComponent(
        linkAnnotation, controller.getDocumentViewController(),
        pageViewComponent, controller.getDocumentViewController().getDocumentViewModel()
    );

    controller.getDocumentViewController().getAnnotationCallback().newAnnotation(
        pageViewComponent, annotationComponent);
}
....

我要做的就是将linkAnnotation 更改为SquareAnnotation。所以我将这些行改为:

AbstractPageViewComponent pageViewComponent = pageComponents.get(pageIndex);
for (WordText wordText: foundWords) {
    // create a new link annotation
    SquareAnnotation linkAnnotation = (SquareAnnotation) AnnotationFactory.buildAnnotation(
        document.getPageTree().getLibrary(), Annotation.SUBTYPE_SQUARE,
        wordText.getBounds().getBounds());
    linkAnnotation.setColor(Color.red);
    linkAnnotation.setFillColor(true);
    linkAnnotation.setFillColor(new Color(1, 1, 0, 0.5f));
    AnnotationComponent annotationComponent = AnnotationComponentFactory.buildAnnotationComponent(
        linkAnnotation, controller.getDocumentViewController(),
        pageViewComponent, controller.getDocumentViewController().getDocumentViewModel()
    );
    controller.getDocumentViewController().getAnnotationCallback().newAnnotation(
        pageViewComponent, annotationComponent);
}

}

但是现在,注释在查看器中不再可见。我必须编辑注释并再次更改颜色,之后,注释可见正确。

我的最终目标是实现一个小型无头程序来阅读 pdf,用方形注释突出显示一些单词,然后将该状态保存到 IMAGE。到目前为止,它与示例中给出的标准 LinkAnnotation 一起工作,但似乎无法让 SquareAnnotation 工作。

4

1 回答 1

0

查看 org.icepdf.ri.common.tools.SquareAnnotationHandler() 方法 mouseReleased() 将帮助您正确设置边界。我想你所缺少的就是。

linkAnnotation.resetAppearanceStream(getPageTransform());

于 2015-03-03T20:01:55.503 回答