public static string GetSchemeText(ChildNumberingSchemeType cnst) { switch (cnst) { case ChildNumberingSchemeType.UpperCaseAlpha: return XMLNames._CNST_A; case ChildNumberingSchemeType.LowerCaseAlpha: return XMLNames._CNST_a; case ChildNumberingSchemeType.UpperCaseRoman: return XMLNames._CNST_I; case ChildNumberingSchemeType.LowerCaseRoman: return XMLNames._CNST_i; case ChildNumberingSchemeType.Number: return XMLNames._CNST_1; case ChildNumberingSchemeType.None: return XMLNames._CNST_None; default: throw new XmlException(string.Format("Not able to get text version for ChildNumberingSchemeType value '{0}'", ((long)cnst).ToString())); } }
public static string GetSchemeDisplayText(ChildNumberingSchemeType cnst) { switch (cnst) { case ChildNumberingSchemeType.UpperCaseAlpha: return "A, B, C, D"; case ChildNumberingSchemeType.LowerCaseAlpha: return "a, b, c, d"; case ChildNumberingSchemeType.UpperCaseRoman: return "I, II, III, IV"; case ChildNumberingSchemeType.LowerCaseRoman: return "i, ii, iii, iv"; case ChildNumberingSchemeType.Number: return "1, 2, 3, 4"; case ChildNumberingSchemeType.None: return "None"; default: throw new XmlException(string.Format("Not able to get text version for ChildNumberingSchemeType value '{0}'", ((long)cnst).ToString())); } }
public static void WriteClause(XmlWriter writer, XmlNode node, int level, ChildNumberingSchemeType numberingSchemeType, int number, bool indentFirstParagraph, bool indentSubsequentParagraphs, bool hasHangingIndent, bool breakParagraphs, bool pageBreakBefore, bool suppressSpacingBefore) { bool isClauseNumbered = (numberingSchemeType != ChildNumberingSchemeType.None); Stack<PdfStyle> styleStack = new Stack<PdfStyle>(); styleStack.Push(DefaultStyle()); //ensure that there is a default style on the stack PdfLayoutSettings pdfLayoutSettings = new PdfLayoutSettings(); pdfLayoutSettings.NumberingIndex = number; pdfLayoutSettings.NumberingSchemeType = numberingSchemeType; pdfLayoutSettings.IsFirstParagraph = true; pdfLayoutSettings.CompletedFirstTextNode = false; pdfLayoutSettings.PageBreakBefore = pageBreakBefore; pdfLayoutSettings.SuppressSpacingBefore = suppressSpacingBefore; pdfLayoutSettings.FirstParagraphAttributes = ParagraphAttributes(true, isClauseNumbered, level, indentFirstParagraph, hasHangingIndent, breakParagraphs); pdfLayoutSettings.OtherParagraphAttributes = ParagraphAttributes(false, isClauseNumbered, level, indentSubsequentParagraphs, hasHangingIndent, breakParagraphs); pdfLayoutSettings.OpenParagraphCounter = 0; pdfLayoutSettings.SuppressSpaceBetweenFragments = true; ProcessClauseContent(writer, node.ChildNodes, pdfLayoutSettings, styleStack); }
public static string ParagraphNumber(ChildNumberingSchemeType numberingSchemeType, int number) { switch (numberingSchemeType) { case ChildNumberingSchemeType.UpperCaseAlpha: if (number > 26) throw new ArgumentOutOfRangeException(number.ToString(), "The number of paragraphs is limited to 26 when using the Alpha numbering scheme."); return ((char)(64 + number)).ToString() + "."; case ChildNumberingSchemeType.LowerCaseAlpha: if (number > 26) throw new ArgumentOutOfRangeException(number.ToString(), "The number of paragraphs is limited to 26 when using the Alpha numbering scheme."); return ((char)(96 + number)).ToString() + "."; case ChildNumberingSchemeType.UpperCaseRoman: return Utility.RomanNumeralHelper.RomanNumeral(number) + "."; case ChildNumberingSchemeType.LowerCaseRoman: return Utility.RomanNumeralHelper.RomanNumeral(number).ToLower() + "."; case ChildNumberingSchemeType.Number: return number.ToString() + "."; default: return string.Empty; } }
private static void WriteNumberFragment(XmlWriter writer, KeyValuePair<string, string> paragraphAlignment, ChildNumberingSchemeType numberingSchemeType, int number, PdfStyle numberingStyle) { if (paragraphAlignment.Key == "horizontalalignment") if (paragraphAlignment.Value != "left") throw new Exception(string.Format("A numbered paragraph cannot be {0}-aligned.", paragraphAlignment.Value)); writer.WriteStartElement("numberfragment"); writer.WriteAttributeString("type", "fragment"); numberingStyle.Font.Bold = true; writer.WriteAttributeString("font", TallPDFFontName(numberingStyle.Font)); writer.WriteAttributeString("fontsize", numberingStyle.Font.Size.ToString()); writer.WriteString(ChildNumberingSchemeHelper.ParagraphNumber(numberingSchemeType, number)); writer.WriteEndElement(); //numberfragment }
internal void WriteClause(XmlWriter writer, int level, ChildNumberingSchemeType numberingSchemeType, int number, Template template) { string clauseXML = string.Format(@"<clause level=""{0}"" number=""{1} "">{2}</clause>", level, ChildNumberingSchemeHelper.ParagraphNumber(numberingSchemeType, number), DecodeText(_text)); bool indentFirstParagraph = _indentFirstParagraph ?? false; bool indentSubsequentParagraphs = _indentSubsequentParagraphs ?? false; bool hangingIndent = _hangingIndent ?? false; bool breakParagraphs = _breakParagraphs ?? false; bool pageBreakBefore = _pageBreakBefore ?? false; bool suppressSpacingBefore = _suppressSpacingBefore ?? false; XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = true; doc.LoadXml(clauseXML); PdfHelper.WriteClause(writer, doc.DocumentElement, level, numberingSchemeType, number, indentFirstParagraph, indentSubsequentParagraphs, hangingIndent, breakParagraphs, pageBreakBefore, suppressSpacingBefore); int paragraphNumber = 0; for (int i = 0; i < _children.Count; i++) { ITATClause childClause = _children[i]; if (childClause.ShouldShow(template)) { paragraphNumber++; _children[i].WriteClause(writer, level + 1, _childNumberingScheme, paragraphNumber, template); } } }