private void EnsureExistingRootTagIsDocument() { IRoleMappingResolver mapping; mapping = context.GetRoleMappingResolver(rootTagElement.GetRole().GetValue(), rootTagElement.GetNamespace( )); bool isDocBeforeResolving = mapping.CurrentRoleIsStandard() && StandardRoles.DOCUMENT.Equals(mapping.GetRole ()); mapping = context.ResolveMappingToStandardOrDomainSpecificRole(rootTagElement.GetRole().GetValue(), rootTagElement .GetNamespace()); bool isDocAfterResolving = mapping != null && mapping.CurrentRoleIsStandard() && StandardRoles.DOCUMENT.Equals (mapping.GetRole()); if (isDocBeforeResolving && !isDocAfterResolving) { LogCreatedRootTagHasMappingIssue(rootTagElement.GetNamespace(), mapping); } else { if (!isDocAfterResolving) { WrapAllKidsInTag(rootTagElement, rootTagElement.GetRole(), rootTagElement.GetNamespace()); rootTagElement.SetRole(PdfName.Document); if (context.TargetTagStructureVersionIs2()) { rootTagElement.SetNamespace(context.GetDocumentDefaultNamespace()); context.EnsureNamespaceRegistered(context.GetDocumentDefaultNamespace()); } } } }
private void ProcessKidNamespace(PdfStructElem kid) { PdfNamespace kidNamespace = kid.GetNamespace(); if (currentNamespace != null && kidNamespace == null) { kid.SetNamespace(currentNamespace); kidNamespace = currentNamespace; } tagStructureContext.EnsureNamespaceRegistered(kidNamespace); }
private void CreateNewRootTag() { IRoleMappingResolver mapping; PdfNamespace docDefaultNs = context.GetDocumentDefaultNamespace(); mapping = context.ResolveMappingToStandardOrDomainSpecificRole(StandardRoles.DOCUMENT, docDefaultNs); if (mapping == null || mapping.CurrentRoleIsStandard() && !StandardRoles.DOCUMENT.Equals(mapping.GetRole() )) { LogCreatedRootTagHasMappingIssue(docDefaultNs, mapping); } rootTagElement = document.GetStructTreeRoot().AddKid(new PdfStructElem(document, PdfName.Document)); if (context.TargetTagStructureVersionIs2()) { rootTagElement.SetNamespace(docDefaultNs); context.EnsureNamespaceRegistered(docDefaultNs); } }
internal static void Apply(AccessibilityProperties properties, PdfStructElem elem) { if (properties.GetActualText() != null) { elem.SetActualText(new PdfString(properties.GetActualText(), PdfEncodings.UNICODE_BIG)); } if (properties.GetAlternateDescription() != null) { elem.SetAlt(new PdfString(properties.GetAlternateDescription(), PdfEncodings.UNICODE_BIG)); } if (properties.GetExpansion() != null) { elem.SetE(new PdfString(properties.GetExpansion(), PdfEncodings.UNICODE_BIG)); } if (properties.GetLanguage() != null) { elem.SetLang(new PdfString(properties.GetLanguage(), PdfEncodings.UNICODE_BIG)); } IList <PdfStructureAttributes> newAttributesList = properties.GetAttributesList(); if (newAttributesList.Count > 0) { PdfObject attributesObject = elem.GetAttributes(false); PdfObject combinedAttributes = CombineAttributesList(attributesObject, -1, newAttributesList, elem.GetPdfObject ().GetAsNumber(PdfName.R)); elem.SetAttributes(combinedAttributes); } if (properties.GetPhoneme() != null) { elem.SetPhoneme(new PdfString(properties.GetPhoneme(), PdfEncodings.UNICODE_BIG)); } if (properties.GetPhoneticAlphabet() != null) { elem.SetPhoneticAlphabet(new PdfName(properties.GetPhoneticAlphabet())); } if (properties.GetNamespace() != null) { elem.SetNamespace(properties.GetNamespace()); } foreach (TagTreePointer @ref in properties.GetRefsList()) { elem.AddRef(@ref.GetCurrentStructElem()); } }
public virtual void StructElemTest07() { PdfWriter writer = new PdfWriter(destinationFolder + "structElemTest07.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfStructElem doc = document.GetStructTreeRoot().AddKid(new PdfStructElem(document, PdfName.Document)); PdfPage page = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page); canvas.BeginText(); canvas.SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.COURIER), 24); canvas.SetTextMatrix(1, 0, 0, 1, 32, 512); PdfStructElem paragraph = doc.AddKid(new PdfStructElem(document, PdfName.P)); PdfStructElem span1 = paragraph.AddKid(new PdfStructElem(document, PdfName.Span, page)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page, span1)))); canvas.ShowText("Hello "); canvas.CloseTag(); PdfStructElem span2 = paragraph.AddKid(new PdfStructElem(document, new PdfName("Chunk"), page)); canvas.OpenTag(new CanvasTag(span2.AddKid(new PdfMcrNumber(page, span2)))); canvas.ShowText("World"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); PdfNamespace @namespace = new PdfNamespace("http://www.w3.org/1999/xhtml"); span1.SetNamespace(@namespace); span1.AddRef(span2); span1.SetPhoneticAlphabet(PdfName.ipa); span1.SetPhoneme(new PdfString("Heeeelllloooooo")); @namespace.AddNamespaceRoleMapping(StandardRoles.SPAN, StandardRoles.SPAN); document.GetStructTreeRoot().AddNamespace(@namespace); page.Flush(); document.Close(); CompareResult("structElemTest07.pdf", "cmp_structElemTest07.pdf", "diff_structElem_07_"); }