iText PDF:如何创建指向PDF其他部分的内部链接

时间:2018-06-21 13:48:17

标签: java itext

我正在使用itext 5生成pdf文件,并使用Anchor创建指向pdf中不同页面的内部链接。链接工作正常,但是,在Adobe PDF Reader中,将鼠标指针放在链接的底部边缘时,“ W”出现在“手动”工具的顶部,单击该链接时,它将在Web浏览器中打开一个新文件,但不会重定向到链接页面。这是示例代码。请建议如何禁用在浏览器中打开内部链接。

import com.itextpdf.text.Anchor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;


public class AnchorExample {

public static void main(String[] args) {

Document document = new Document();

try {
    PdfWriter.getInstance(document,
            new FileOutputStream("Anchor2.pdf"));

    document.open();


        Anchor anchor =
        new Anchor("Jump down to next paragraph");
        anchor.setReference("#linkTarget");
        Paragraph paragraph = new Paragraph();
        paragraph.add(anchor);
        document.add(paragraph);

        document.newPage();

        Anchor anchorTarget =
        new Anchor("This is the target of the link above");
        anchorTarget.setName("linkTarget");
        Paragraph targetParagraph = new Paragraph();
        targetParagraph.setSpacingBefore(50);

        targetParagraph.add(anchorTarget);
        document.add(targetParagraph);


    document.close();
} catch (DocumentException e) {
    e.printStackTrace();
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

}
}

1 个答案:

答案 0 :(得分:1)

使用@Override public boolean equals(Object object) { if (object == null || !getClass().isAssignableFrom(object.getClass())) { return false; } else { var other = (Tobra) object; return Objects.equals(this.cod, other.cod); } } 进行内部链接是过去的事情。我看到您使用的是iText的较早版本,因为Anchor类(直到iText 5才可用)已由Anchor类(在iText 7中引入)代替。参见overview of the iText 7 building block classes

即使在iText 5中,也不常用Link作为本地目的地。最好使用Anchor代替Chunk,使用Anchor方法定义目标,并使用setLocalDestination()方法定义链接:< / p>

setLocalGoto()

另请参阅几乎重复的问题Add anchor to pdf using itext java。就像您从问题而不是从答案复制代码一样(这确实很奇怪)。