通过使用itextsharp c#,我有一个PDF文件。在该PDF文件中,我们有10页。在PDF文件的第1页,我想在底部有一个超链接来浏览PDF文件的特定页面。例如,在PDF的第一页,我想在底部的超链接转到第5页。注意: - 它不是新创建的文件。我想申请已经创建的文件。
答案 0 :(得分:0)
非常很容易找到this页面。您必须使用Anchor
并为其命名。然后使用#name
:
Anchor click = new Anchor("Click to go to Target");
click.Reference = "#target";
Paragraph p1 = new Paragraph();
p1.Add(click);
doc.Add(p1);
Paragraph p2 = new Paragraph();
p2.Add(new Chunk("\n\n\n\n\n\n\n\n"));
doc.Add(p2);
Anchor target = new Anchor("This is the Target");
target.Name = "target";
Paragraph p3 = new Paragraph();
p3.Add(target);
doc.Add(p3);
在您的情况下:在每个页面上放置这样的锚点,在第一页上引用所有这些锚点。
是的,你知道吗通常,当您打开PDF文件时,PDF Viewer应用程序会显示文档结构的树视图,每个分支或叶子都充当相应章节或部分的链接。 iTextSharp提供了通过其章节和节类生成此树视图的功能。
这表示您无需执行任何操作,只需正确使用Chapter
和Section
即可获得所需内容。
答案 1 :(得分:0)
请查看AddNavigation示例。这是您需要执行的Java版本:
public void manipulatePdf(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 vijay = PdfAnnotation.createLink(stamper.getWriter(), rect, PdfAnnotation.HIGHLIGHT_INVERT, 10, d1);
stamper.addAnnotation(vijay, 1);
PdfDestination d2 = new PdfDestination(PdfDestination.FIT);
PdfAnnotation krishna = PdfAnnotation.createLink(stamper.getWriter(), rect, PdfAnnotation.HIGHLIGHT_PUSH, 1, d2);
stamper.addAnnotation(krishna, 10);
stamper.close();
}
您想使用iTextSharp从第1页导航到第5页。这意味着我们必须进行小幅调整:
首先,您需要创建PdfDestination
:
PdfDestination d = new PdfDestination(PdfDestination.FIT);
C#代码与Java代码相同。
然后你需要创建一个Rectangle
。这是人们可以点击的区域:
Rectangle rect = new Rectangle(0, 806, 595, 842);
C#代码与Java代码相同,但请注意我在这里使用的是harc编码的坐标。我有一个A4页面的现有文档,其创建方式使页面的左下角具有坐标(0, 0)
。我的坐标对应于页面的半英寸上边缘。
现在我们创建一个链接注释:
PdfAnnotation a = PdfAnnotation.CreateLink(stamper.Writer,
rect, PdfAnnotation.HIGHLIGHT_PUSH, 5, d);
您是否注意到C#和Java之间的细微差别?方法CreateLink()
以C#中的大写字母开头,getWriter()
中不存在PdfStamper
,您需要Writer
属性。在这种情况下,我跳到第5页。
最后,我们将注释添加到压模:
stamper.AddAnnotation(a, 1);
请注意,我再次将小写(Java)更改为大写(C#)。
这将创建从第1页到第5页的链接。
完整示例创建从第1页到第10页的链接以及从第10页到第1页的链接。您可以在此处进行测试:primes_links.pdf