Added code so that Means can be printed properly.
This commit is contained in:
parent
89f2a58397
commit
5b25cf6d6c
@ -11,6 +11,7 @@ using Itenso.Rtf.Interpreter;
|
||||
using Itenso.Rtf.Support;
|
||||
using Microsoft.Win32;
|
||||
using Volian.Base.Library;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Volian.Print.Library
|
||||
{
|
||||
@ -307,12 +308,59 @@ namespace Volian.Print.Library
|
||||
{
|
||||
// The bullet character for some unknown reason was entered in a text font rather than a symbol font
|
||||
// switch from x25cf ot x2022 moves to a valid bullet character in the text font
|
||||
Chunk chk = new Chunk(visualText.Text.Replace("\u25cf", "\u2022"), font);
|
||||
AdjustChunk(visualText, font, chk);
|
||||
_MyParagraph.Add(chk);
|
||||
ProcessMeans(visualText, visualText.Text.Replace("\u25cf", "\u2022"), font);
|
||||
}
|
||||
ProfileTimer.Pop(profileDepth);
|
||||
}
|
||||
/// <summary>
|
||||
/// Method to process means from text. Draws a line above the content of the range included in the
|
||||
/// square brackets. [Mean X]
|
||||
/// Handles everything except font style changes within the expression.
|
||||
/// </summary>
|
||||
/// <param name="visualText"></param>
|
||||
/// <param name="txt"></param>
|
||||
/// <param name="font"></param>
|
||||
private void ProcessMeans(IRtfVisualText visualText, string txt,iTextSharp.text.Font font)
|
||||
{
|
||||
Match m = Regex.Match(txt, "(.*)[[]Mean (.+)[]](.*)", RegexOptions.IgnoreCase);
|
||||
Chunk chk;
|
||||
if (m.Groups.Count == 4) // If the text contains [Mean ...] then follow the code to add a line above the text.
|
||||
{
|
||||
//The first group is the text before the last [Mean ...]
|
||||
ProcessMeans(visualText, m.Groups[1].Value, font);// Recursively process the first group.
|
||||
// The second group is the text within the [Mean ...] range
|
||||
chk = new Chunk(m.Groups[2].Value, font);
|
||||
float offset = .8f;// This is just above the character.
|
||||
// If the content is lower case and does not have ascenders then move the line down.
|
||||
if (Regex.IsMatch(m.Groups[2].Value, "^[acgmnopqrsuvwxyz]+$"))
|
||||
offset = .6F;
|
||||
//PrintOverride.CompressPropSubSup = true;
|
||||
if (visualText.Format.SuperScript < 0)// Adjust line for subscript
|
||||
{
|
||||
offset -= .2f;
|
||||
if (PrintOverride.CompressPropSubSup) offset += .2f;// Adjust line for shrinking font
|
||||
}
|
||||
if (visualText.Format.SuperScript > 0)//Adjust line for superscript
|
||||
{
|
||||
offset += .3f;
|
||||
if (PrintOverride.CompressPropSubSup) offset += .2f;// Adjust line for shrinking font
|
||||
}
|
||||
// Draw the line
|
||||
chk.SetUnderline(font.Color, 0, .05F, 0, offset, PdfContentByte.LINE_CAP_ROUND);
|
||||
AdjustChunk(visualText, font, chk);
|
||||
_MyParagraph.Add(chk);
|
||||
// output the text following the [Mean ...]
|
||||
chk = new Chunk(m.Groups[3].Value, font);
|
||||
AdjustChunk(visualText, font, chk);
|
||||
_MyParagraph.Add(chk);
|
||||
}
|
||||
else
|
||||
{
|
||||
chk = new Chunk(txt, font);
|
||||
AdjustChunk(visualText, font, chk);
|
||||
_MyParagraph.Add(chk);
|
||||
}
|
||||
}
|
||||
private void AdjustChunk(IRtfVisualText visualText, iTextSharp.text.Font font, Chunk chk)
|
||||
{
|
||||
if (visualText.Format.BackgroundColor.AsDrawingColor.ToArgb() != System.Drawing.Color.White.ToArgb())
|
||||
|
Loading…
x
Reference in New Issue
Block a user