如何使用IText中的链接从同一个PDF文件中的一个页面导航到另一个页面?

问题描述 投票:0回答:1

我有2个PDF文件,一个PDF文件是使用Apache FOP创建的,另一个PDF文件是通过转换word文档创建的。我需要使用IText将这些PDF合并到单个PDF文件中,这已经完成了。除此之外,我需要在我的第一个PDF中创建一个链接,该链接必须将我带到已合并的第二个PDF的第一页。

这里的问题是我需要通过查找像“Go To Page”这样的字符串/文本来创建第一个PDF的链接,如果我在我的第一个PDF中找到该字符串,我需要将该字符串替换为链接,并且点击该链接需要带我到所需的页面。

下面的代码实际上为我做了页面导航工作,但是我无法通过按照我的要求创建链接来做到这一点。

是否可以找到字符串/文本的矩形坐标,以便我可以传递这些坐标来创建链接?或者有没有办法用itext替换我的字符串作为链接?

我正在使用IText 5.x.

 public void pdfNavigation(String src, String dest) throws IOException, DocumentException 
{
  PdfReader reader = new PdfReader(src);
  PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
  PdfDestination d1 = new PdfDestination(PdfDestination.FIT);
  Rectangle rect = new Rectangle(0, 806, 595, 842);
  PdfAnnotation annotation1= PdfAnnotation.createLink(stamper.getWriter(), 
  rect, 
  PdfAnnotation.HIGHLIGHT_INVERT, 10, d1);
  stamper.addAnnotation(annotation1, 1);
  PdfDestination d2 = new PdfDestination(PdfDestination.FIT);
  PdfAnnotation annotation2= PdfAnnotation.createLink(stamper.getWriter(), 
  rect, 
  PdfAnnotation.HIGHLIGHT_PUSH, 1, d2);
  stamper.addAnnotation(annotation2, 4);
  stamper.close();
 }

提前感谢您的帮助!

java itext pdf-generation
1个回答
0
投票

你可以使用Chunk类。我想你会从this link得到答案。

您也可以使用命名操作,如下面的代码,您可以在iTEXT文档中找到(链接在下面给出)。

Paragraph p = new Paragraph()
    .add("Go to last page")
    .setAction(PdfAction.createNamed(PdfName.LastPage));
document.add(p);
p = new Paragraph()
    .add("Go to first page")
    .setAction(PdfAction.createNamed(PdfName.FirstPage));
document.add(p);

https://itextpdf.com/en/resources/books/itext-7-building-blocks/chapter-6-creating-actions-destinations-and-bookmarks

https://itextpdf.com/en/resources/examples/itext-7/chapter-6-actions-destinations-bookmarks#2568-c06e02_namedaction.java

© www.soinside.com 2019 - 2024. All rights reserved.