特定の命名規則に一致するPDFからブックマークを抽出するLINQコードがいくつかあります(Aspose.Pdfを使用)。
IOrderedEnumerable<Bookmark> magicBookmarks = (
from bookmark in allBookmarks.AsEnumerable()
where bookmark.Title.StartsWith(MAGIC_PHRASE)
// ... other criteria
orderby bookmark.PageNumber ascending
select bookmark
);
このBookmark
クラスにはPageNumber
、ブックマークが開始するページ番号を取得するというプロパティがあります。私の状況では、ブックマークは1...nページのセクションを表すことができます。
私がやりたいのは、このシーケンスを別のシーケンスTuple<int, int>
(または同等の「ペア」構造)に変換することです。ここで、各ペアのItem1はPageNumber
ソースシーケンスの対応する要素の値に等しく、Item2はソースシーケンスの次の要素から1を引いたもの(この演習では、ソースシーケンスのすべてのブックマークが、それらが抽出されたドキュメント内で連続して発生すると想定します)。
つまり、最終結果を、ブックマークされた各PDFセクションの開始ページと終了ページを表す一連のペアにする必要があります。