Copy link to clipboard
Copied
Hi Team,
I am running "auto tag document" for PDF to convert it as accessible PDF, but as per PDF/UA standard all the "Link" tag should be nested within "Reference" tag. so i have manged to create the reference tag above the link tag by using the below code, but how brink the Link tag as child to reference tag will "PDSMCGetPDEContainer" will help to achive this process, if so how to obtain the PDSMC parameter to pass in this method, or is there is any other api is there to achive this requirment.
ASInt32 numKids = PDSElementGetNumKids(element);
ASInt32 kidIndex;
for (kidIndex = 0; kidIndex < numKids; ++kidIndex)
//for (kidIndex = numKids - 1; kidIndex >= 0; --kidIndex)
{
PDSElement kid;
PDSMCInfo mcidInfo;
ASAtom kidType = PDSElementGetKidWithMCInfo(element,kidIndex,&kid,&mcidInfo,NULL,NULL);
char buf[256], title[128];
buf[0] = title[0] = '\0';
if (kidType == OBJR_K) {
PDSElement parent = CosNewNull();
PDSOBJGetParent(kid, &parent);
if (!CosObjEqual(parent, CosNewNull())) {
ASInt32 title_size = PDSElementGetTitle(parent, reinterpret_cast<ASUns8*> (title));
sprintf(buf, "\tOBJR-elem - parent - %s - %s ", ASAtomGetString(PDSElementGetType(parent)), title);
}
else
strcpy(buf, "\tOBJR-elem");
}
else if (kidType == MC_K) {
sprintf(buf, "\t\tMC-elem - mcid=%d", mcidInfo.mcid);
}
else if (kidType == StructElem_K) {
sprintf(buf, "\tStruct-elem - %s ", ASAtomGetString(PDSElementGetType(kid)));
const char * name = ASAtomGetString(PDSElementGetType(kid));
TagLocation++;
std::string TagName(name);
if (TagName == "Link")
{
PDSElement Kidparent;
ASBool KidparentIsTreeRoot;
PDSElementGetParent(kid, &Kidparent, &KidparentIsTreeRoot);
const char * Pname = ASAtomGetString(PDSElementGetType(Kidparent));
PDSElement ReferenceTitle;
PDSElementCreate(pdDoc, &ReferenceTitle);
PDSElementSetType(ReferenceTitle, ASAtomFromString("Reference"));
PDSElementInsertKid(Kidparent, ReferenceTitle, kidIndex - 1);
// PDEContainer Container = PDSMCGetPDEContainer();
//PDEContainerGetContent((PDSMC)kid);
//PDSElementInsertKid(Kidparent, kid, kidIndex - 1);
sprintf(buf, "\tStruct-elem - %s ", ASAtomGetString(PDSElementGetType(kid)));
kidIndex++;
/*CosObj CosPage;
PDPage pdPage = PDDocAcquirePage(pdDoc, 0);
CosPage = PDPageGetCosObj(pdPage);*/
//PDSElementInsertKid(ReferenceTitle, kid, kPDSAfterLast);
//AVAlertNote(name);
}
ASInt32 title_size = PDSElementGetTitle(kid, reinterpret_cast<ASUns8*> (title));
strcat(buf, reinterpret_cast<char *>(title));
GetElemInfo(kid, pdDoc);
}
//Console::displayString(buf);
Thanks and Regards
Bala v
Have something to add?