Обновление ссылок PDF в Java

Существующие ссылки можно редактировать, найдя аннотацию ссылки на странице и обновив либо её внешний вид, либо её действие.

Обновление цвета связанного текста

Используйте этот пример, когда область текста, покрытая аннотацией ссылки, должна быть перекрашена.

  1. Откройте исходный PDF в объекте Document.
  2. Найдите аннотации ссылок и создайте прямоугольник поиска текста из каждой области аннотации.
  3. Перекрасьте найденные фрагменты текста и сохраните документ.
public static void linkAnnotationUpdateTextColor(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
            if (annotation.getAnnotationType() == AnnotationType.Link) {
                TextFragmentAbsorber absorber = new TextFragmentAbsorber();
                Rectangle rect = annotation.getRect();
                rect.setLLX(rect.getLLX() - 2);
                rect.setLLY(rect.getLLY() - 2);
                rect.setURX(rect.getURX() + 2);
                rect.setURY(rect.getURY() + 2);
                absorber.setTextSearchOptions(new TextSearchOptions(rect));
                absorber.visit(document.getPages().get_Item(1));
                for (TextFragment textFragment : absorber.getTextFragments()) {
                    textFragment.getTextState().setForegroundColor(Color.getRed());
                }
            }
        }

        document.save(outputFile.toString());
    }
}

Обновление цвета границы ссылки

Используйте этот пример, когда необходимо изменить видимый цвет существующих аннотаций ссылок.

  1. Откройте исходный PDF в объекте Document.
  2. Переберите аннотации страницы и отфильтруйте объекты LinkAnnotation.
  3. Обновите цвет аннотации ссылки и сохраните документ.
public static void linkAnnotationUpdateBorder(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
            if (annotation.getAnnotationType() == AnnotationType.Link && annotation instanceof LinkAnnotation) {
                LinkAnnotation linkAnnotation = (LinkAnnotation) annotation;
                linkAnnotation.setColor(Color.getRed());
            }
        }

        document.save(outputFile.toString());
    }
}

Обновление назначения веб‑ссылки

Используйте этот пример, когда существующая веб‑ссылка должна указывать на новый URI.

  1. Откройте исходный PDF в объекте Document.
  2. Найдите аннотации ссылок, действие которых является GoToURIAction.
  3. Замените URI и сохраните обновлённый документ.
public static void linkAnnotationUpdateWebDestination(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
            if (annotation.getAnnotationType() == AnnotationType.Link && annotation instanceof LinkAnnotation) {
                LinkAnnotation linkAnnotation = (LinkAnnotation) annotation;
                if (linkAnnotation.getAction() instanceof GoToURIAction) {
                    GoToURIAction action = (GoToURIAction) linkAnnotation.getAction();
                    action.setURI("https://www.aspose.com");
                }
            }
        }
        document.save(outputFile.toString());
    }
}