iOS: 如何在 pdf 中检索 'page number label' 页面?
iOS: How retrieve 'page number label' of a page in pdf?
我有一个 pdf 文件,其中第 1 页的页码为 roman 1,即 "i"
现在如何获取这些信息。
我知道使用目录我可以获得页面标签字典
CGPDFDictionaryRef catalog = CGPDFDocumentGetCatalog(document);
if (CGPDFDictionaryGetDictionary(catalog, "PageLabels", &PageLabels) == true)
{
}
并且通过访问页面标签字典,我必须找到页面范围和相应的运算符才能真正了解标签。即:"D" 表示阿拉伯十进制,"r" 表示罗马...
有没有办法直接从 CGPDFPageRef 访问这个标签
你试过了吗CGPDFDocumentGetPage
Return the PDF page corresponding to the specified page number, or NULL if no such page exists in the document. Pages are numbered starting at 1.
然后您可以在
之后进行任何必要的转换
简短的回答是否定的,您无法从 CGPDFPageRef 中获取该信息。
首先,您必须确定 CGPDFPageRef 对象的页码(从零开始)。然后搜索页面标签数组并确定页码适合哪个标签。根据页面标签属性(编号样式、起始页码等)构建可视页码(Acrobat 显示为罗马数字的页码)。
更新: /PageLabels 条目是一个字典。它的 /Nums 条目是一个数组,格式为:数字字典数字字典 ... 数字字典。
该数字是文档中的起始页索引(从零开始),字典描述了页面标签。从页面索引开始到下一页索引或文档末尾的所有页面都将使用索引旁边定义的标签。页面标签字典在 PDF specification 12.4 节中描述。页面标签字典中的 /S 条目指定编号类型,值 /r 或 /R 指定罗马编号类型。
由于您提到您的文档指定了 /D 值(十进制编号),但在 Adobe Reader 中您在页码框中看到了罗马数字,请提供 PDF 文件以供调查。
我有一个 pdf 文件,其中第 1 页的页码为 roman 1,即 "i"
现在如何获取这些信息。 我知道使用目录我可以获得页面标签字典
CGPDFDictionaryRef catalog = CGPDFDocumentGetCatalog(document);
if (CGPDFDictionaryGetDictionary(catalog, "PageLabels", &PageLabels) == true)
{
}
并且通过访问页面标签字典,我必须找到页面范围和相应的运算符才能真正了解标签。即:"D" 表示阿拉伯十进制,"r" 表示罗马...
有没有办法直接从 CGPDFPageRef 访问这个标签
你试过了吗CGPDFDocumentGetPage
Return the PDF page corresponding to the specified page number, or NULL if no such page exists in the document. Pages are numbered starting at 1.
然后您可以在
之后进行任何必要的转换简短的回答是否定的,您无法从 CGPDFPageRef 中获取该信息。
首先,您必须确定 CGPDFPageRef 对象的页码(从零开始)。然后搜索页面标签数组并确定页码适合哪个标签。根据页面标签属性(编号样式、起始页码等)构建可视页码(Acrobat 显示为罗马数字的页码)。
更新: /PageLabels 条目是一个字典。它的 /Nums 条目是一个数组,格式为:数字字典数字字典 ... 数字字典。
该数字是文档中的起始页索引(从零开始),字典描述了页面标签。从页面索引开始到下一页索引或文档末尾的所有页面都将使用索引旁边定义的标签。页面标签字典在 PDF specification 12.4 节中描述。页面标签字典中的 /S 条目指定编号类型,值 /r 或 /R 指定罗马编号类型。
由于您提到您的文档指定了 /D 值(十进制编号),但在 Adobe Reader 中您在页码框中看到了罗马数字,请提供 PDF 文件以供调查。