gpt4 book ai didi

java - 如何找到要跳转到的页面。我使用 PDFBox 2.0.0 和 PDActionGoTo

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:07:43 26 4
gpt4 key购买 nike

我使用 pdfbox 2.0,我在一个文件 pdf 中找到了所有内部链接。但是我不知道如何找到要跳转到的页面?我在第 20 页有一个内部链接“第 1 章”,这是我使用过的文件 jquery cookbook.pdf

public static void main(String[] args) throws IOException {
PDDocument doc = null;
doc = PDDocument.load(new File("D:\\demoConverter\\input\\jQuery_Cookbook.pdf"));
int pageNum = 0;
doc.getNumberOfPages();
for (PDPage page : doc.getPages()) {
pageNum++;
List<PDAnnotation> annotations = page.getAnnotations();
for (PDAnnotation annot : annotations) {
if (annot instanceof PDAnnotationLink) {
PDAnnotationLink link = (PDAnnotationLink) annot;

PDAction action = link.getAction();
if (action instanceof PDActionURI) {
PDActionURI uri = (PDActionURI) action;
}
// internal link
if (action instanceof PDActionGoTo) {
PDDestination destination = ((PDActionGoTo)action).getDestination();
// how to get page will to jump to
}
}
}
}

最佳答案

此类目的地可以是页面目的地或命名目的地。页面目标很简单,命名目标需要在名称表中查找。

if (action instanceof PDActionGoTo) 
{
PDPageDestination pageDestination = null;
PDPage page = null;
PDDestination destination = ((PDActionGoTo)action).getDestination();
if (destination instanceof PDPageDestination)
{
pageDestination = (PDPageDestination) destination;
page = pageDestination.getPage();
}
else if (destination instanceof PDNamedDestination)
{
pageDestination = doc.getDocumentCatalog().findNamedDestinationPage((PDNamedDestination) destination);
if (pageDestination == null)
{
return null;
}
page = pageDestination.getPage();
}
else
{
// error handling
}
}

关于java - 如何找到要跳转到的页面。我使用 PDFBox 2.0.0 和 PDActionGoTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36790374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com