-2

我有一个 pdf ,其中第 1 页的页码为 roman 1 即“i”

现在如何获取这些信息。我知道使用目录我可以获得页面标签字典

    CGPDFDictionaryRef catalog = CGPDFDocumentGetCatalog(document);

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

        }

通过访问页面标签字典,我必须找到页面范围和相应的运算符才能真正了解标签。即:“D”代表阿拉伯十进制,“r”代表罗马......

有没有办法从 CGPDFPageRef 直接访问这个标签

4

2 回答 2

1

简短的回答是否定的,您无法从 CGPDFPageRef 获取该信息。
首先,您必须确定 CGPDFPageRef 对象的页码(从零开始)。然后您搜索页面标签数组并确定您的页码适合哪个标签。根据页面标签属性(编号样式、起始页码等)构建可视页码(Acrobat 显示为罗马数字的页码)。

更新: /PageLabels 条目是一个字典。它的 /Nums 条目是一个数组,格式为:数字字典数字字典 ... 数字字典。
该数字是文档中的起始页索引(从零开始),字典描述了页面标签。从页面索引开始到下一页索引或文档结束的所有页面都将使用索引旁边定义的标签。页面标签字典在PDF 规范第 12.4 节中描述。页标签字典中的 /S 条目指定编号类型,值 /r 或 /R 指定罗马编号类型。

由于您提到您的文档指定了 /D 值(十进制编号),但在 Adob​​e Reader 中,您在页码框中看到罗马数字,请提供 PDF 文件以供调查。

于 2015-08-16T10:03:25.340 回答
1

你试过CGPDFDocumentGetPage

返回与指定页码对应的 PDF 页面,如果文档中不存在该页面,则返回 NULL。页面从 1 开始编号。

然后,您可以在之后进行任何必要的转换

于 2015-08-15T15:22:59.747 回答