我有一些包含URL和mailto形式的超链接的PDF。现在是否有任何方式或工具(可能是第三方)从PDF中提取超链接元信息,如坐标,链接类型和目标地址。任何帮助,高度赞赏。来自PDF的超链接检测
我已经尝试使用iText和PDFBox,但没有大的成功,甚至有些第三方软件也不能提供我想要的输出。
我曾尝试利用iText
PdfReader myReader = new PdfReader("pdf File Path");
PdfDictionary pageDict = myReader.getPageN(1);
PdfArray annots = pageDict.getAsArray(PdfName.ANNOTS);
System.out.println(annots);
ArrayList<String> dests = new ArrayList<String>();
if(annots != null)
{
for(int i=0; i<annots.size(); ++i)
{
PdfDictionary annotDict = annots.getAsDict(i);
PdfName subType = annotDict.getAsName(PdfName.SUBTYPE);
if (subType != null && PdfName.LINK.equals(subType))
{
PdfDictionary action = annotDict.getAsDict(PdfName.A);
if(action != null && PdfName.URI.equals(action.getAsName(PdfName.S)))
{
dests.add(action.getAsString(PdfName.URI).toString());
} // else { its an internal link }
}
}
}
System.out.println(dests);
@ Bobrovsky答案中的示例使用Doxotic搜索链接注释,并使用iText搜索链接注释或PDFBox将被类似地设计您确定文档中的链接确实是链接注释吗?例如。 Adobe Reader有一个选项,它使内容中的地址可点击,就好像它们是链接注释,而不是。也许这样的功能让你相信有链接注释,而实际上并没有。 (顺便说一句,你可能想提供你尝试过的代码;也许这是错误的)。 – mkl
非常感谢你已经完成了它。其实我的代码工作正常,它是Adobe创建悬停链接的财产。您能否为我提供Adobe创建此类媒体资源的规范以便我可以检查它 –
Adobe Reader只是在页面内容中搜索它认为是URL的内容并使它们互动。您可以在首选项中打开或关闭此行为。我不知道哪些* specs *提供。 – mkl