-2

私は pdf を持っています。ここで、ページ 1 のページ番号は roman 1、つまり "i" です。

次に、この情報を取得する方法です。カタログを使用してページラベル辞書を取得できることを知っています

    CGPDFDictionaryRef catalog = CGPDFDocumentGetCatalog(document);

            if (CGPDFDictionaryGetDictionary(catalog, "PageLabels", &PageLabels) == true)
        {

        }

ページラベル辞書にアクセスすることで、ページの範囲と対応する演算子を見つけて、実際にラベルを知る必要があります。つまり、「D」はアラビア 10 進数、「r」はローマン...

CGPDFPageRef からこのラベルに直接アクセスする方法はありますか

4

2 に答える 2

1

簡単に言えばいいえです。CGPDFPageRef からその情報を取得することはできません。
最初に、CGPDFPageRef オブジェクトのページ番号 (ゼロベース) を決定する必要があります。次に、ページ ラベル配列を検索し、ページ番号がどのラベルに収まるかを判断します。ページ ラベルのプロパティ (番号付けスタイル、開始ページ番号など) に基づいて、視覚的なページ番号 (Acrobat がローマ数字で表示するページ番号) を作成します。

更新: /PageLabels エントリは辞書です。その /Nums エントリは、次の形式の配列です: 数値ディクショナリ 数値ディクショナリ ... 数値ディクショナリ。
番号はドキュメントの開始ページ インデックス (ゼロ ベース) であり、辞書はページ ラベルを記述します。ページ インデックスから次のページ インデックスまたはドキュメントの最後までのすべてのページで、インデックスの横に定義されたラベルが使用されます。ページ ラベル ディクショナリは、PDF 仕様セクション 12.4 で説明されています。ページ ラベル ディクショナリの /S エントリは番号付けタイプを指定し、値 /r または /R はローマン番号付けタイプを指定します。

ドキュメントで /D 値 (10 進数) が指定されているとおっしゃっていますが、Adobe Reader ではページ番号ボックスにローマ数字が表示されますので、調査のために PDF ファイルを提供してください。

于 2015-08-16T10:03:25.340 に答える