什么是格式化页码?
在福昕PDF编辑器左侧的侧边栏中,打开缩略图,选中一个缩略图后右键,可以看见编辑器中有格式化页码的功能,可以让原本是“1,2,3,4”格式的页码,增加前缀,或改为罗马数字等样式。
在区分文档目录、文档章节时比较常见,在用户通过缩略图查找内容时能给予提示用于区分不同章节等信息,如下图所示:
通过SDK实现的示例代码如下:
void addPageLanbles()
{
FR_Document frDocument = FRAppGetActiveDocOfPDDoc();
FPD_Document fpdDocument = FRDocGetPDDoc(frDocument);
FPD_Object docObj= FPDDocGetRoot(fpdDocument);
docObj = FPDObjectGetDict(docObj);
FPD_Object pageLablesObj= FPDDictionaryNew();
FPD_Object numsArray = FPDArrayNew();
//从第0页开始,是阿拉伯数字形式的页码
int startPageIndex = 0;
FPD_Object pageLable = FPDDictionaryNew();
//页码序号类型: D 十进制阿拉伯数字;R 大写罗马数字;r 小写罗马数字; A 大写字母; a小写字母
FPDDictionaryAddValue(pageLable, "S", FPDNameNew( "D"));
FPDDocAddIndirectObject(fpdDocument, pageLable);
FPDArrayAddInteger(numsArray, startPageIndex);
FPDArrayAddReference2ToDoc(numsArray, fpdDocument, pageLable);
//从第3页开始,自定义的前缀
startPageIndex = 3;
pageLable = FPDDictionaryNew();
FPDDictionaryAddValue(pageLable, "S", FPDNameNew("R"));//罗马数字
FPDDictionaryAddValue(pageLable, "P", FPDStringNewW(L"foxit福昕_"));
//该前缀出现的第一页,页码号从1开始,
FS_INT32 prefixSatrt = 1;
FPDDictionaryAddValue(pageLable, "St",FPDNumberNewByInt(prefixSatrt));
FPDDocAddIndirectObject(fpdDocument, pageLable);
FPDArrayAddInteger(numsArray, startPageIndex);//从第三也开始显示带有前缀的前缀页码
FPDArrayAddReference2ToDoc(numsArray, fpdDocument, pageLable);
//从第6页开始不显示页码
startPageIndex = 6;
FPD_Object pageLable2= FPDDictionaryNew();
FPDDictionaryAddValue(pageLable2, "P", FPDStringNewW(L""));//前缀为空,并且没有页码(S)
FPDDocAddIndirectObject(fpdDocument, pageLable2);
FPDArrayAddInteger(numsArray, startPageIndex);
FPDArrayAddReference2ToDoc(numsArray, fpdDocument, pageLable2);
FPDDictionaryAddValue(pageLablesObj, "Nums", numsArray);
FPDDictionaryAddValue(docObj, "PageLabels", pageLablesObj);
FPDDocSave(fpdDocument, "D:/test/AddPageLables.pdf", 0, false);
}
效果如下: