PDFNetライブラリを使用してPDFファイルのコンテンツを抽出しています。私たちがする必要があることの1つは、PDF内のURLを抽出することです。残念ながら、ファイル内の要素をスキャンすると、URLが分割されて取得され、どの部分がどの部分に対応するかが常に明確になるとは限りません。
PDFNetから完全なURLを取得するための最良の方法は何ですか?
リンクは注釈としてページに保存されます。次のコードのようなことを実行して、アノテーションから URI を取得できます。try/catch ブロックが存在するのは、値のいずれかが欠落している場合でも Obj オブジェクトを返しますが、スローせずにメソッドを呼び出すことはできないためです。
また、リンクのように見えるものすべてが同じではないことに注意してください。同じ Word ファイルから 2 つの PDF を作成しました。PDFへの印刷で作成した最初のもの。2 つ目は、Acrobat 内で作成したものです。
両方のファイルのリンクは Acrobat Reader で正常に機能しますが、2 番目のファイルのみに 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;
}