使用 PDFNet 从 PDF 获取 URL

本文关键字:获取 URL PDF PDFNet 使用 | 更新日期: 2023-09-27 18:33:07

我们正在使用 PDFNet 库来提取 PDF 文件的内容。 我们需要做的一件事是提取PDF中的URL。 不幸的是,当您扫描文件中的元素时,您会得到零碎的 URL,并且并不总是清楚哪个片段与哪个部分一起使用。

从PDFNet获取完整URL的最佳方法是什么?

使用 PDFNet 从 PDF 获取 URL

链接作为注释存储在页面上。 您可以执行类似于以下代码的操作,从注释中获取 URI。 try/catch 块之所以存在,是因为如果缺少任何值,它们仍然返回一个 Obj 对象,但你不能在不抛出的情况下对其调用任何方法。

另外,请注意,并非所有看起来像链接的内容都是相同的。 我们从同一个 Word 文件创建了两个 PDF。 我们创建的第一个是打印到PDF。 第二个我们从杂技演员内部创建。

这两个文件中的链接在 Acrobat Reader 中工作正常,但只有第二个文件具有 PDFNet 可以看到的注释。

Page page = doc.GetPage(1);
for (int i = 1; j < page.GetNumAnnots(); j++) {
    Annot annot = page.GetAnnot(i);
    if (!annot.IsValid())
        continue;
    var sdf = annot.GetSDFObj();
    string uri = ParseURI(sdf);
    Console.WriteLine(uri);
}

private string ParseURI(pdftron.SDF.Obj obj) {
    try {
        if (obj.IsDict()) {
            var aDictionary = obj.Find("A").Value();
            var uri = aDictionary.Find("URI").Value();
            return uri.GetAsPDFText();
        }
    } catch (Exception ) {
        return null;
    }
    return null;
}