This commit is contained in:
parent
458b3b4d63
commit
843677822d
@ -116,7 +116,7 @@ namespace Volian.Print.Library
|
|||||||
string MSWordFile = null;
|
string MSWordFile = null;
|
||||||
if (section.MyContent.ContentEntryCount == 1)
|
if (section.MyContent.ContentEntryCount == 1)
|
||||||
{
|
{
|
||||||
MSWordFile = MSWordToPDF.ToPDFReplaceROs(section, false);
|
MSWordFile = MSWordToPDF.GetDocPdf(section, PrintOverride.TextColor);
|
||||||
OnStatusChanged("MSWord converted to PDF " + MSWordFile, PromsPrinterStatusType.MSWordToPDF);
|
OnStatusChanged("MSWord converted to PDF " + MSWordFile, PromsPrinterStatusType.MSWordToPDF);
|
||||||
}
|
}
|
||||||
return MSWordFile;
|
return MSWordFile;
|
||||||
@ -248,30 +248,33 @@ namespace Volian.Print.Library
|
|||||||
myPdfFile = BuildMSWordPDF(mySection);
|
myPdfFile = BuildMSWordPDF(mySection);
|
||||||
readerWord = myPdfFile != null ? new PdfReader(myPdfFile) : null;
|
readerWord = myPdfFile != null ? new PdfReader(myPdfFile) : null;
|
||||||
OnStatusChanged("Get Section", PromsPrinterStatusType.GetSection);
|
OnStatusChanged("Get Section", PromsPrinterStatusType.GetSection);
|
||||||
int sectPageCount = (int)(Math.Ceiling(decimal.Parse(mySection.SectionConfig.Section_NumPages)));
|
if (mySection.SectionConfig.Section_NumPages != "")
|
||||||
for (int ii = 0; ii < sectPageCount; ii++)
|
|
||||||
{
|
{
|
||||||
int pageNumber = 1 + ii;
|
int sectPageCount = (int)(Math.Ceiling(decimal.Parse(mySection.SectionConfig.Section_NumPages)));
|
||||||
if (readerWord != null)
|
for (int ii = 0; ii < sectPageCount; ii++)
|
||||||
{
|
{
|
||||||
bool doimport2 = true;
|
int pageNumber = 1 + ii;
|
||||||
PdfImportedPage fgPage = null;
|
if (readerWord != null)
|
||||||
try
|
|
||||||
{
|
{
|
||||||
fgPage = cb.PdfWriter.GetImportedPage(readerWord, ii + 1);
|
bool doimport2 = true;
|
||||||
|
PdfImportedPage fgPage = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
fgPage = cb.PdfWriter.GetImportedPage(readerWord, ii + 1);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine(ex);
|
||||||
|
doimport2 = false;
|
||||||
|
}
|
||||||
|
OnStatusChanged("Read MSWord", PromsPrinterStatusType.ReadMSWord);
|
||||||
|
if (doimport2) AddImportedPageToLayer(cb.PdfWriter.DirectContentUnder, _MSWordLayer, fgPage, 0, 0);
|
||||||
|
OnStatusChanged("Merge MSWord", PromsPrinterStatusType.MergeMSWord);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
OnStatusChanged("Before NewPage", PromsPrinterStatusType.Before);
|
||||||
{
|
cb.PdfDocument.NewPage();
|
||||||
Console.WriteLine(ex);
|
OnStatusChanged("After NewPage", PromsPrinterStatusType.NewPage);
|
||||||
doimport2 = false;
|
|
||||||
}
|
|
||||||
OnStatusChanged("Read MSWord", PromsPrinterStatusType.ReadMSWord);
|
|
||||||
if (doimport2) AddImportedPageToLayer(cb.PdfWriter.DirectContentUnder, _MSWordLayer, fgPage, 0, 0);
|
|
||||||
OnStatusChanged("Merge MSWord", PromsPrinterStatusType.MergeMSWord);
|
|
||||||
}
|
}
|
||||||
OnStatusChanged("Before NewPage", PromsPrinterStatusType.Before);
|
|
||||||
cb.PdfDocument.NewPage();
|
|
||||||
OnStatusChanged("After NewPage", PromsPrinterStatusType.NewPage);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -390,257 +393,4 @@ namespace Volian.Print.Library
|
|||||||
return svgText;
|
return svgText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static class MSWordToPDF
|
|
||||||
{
|
|
||||||
private static LBApplicationClass _MyApp = null;
|
|
||||||
public static LBApplicationClass MyApp
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_MyApp == null)
|
|
||||||
_MyApp = new LBApplicationClass();
|
|
||||||
return _MyApp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static string ToPDFReplaceROs(SectionInfo sect, bool openPdf)
|
|
||||||
{
|
|
||||||
string fileName = GetFileName(sect);
|
|
||||||
// TODO: do we want to cache the word pdfs
|
|
||||||
//if (System.IO.File.Exists(@"C:\Temp\" + fileName + ".pdf"))
|
|
||||||
// return @"C:\Temp\" + fileName + ".pdf";
|
|
||||||
int docStyleIndex = ((int)sect.MyContent.Type) % 10000;
|
|
||||||
DocStyle myDocStyle = sect.ActiveFormat.PlantFormat.DocStyles.DocStyleList[docStyleIndex];
|
|
||||||
PageStyle myPageStyle = myDocStyle.pagestyle;
|
|
||||||
ProcedureInfo proc = sect.MyProcedure;//sect.ActiveParent as ProcedureInfo;
|
|
||||||
DocVersionInfo dvi = proc.ActiveParent as DocVersionInfo;
|
|
||||||
ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst;
|
|
||||||
ROFSTLookup lookup = rofst.ROFSTLookup;
|
|
||||||
string igPrefix = dvi.DocVersionConfig.RODefaults_graphicsprefix;
|
|
||||||
string spPrefix = dvi.DocVersionConfig.RODefaults_setpointprefix;
|
|
||||||
// string AccPageID = string.Format("<{0}-{1}>", accPrefix, roch.appid);
|
|
||||||
using (DSOFile myFile = new DSOFile(sect.MyContent.MyEntry.MyDocument))
|
|
||||||
{
|
|
||||||
LBDocumentClass myDoc = MyApp.Documents.Open(myFile.FullName);
|
|
||||||
float newTop = (float)myDocStyle.Layout.TopRow;
|
|
||||||
float newLeft = (float)myDocStyle.Layout.LeftMargin;
|
|
||||||
float newLength = (float)myDocStyle.Layout.PageLength;
|
|
||||||
float newWidth = (float)myDocStyle.Layout.PageWidth;
|
|
||||||
float oldTop = myDoc.PageSetup.TopMargin;
|
|
||||||
float oldLeft = myDoc.PageSetup.LeftMargin;
|
|
||||||
float oldBottom = myDoc.PageSetup.BottomMargin;
|
|
||||||
float oldRight = myDoc.PageSetup.RightMargin;
|
|
||||||
float oldHeight = myDoc.PageSetup.PageHeight;
|
|
||||||
float oldWidth = myDoc.PageSetup.PageWidth;
|
|
||||||
float newRight = oldWidth - (newWidth + newLeft);
|
|
||||||
if (newRight < 0) newRight = 0;
|
|
||||||
float newBottom = oldBottom - newTop;
|
|
||||||
//Console.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", newTop, newLeft, newLength, newWidth, oldTop, oldLeft, oldBottom, oldRight,oldHeight,oldWidth);
|
|
||||||
myDoc.PageSetup.BottomMargin = 0;// 11 * 72 - (newTop + newLength);
|
|
||||||
myDoc.PageSetup.RightMargin = newRight;
|
|
||||||
myDoc.PageSetup.LeftMargin = newLeft;
|
|
||||||
myDoc.PageSetup.TopMargin = newTop;
|
|
||||||
LBSelection sel = FindRO();
|
|
||||||
while (sel != null)
|
|
||||||
{
|
|
||||||
string val = lookup.GetROValueByAccPagID(sel.Text, spPrefix, igPrefix);
|
|
||||||
int? type = lookup.GetROTypeByAccPagID(sel.Text, spPrefix, igPrefix);
|
|
||||||
if ((int)type == 8) // Image
|
|
||||||
{
|
|
||||||
//Console.WriteLine("Image: {0} - {1}", sect.MyContent.Number, sect.MyContent.Text);
|
|
||||||
bool imageROTokenReplaced = false;
|
|
||||||
string[] vals = val.Split("\n".ToCharArray());
|
|
||||||
ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
|
|
||||||
if (roImage != null)
|
|
||||||
{
|
|
||||||
ROImageFile roImageFile = new ROImageFile(roImage);
|
|
||||||
float width = 72 * Int32.Parse(vals[3], System.Globalization.NumberStyles.AllowHexSpecifier) / 12.0F;
|
|
||||||
int lines = Int32.Parse(vals[2], System.Globalization.NumberStyles.AllowHexSpecifier);
|
|
||||||
float height = 72 * lines / 6.0F;
|
|
||||||
//sel.MoveEnd(LBWdUnits.wdLine, lines);// The number of lines depends on the third parameter
|
|
||||||
//sel.EndKey(LBWdUnits.wdLine, true);
|
|
||||||
//sel.MoveEnd(LBWdUnits.wdCharacter, -1);
|
|
||||||
//Console.WriteLine("Lines = {0}", lines);
|
|
||||||
sel.Text = "";
|
|
||||||
// TODO: Need to create a temporary file for printing.
|
|
||||||
// TODO: Need a way to eliminate the temporary file when done printing.
|
|
||||||
// LBInlineShape shape = sel.InlineShapes.AddPicture(@"C:\Plant\HLP\VEHLP\ro\No1Seal.bmp");
|
|
||||||
float x = (float)sel.get_Information(LBWdInformation.wdHorizontalPositionRelativeToPage);
|
|
||||||
float y = (float)sel.get_Information(LBWdInformation.wdVerticalPositionRelativeToPage);
|
|
||||||
//LBInlineShape shape = sel.InlineShapes.AddPicture(pngFile);
|
|
||||||
LBRange myRange = sel.Paragraphs.First.Range;
|
|
||||||
float yTop = (float)myRange.get_Information(LBWdInformation.wdVerticalPositionRelativeToPage);
|
|
||||||
LBShape shape = myDoc.Shapes.AddPicture(roImageFile.MyFile.FullName, x, y - yTop, sel.Range);
|
|
||||||
// LBInlineShape shape = sel.InlineShapes.AddPicture(roImageFile.MyFile.FullName);
|
|
||||||
//Console.WriteLine("{0} Shape Width {1} Height {2}", val.Replace("\n", "','"), shape.Width, shape.Height);
|
|
||||||
shape.Width = width;
|
|
||||||
shape.Height = height;
|
|
||||||
//Console.WriteLine("{0} Shape Width {1} Height {2}", val.Replace("\n", "','"), shape.Width, shape.Height);
|
|
||||||
imageROTokenReplaced = true;
|
|
||||||
}
|
|
||||||
if (!imageROTokenReplaced)
|
|
||||||
sel.Text = string.Format("Bad Image Link (Missing Image File:{0})", vals[0]);
|
|
||||||
}
|
|
||||||
else if ((int)type == 4) // X-Y Plot
|
|
||||||
{
|
|
||||||
val = val.Replace("`", "\xB0");
|
|
||||||
//AddInfo("\tRO Found {0} = '{1}'", sel.Text, val);
|
|
||||||
sel.Text = "";
|
|
||||||
//float width = 72 * Int32.Parse(vals[3], System.Globalization.NumberStyles.AllowHexSpecifier) / 12.0F;
|
|
||||||
//float height = 72 * lines / 6.0F;
|
|
||||||
string pngFile = @"C:\Temp\XYPlot1.png";
|
|
||||||
RectangleF plotRect = CreatePlot(pngFile, val, 600F);
|
|
||||||
//LBShape shape = myDoc.Shapes.AddPicture(@"C:\Temp\XYPlot.png", 0, 0, sel.Range);
|
|
||||||
float x = (float)sel.get_Information(LBWdInformation.wdHorizontalPositionRelativeToPage);
|
|
||||||
float y = (float)sel.get_Information(LBWdInformation.wdVerticalPositionRelativeToPage);
|
|
||||||
//LBInlineShape shape = sel.InlineShapes.AddPicture(pngFile);
|
|
||||||
LBRange myRange = sel.Paragraphs.First.Range;
|
|
||||||
float yTop = (float)myRange.get_Information(LBWdInformation.wdVerticalPositionRelativeToPage);
|
|
||||||
float xAdjust = -29.3F; // TODO: Check this value
|
|
||||||
float yAdjust = 9.1F; // TODO: Check this value
|
|
||||||
LBShape shape = myDoc.Shapes.AddPicture(pngFile, x + xAdjust + plotRect.X, yAdjust + y - yTop + plotRect.Y, sel.Range);
|
|
||||||
//Console.WriteLine(",{0},{1},{2},{3}", x, y - yTop, xAdjust,yAdjust);
|
|
||||||
shape.LockAspectRatio = LBMsoTriState.msoTrue;
|
|
||||||
//shape.Width = .89F * shape.Width;
|
|
||||||
//shape.Width = float.Parse(tbAdjust.Text) * shape.Width;
|
|
||||||
shape.Width = plotRect.Width;
|
|
||||||
//shape.Height = .89F * shape.Height;
|
|
||||||
sel.WholeStory();
|
|
||||||
// TODO: Do we want to color code ROs
|
|
||||||
//sel.Range.Font.Color = LBWdColor.wdColorRed;
|
|
||||||
//Console.WriteLine("{0} Shape Width {1} Height {2}", val.Replace("\n", "','"), shape.Width, shape.Height);
|
|
||||||
//shape.Width = width;
|
|
||||||
//shape.Height = height;
|
|
||||||
//Console.WriteLine("{0} Shape Width {1} Height {2}", val.Replace("\n", "','"), shape.Width, shape.Height);
|
|
||||||
//imageROTokenReplaced = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
val = val.Replace("`", "\xB0");
|
|
||||||
//AddInfo("\tRO Found {0} = '{1}'", sel.Text, val);
|
|
||||||
InsertROValue(sel, val, sect.ActiveFormat.PlantFormat.FormatData.ROData.UpRoIfPrevUpper);
|
|
||||||
}
|
|
||||||
sel = FindRO();
|
|
||||||
}
|
|
||||||
sel = MyApp.Selection;
|
|
||||||
sel.WholeStory();
|
|
||||||
sel.Range.Font.Color = (LBWdColor)WordColor(PrintOverride.OverrideTextColor(System.Drawing.Color.Black));
|
|
||||||
sel.ParagraphFormat.LineSpacingRule = LBWdLineSpacing.wdLineSpaceExactly;
|
|
||||||
sel.ParagraphFormat.LineSpacing = 12;
|
|
||||||
fileName = CreatePDF(fileName, openPdf);
|
|
||||||
MyApp.ActiveDocument.Close();
|
|
||||||
MyApp.Quit();
|
|
||||||
_MyApp = null;
|
|
||||||
return fileName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private static int WordColor(System.Drawing.Color color)
|
|
||||||
{
|
|
||||||
System.Drawing.Color c1 = System.Drawing.Color.FromArgb(0, color.B, color.G, color.R);
|
|
||||||
return c1.ToArgb();
|
|
||||||
}
|
|
||||||
private static string GetFileName(SectionInfo sect)
|
|
||||||
{
|
|
||||||
string fileName = "Doc " + sect.MyContent.MyEntry.DocID.ToString(); // +" " + (sect.DisplayNumber == "" ? sect.DisplayText : sect.DisplayNumber);
|
|
||||||
return fileName;
|
|
||||||
}
|
|
||||||
private static RectangleF CreatePlot(string pngFile, string xyPlot, float resolution)
|
|
||||||
{
|
|
||||||
RectangleF retval = new RectangleF(0, 0, 0, 0);
|
|
||||||
Form frm = Application.OpenForms[0];
|
|
||||||
Graphics grfx = frm.CreateGraphics();
|
|
||||||
string emfFile = pngFile.Replace(".png", ".emf");
|
|
||||||
Metafile mf = new Metafile(emfFile, grfx.GetHdc());
|
|
||||||
grfx.Dispose();
|
|
||||||
grfx = Graphics.FromImage(mf);
|
|
||||||
float dpi = grfx.DpiX;
|
|
||||||
//grfx.ScaleTransform(resolution / grfx.DpiX, (resolution +1F) / grfx.DpiY);
|
|
||||||
grfx.ScaleTransform(resolution / grfx.DpiX, resolution / grfx.DpiY);
|
|
||||||
grfx.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
|
||||||
grfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
|
||||||
grfx.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
|
|
||||||
grfx.Clear(System.Drawing.Color.Transparent);
|
|
||||||
XYPlots.XYPlot.BlackColor = System.Drawing.Color.Red;
|
|
||||||
XYPlots.XYPlot myPlot = new XYPlots.XYPlot(xyPlot);
|
|
||||||
myPlot.SetMargins(0, 0, 0, 0);
|
|
||||||
myPlot.Process(new VG.VGOut_Graphics(grfx));
|
|
||||||
grfx.Dispose();
|
|
||||||
GraphicsUnit gu = new GraphicsUnit();
|
|
||||||
retval = mf.GetBounds(ref gu);
|
|
||||||
retval.Width *= dpi / resolution;
|
|
||||||
retval.Height *= dpi / resolution;
|
|
||||||
retval.X *= dpi / resolution;
|
|
||||||
retval.Y *= dpi / resolution;
|
|
||||||
//retval.X = myPlot.Width-retval.Width;
|
|
||||||
//AddInfo("{0},{1},{2},{3},{4},{5}", myPlot.Width, myPlot.Height, retval.Width, retval.Height,retval.X,retval.Y);
|
|
||||||
//Console.Write("{0},{1},{2},{3}", myPlot.Width, myPlot.Height, retval.Width, retval.Height);
|
|
||||||
mf.Save(pngFile, ImageFormat.Png);
|
|
||||||
//Console.WriteLine("'pngfile','{0}'", pngFile);
|
|
||||||
mf.Dispose();
|
|
||||||
FileInfo myFile = new System.IO.FileInfo(emfFile);
|
|
||||||
myFile.Delete();
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
private static void InsertROValue(LBSelection sel, string roValue, bool upRoIfPrevUpper)
|
|
||||||
{
|
|
||||||
if (roValue == null)
|
|
||||||
{
|
|
||||||
sel.Text = "RO Not Found";
|
|
||||||
sel.Font.Color = LBWdColor.wdColorRed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (upRoIfPrevUpper && sel.LastWasUpper) roValue = roValue.ToUpper();
|
|
||||||
// Convert fortran formatted numbers to scientific notation.
|
|
||||||
|
|
||||||
string tmp = DisplayRO.ConvertFortranFormatToScienctificNotation(roValue);
|
|
||||||
// Look for superscript or subscript and insert the appropriate commands
|
|
||||||
//Match roMatch = Regex.Match(tmp, @"(.*?)\\(super|sub) (.*?)\\nosupersub ");
|
|
||||||
Match roMatch = Regex.Match(tmp, @"(.*?)\\(up3|dn3) (.*?)\\(up0|dn0) ");
|
|
||||||
if (roMatch.Groups.Count == 4)// Superscript or subscript found
|
|
||||||
{
|
|
||||||
sel.Font.Color = LBWdColor.wdColorRed;
|
|
||||||
while (roMatch.Groups.Count == 4)
|
|
||||||
{
|
|
||||||
sel.TypeText(roMatch.Groups[1].Value); // output the text preceeding the super or sub command
|
|
||||||
sel.Font.Position = roMatch.Groups[2].Value == "up3" ? 2 : -2; // Shift the vertical position for super or sub
|
|
||||||
//sel.Font.Position = roMatch.Groups[2].Value == "super" ? 2 : -2; // Shift the vertical position for super or sub
|
|
||||||
sel.TypeText(roMatch.Groups[3].Value); // output the superscript or subscript
|
|
||||||
sel.Font.Position = 0; // restore the vertical position
|
|
||||||
tmp = tmp.Substring(roMatch.Length); // remove the processed text
|
|
||||||
//roMatch = Regex.Match(tmp, @"(.*?)\\(super|sub) (.*?)\\nosupersub "); // check to see if the text contain another super or sub
|
|
||||||
roMatch = Regex.Match(tmp, @"(.*?)\\(up3|dn3) (.*?)\\(up0|dn0) "); // check to see if the text contain another super or sub
|
|
||||||
}
|
|
||||||
if(tmp != "")// Add any remaining text
|
|
||||||
sel.TypeText(tmp);
|
|
||||||
sel.Font.Color = LBWdColor.wdColorAutomatic;
|
|
||||||
}
|
|
||||||
else // if no superscripts or subscripts just output the text
|
|
||||||
{
|
|
||||||
sel.Text = roValue;
|
|
||||||
sel.Font.Color = LBWdColor.wdColorRed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private static LBSelection FindRO()
|
|
||||||
{
|
|
||||||
LBSelection sel = MyApp.Selection;
|
|
||||||
LBFind find = sel.Find;
|
|
||||||
find.ClearFormatting();
|
|
||||||
find.Text = "[<](?@)-(?@)[>]";
|
|
||||||
//find.Wrap = LBWdFindWrap.wdFindStop;
|
|
||||||
find.Wrap = LBWdFindWrap.wdFindContinue;
|
|
||||||
find.MatchCase = false;
|
|
||||||
find.MatchWholeWord = false;
|
|
||||||
find.MatchWildcards = true;
|
|
||||||
find.MatchSoundsLike = false;
|
|
||||||
find.MatchAllWordForms = false;
|
|
||||||
if (find.Execute()) return sel;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
private static string CreatePDF(string fileName, bool openPdf)
|
|
||||||
{
|
|
||||||
return MyApp.CreatePDF(@"C:\Temp\" + fileName + ".pdf", openPdf);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -56,15 +56,26 @@ namespace Volian.Print.Library
|
|||||||
}
|
}
|
||||||
public override void OnCloseDocument(PdfWriter writer, iTextSharp.text.Document document)
|
public override void OnCloseDocument(PdfWriter writer, iTextSharp.text.Document document)
|
||||||
{
|
{
|
||||||
|
AddBookmarks(writer);
|
||||||
MyPageCounts.DrawTemplates();
|
MyPageCounts.DrawTemplates();
|
||||||
}
|
}
|
||||||
public override void OnEndPage(PdfWriter writer, iTextSharp.text.Document document)
|
public override void OnEndPage(PdfWriter writer, iTextSharp.text.Document document)
|
||||||
{
|
{
|
||||||
|
AddBookmarks(writer);
|
||||||
MyPageCounts.CanIncrement = true;
|
MyPageCounts.CanIncrement = true;
|
||||||
base.OnEndPage(writer, document);
|
base.OnEndPage(writer, document);
|
||||||
DrawChangeBars(writer.DirectContent);
|
DrawChangeBars(writer.DirectContent);
|
||||||
DrawMessages(writer.DirectContent);
|
DrawMessages(writer.DirectContent);
|
||||||
}
|
}
|
||||||
|
private void AddBookmarks(PdfWriter writer)
|
||||||
|
{
|
||||||
|
if (MySectionTitle != null)
|
||||||
|
{
|
||||||
|
PdfDestination dest = new PdfDestination(PdfDestination.FIT);
|
||||||
|
PdfOutline outline = new PdfOutline(writer.DirectContent.RootOutline, dest, MySectionTitle, false);
|
||||||
|
MySectionTitle = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
private void DrawMessages(PdfContentByte cb)
|
private void DrawMessages(PdfContentByte cb)
|
||||||
{
|
{
|
||||||
if (TopMessage != null)
|
if (TopMessage != null)
|
||||||
@ -114,9 +125,16 @@ namespace Volian.Print.Library
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_MySection = value;
|
_MySection = value;
|
||||||
|
MySectionTitle = (_MySection.DisplayNumber == null ? "" : _MySection.DisplayNumber + " - ") + _MySection.DisplayText;
|
||||||
MySvg = BuildSvg(_MySection);
|
MySvg = BuildSvg(_MySection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private string _MySectionTitle;
|
||||||
|
public string MySectionTitle
|
||||||
|
{
|
||||||
|
get { return _MySectionTitle; }
|
||||||
|
set { _MySectionTitle = value; }
|
||||||
|
}
|
||||||
private int _MaxRNO;
|
private int _MaxRNO;
|
||||||
public int MaxRNO
|
public int MaxRNO
|
||||||
{
|
{
|
||||||
|
@ -59,22 +59,22 @@ namespace Volian.Print.Library
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
float lineThickness = 0;
|
||||||
switch (MyBox.BoxStyle)
|
switch (MyBox.BoxStyle)
|
||||||
{
|
{
|
||||||
case BoxThin:
|
case BoxThin:
|
||||||
cb.SetLineWidth(.6F);
|
lineThickness = .6F;
|
||||||
cb.Rectangle(left, bottom, right - left, Height * MyPageHelper.YMultiplier);
|
|
||||||
break;
|
break;
|
||||||
case BoxThick:
|
case BoxThick:
|
||||||
float lineThickness = 6;
|
lineThickness = 6;
|
||||||
cb.SetLineWidth(lineThickness);
|
|
||||||
cb.Rectangle(left+6, bottom + (lineThickness / 2), right - left - 6, (Height - lineThickness) * MyPageHelper.YMultiplier);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// For other than OHLP/HLP. For those not matching the HLP Boxes
|
// For other than OHLP/HLP. For those not matching the HLP Boxes
|
||||||
throw new Exception("Missing vlnBox handler");
|
throw new Exception("Missing vlnBox handler");
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
const float llxOffset = 3;
|
||||||
|
cb.SetLineWidth(lineThickness);
|
||||||
|
cb.Rectangle(left + llxOffset, bottom + (lineThickness / 2), right - left - llxOffset, (Height - lineThickness) * MyPageHelper.YMultiplier);
|
||||||
}
|
}
|
||||||
cb.Stroke();
|
cb.Stroke();
|
||||||
if (textLayer != null) cb.EndLayer();
|
if (textLayer != null) cb.EndLayer();
|
||||||
|
@ -132,6 +132,8 @@ namespace Volian.Print.Library
|
|||||||
private float DrawText(PdfContentByte cb, ref float yPageStart, float yTopMargin, float yBottomMargin, ref float yLocation)
|
private float DrawText(PdfContentByte cb, ref float yPageStart, float yTopMargin, float yBottomMargin, ref float yLocation)
|
||||||
{
|
{
|
||||||
float retval = yLocation;
|
float retval = yLocation;
|
||||||
|
if (MyItemInfo.FormatStepData.CenterOneLineOnly && MyItemInfo.MyPrevious == null && MyItemInfo.NextItem == null && Height<(1.01F*IParagraph.Leading))
|
||||||
|
IParagraph.Alignment = Element.ALIGN_CENTER;
|
||||||
retval = Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, Width, 100, PdfDebugText, yBottomMargin);
|
retval = Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, Width, 100, PdfDebugText, yBottomMargin);
|
||||||
if (retval == 0) // problem occurred - paragraph was not able to be printed on page
|
if (retval == 0) // problem occurred - paragraph was not able to be printed on page
|
||||||
{ // pagination logic needs to be fixed.
|
{ // pagination logic needs to be fixed.
|
||||||
|
@ -523,7 +523,8 @@ namespace Volian.Svg.Library
|
|||||||
cb.SaveState();
|
cb.SaveState();
|
||||||
bool fill = FillColor != System.Drawing.Color.Transparent;
|
bool fill = FillColor != System.Drawing.Color.Transparent;
|
||||||
bool stroke = OutlineWidth.Value != 0F && OutlineColor != System.Drawing.Color.Empty;
|
bool stroke = OutlineWidth.Value != 0F && OutlineColor != System.Drawing.Color.Empty;
|
||||||
iTextSharp.text.Font font = FontFactory.GetFont(Font.Name, scale.M(new SvgMeasurement(Font.SizeInPoints, E_MeasurementUnits.PT)));
|
int fontStyle = (Font.Bold ? iTextSharp.text.Font.BOLD : 0) + (Font.Italic ? iTextSharp.text.Font.ITALIC : 0);
|
||||||
|
iTextSharp.text.Font font = FontFactory.GetFont(Font.Name, scale.M(new SvgMeasurement(Font.SizeInPoints, E_MeasurementUnits.PT)), fontStyle);
|
||||||
ColumnText ct = new ColumnText(cb);
|
ColumnText ct = new ColumnText(cb);
|
||||||
Chunk chk = new Chunk(text, font);
|
Chunk chk = new Chunk(text, font);
|
||||||
float x = scale.X(X);
|
float x = scale.X(X);
|
||||||
@ -647,7 +648,7 @@ namespace Volian.Svg.Library
|
|||||||
public string Watermark
|
public string Watermark
|
||||||
{
|
{
|
||||||
get { return _Watermark; }
|
get { return _Watermark; }
|
||||||
set { _Watermark = value.ToUpper()=="NONE"?"":value; }
|
set { _Watermark = value; }
|
||||||
}
|
}
|
||||||
private int _CurrentPageNumber = 0;
|
private int _CurrentPageNumber = 0;
|
||||||
public int CurrentPageNumber
|
public int CurrentPageNumber
|
||||||
@ -746,7 +747,7 @@ namespace Volian.Svg.Library
|
|||||||
}
|
}
|
||||||
private void DrawWatermark(PdfContentByte cb)
|
private void DrawWatermark(PdfContentByte cb)
|
||||||
{
|
{
|
||||||
if (Watermark.ToLower() == "(none)" || Watermark == "") return;
|
if (Watermark.ToLower().Contains("none") || Watermark == "") return;
|
||||||
cb.SaveState();
|
cb.SaveState();
|
||||||
if (_WatermarkLayer != null) cb.BeginLayer(_WatermarkLayer);
|
if (_WatermarkLayer != null) cb.BeginLayer(_WatermarkLayer);
|
||||||
SvgWatermark myWatermark = new SvgWatermark(cb, Watermark, System.Drawing.Color.Blue, .15F);
|
SvgWatermark myWatermark = new SvgWatermark(cb, Watermark, System.Drawing.Color.Blue, .15F);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user