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()));
			}
		}
示例#3
0
		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;
			}
		}
示例#5
0
		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
		}
示例#6
0
		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);
				}
			}
		}