Как добавить несколько ссылок в одном PDF с помощью iText - PullRequest
0 голосов
/ 07 марта 2019

Я использую теги Link и Destination в iText 7.0.5 для создания ссылок при создании документа в формате PDF.Когда есть только одна ссылка и пункт назначения, он работает как положено.Но когда я добавляю несколько ссылок и место назначения, это не работает, как ожидалось.Например, есть три ссылки и 3 назначения, и каждая ссылка сопоставлена ​​с различным назначением.Если я нажму на третью ссылку в PDF, она будет перенаправлена ​​на третий пункт назначения, но если я нажму на первую и вторую ссылки, они также перенаправят на третий пункт назначения вместо первого или второго пункта назначения.Ниже приведен пример кода, как я создаю ссылку и места назначения с помощью iText.Пожалуйста, дайте мне знать, в чем может быть проблема здесь.Есть ли другой способ добиться этого.Спасибо.

// Документ PDF будет содержать эти таблицы.Назначение

    Table destinationTable1 = new Table(1);
    Cell cell = new Cell().add(addHeaderCellWithBorder("First Destination"));
    cell.setProperty(Property.DESTINATION, "dest1");
    destinationTable1.addCell(cell);

    Table destinationTable2 = new Table(1);
    Cell cell = new Cell().add(addHeaderCellWithBorder("Second Destination"));
    cell.setProperty(Property.DESTINATION, "dest2");
    destinationTable2.addCell(cell);

// Создание ссылки в другой таблице

    Table linkTable1 = new Table(100);
    Cell linkcell1 = new Cell();
    Paragraph p1 = new Paragraph();
    PdfAction firstLink = PdfAction.createGoTo("dest1");
    PdfLinkAnnotation firstLinkAnnot = new PdfLinkAnnotation(new Rectangle(0, 0, 0, 0))
            .setHighlightMode(PdfAnnotation.HIGHLIGHT_INVERT).setAction(firstLink)
            .setBorderStyle(PdfAnnotation.STYLE_UNDERLINE);
    Link link1 = new Link("First Link", firstLinkAnnot);
    p1.add(link1.setUnderline()).setFontColor(Color.BLUE).setFontSize(7).setPaddingTop(1).setMultipliedLeading(1);
    linkTable1.addCell(linkcell1.add(p1).setBorder(Border.NO_BORDER));

    Table linkTable2 = new Table(100);
    Cell linkcell2 = new Cell();
    Paragraph p2 = new Paragraph();
    PdfAction secondLink = PdfAction.createGoTo("dest2");
    PdfLinkAnnotation secondLinkAnnot = new PdfLinkAnnotation(new Rectangle(0, 0, 0, 0))
            .setHighlightMode(PdfAnnotation.HIGHLIGHT_INVERT).setAction(secondLink)
            .setBorderStyle(PdfAnnotation.STYLE_UNDERLINE);
    Link link2 = new Link("Second Link", secondLinkAnnot);
    p2.add(link2.setUnderline()).setFontColor(Color.BLUE).setFontSize(7).setPaddingTop(1).setMultipliedLeading(1);
    linkTable2.addCell(linkcell2.add(p2).setBorder(Border.NO_BORDER));
...