Как получить гиперссылки в pdf документе

Я работаю с библиотекой IText7. Мне нужно получить все гиперссылки pdf документа. В интернете я не нашел примера, как это можно сделать. Возможно кто-нибудь знает форум по IText7 или подскажет, как это сделать. Буду благодарен за любую информацию. Спасибо


Ответы (1 шт):

Автор решения: Komdosh

Сам не проверял, но по документации надо взять аннотации с PdfPage и затем проверить, что subtype аннотации PdfName.Link.

  String src  = "test-with-links.pdf";
  String dest = "test-no-links.pdf";

  PdfReader   reader  = new PdfReader(src);
  PdfWriter   writer  = new PdfWriter(dest);
  PdfDocument pdfDoc  = new PdfDocument(reader,writer);

  for( int page = 1; page <= pdfDoc.getNumberOfPages(); ++page ) {
    PdfPage               pdfPage     = pdfDoc.getPage(page);
    List<PdfAnnotation>   annots      = pdfPage.getAnnotations();

    if ((annots == null) || (annots.size() == 0)) {
      System.out.println("no annotations on page " + page);
    }
    else {
      for( PdfAnnotation annot : annots ) {
        // if this annotation has a link, delete it
        if ( annot.getSubtype().equals(PdfName.Link) ) {
          PdfDictionary annotAction = ((PdfLinkAnnotation)annot).getAction();

          if( annotAction.get(PdfName.S).equals(PdfName.URI) ||
              annotAction.get(PdfName.S).equals(PdfName.GoToR) ) {
            PdfString uri = annotAction.getAsString(PdfName.URI);
            System.out.println("URI: " + uri.toString());
          }
        }
      }
    }
  }
  pdfDoc.close();
→ Ссылка