286 lines
16 KiB
C#
286 lines
16 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using PdfSharp.Drawing;
|
|
using PdfSharp.Pdf;
|
|
using PdfSharp.Drawing.Layout;
|
|
|
|
|
|
|
|
namespace GenesisZeroFlow
|
|
{
|
|
|
|
public static class ReportPages
|
|
{
|
|
public static void Logfile(String text, PdfDocument report, XImage logo)
|
|
{
|
|
#region CA1062
|
|
if ((text == null) || (report == null))
|
|
return;
|
|
#endregion
|
|
|
|
const Int32 LinesPerPage = 60;
|
|
String[] Lines = text.Split('\n');
|
|
Double NumberOfNewlines = (double)Lines.Count();
|
|
Double aux = (NumberOfNewlines / LinesPerPage);
|
|
Int32 NumberOfPages = (Int32)Math.Ceiling(aux);
|
|
String[] StringArray = new String[NumberOfPages];
|
|
|
|
for (Int32 i = 0; i < (NumberOfNewlines); i++)
|
|
{
|
|
Int32 Pageindex = (Int32)Math.Floor(((Double)i / LinesPerPage));
|
|
StringArray[Pageindex] = StringArray[Pageindex] + Lines[i] + "\n";
|
|
}
|
|
|
|
//formatter.DrawString(text, ReportParams.fontStandard, XBrushes.Black, new XRect(50, 100, 0, 0), XStringFormats.TopLeft);
|
|
//Logfile.DrawString(text, ReportParams.fontStandard, XBrushes.Black, new XRect(10, 20, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
|
|
|
|
for (Int32 i = 0; i < NumberOfPages; i++)
|
|
{
|
|
PdfPage pdfPage = report.AddPage();
|
|
XGraphics Logfile = XGraphics.FromPdfPage(pdfPage);
|
|
var formatter = new XTextFormatter(Logfile);
|
|
var layoutRectangle = new XRect(1, 1, 1, 1);
|
|
Logfile.DrawImage(logo, new XRect(ReportParams.LogoXPos, ReportParams.LogoYPos, ReportParams.LogoXSize, ReportParams.LogoYSize));
|
|
formatter.DrawString(StringArray[i], ReportParams.fontSmall, XBrushes.Black, new XRect(50, 70, 600, 20), XStringFormats.TopLeft);
|
|
}
|
|
|
|
}
|
|
public static UInt16 TitlePage(UInt16 pagecounter, String introduction, String title, String date, String operatorName, String serialNo, PdfDocument report, XImage logo, CultureInfo culture)
|
|
{
|
|
#region CA1062
|
|
if (report == null)
|
|
return 0;
|
|
#endregion
|
|
try
|
|
{
|
|
#region Page "TITLEPAGE"
|
|
#region Prepare data
|
|
if (pagecounter < UInt16.MaxValue)
|
|
pagecounter++; // Pagenumber not on titlepage
|
|
report.Info.Title = title;
|
|
PdfPage pdfPage = report.AddPage();
|
|
XGraphics Titlepage = XGraphics.FromPdfPage(pdfPage);
|
|
var formatter = new XTextFormatter(Titlepage);
|
|
var layoutRectangle = new XRect(1, 1, 1, 1);
|
|
Titlepage.DrawImage(logo, new XRect(ReportParams.LogoXPos, ReportParams.LogoYPos, ReportParams.LogoXSize, ReportParams.LogoYSize));
|
|
Titlepage.DrawString($"{title}\n\n\n", ReportParams.font20, XBrushes.Black, new XRect(0, -200, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.Center);
|
|
Titlepage.DrawString(date, ReportParams.font14, XBrushes.Black, new XRect(0, -100, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.Center);
|
|
Titlepage.DrawString("by", ReportParams.font12, XBrushes.Black, new XRect(0, -50, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.Center);
|
|
Titlepage.DrawString(operatorName, ReportParams.font14, XBrushes.Black, new XRect(0, 0, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.Center);
|
|
Titlepage.DrawString($"Serial number: {serialNo}", ReportParams.font14, XBrushes.Black, new XRect(0, 100, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.Center);
|
|
formatter.DrawString(introduction, ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.IntroductionXPos, ReportParams.IntroductionYPos, 400, 200), XStringFormats.TopLeft);
|
|
#endregion
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
#region Error
|
|
ErrorLog.Log(LogErrReason.Exeption, "ReportPages.TitlePage() failed", $"0x{ex.HResult.ToString("X", culture)}", String.Empty, culture);
|
|
#endregion
|
|
}
|
|
|
|
#region Return value
|
|
return pagecounter;
|
|
#endregion
|
|
}
|
|
|
|
public static void ReturnNote(String headline, String text, PdfDocument report)
|
|
{
|
|
#region CA1062
|
|
if ((text == null) || (report == null))
|
|
return;
|
|
#endregion
|
|
const Int32 LinesPerPage = 70;
|
|
String[] Lines = text.Split('\n');
|
|
Double NumberOfNewlines = (Double)Lines.Count();
|
|
Double aux = (NumberOfNewlines / LinesPerPage);
|
|
Int32 NumberOfPages = (Int32)Math.Ceiling(aux);
|
|
String[] StringArray = new String[NumberOfPages];
|
|
|
|
for (Int32 i = 0; i < (NumberOfNewlines); i++)
|
|
{
|
|
Int32 Pageindex = (Int32)Math.Floor(((Double)i / LinesPerPage));
|
|
StringArray[Pageindex] = $"{StringArray[Pageindex]}{Lines[i]}\n";
|
|
}
|
|
|
|
//formatter.DrawString(text, ReportParams.fontStandard, XBrushes.Black, new XRect(50, 100, 0, 0), XStringFormats.TopLeft);
|
|
//Logfile.DrawString(text, ReportParams.fontStandard, XBrushes.Black, new XRect(10, 20, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
|
|
|
|
for (Int32 i = 0; i < NumberOfPages; i++)
|
|
{
|
|
PdfPage pdfPage = report.AddPage();
|
|
XGraphics Logfile = XGraphics.FromPdfPage(pdfPage);
|
|
var formatter = new XTextFormatter(Logfile);
|
|
var layoutRectangle = new XRect(1, 1, 1, 1);
|
|
//Logfile.DrawImage(logo, new XRect(ReportParams.LogoXPos, ReportParams.LogoYPos, ReportParams.LogoXSize, ReportParams.LogoYSize));
|
|
if (i == 0)
|
|
{
|
|
formatter.DrawString(headline, ReportParams.font20, XBrushes.Black, new XRect(250, 20, 600, 20), XStringFormats.TopLeft);
|
|
formatter.DrawString(StringArray[i], ReportParams.fontVerySmall, XBrushes.Black, new XRect(60, 50, 600, 20), XStringFormats.TopLeft);
|
|
}
|
|
else
|
|
formatter.DrawString(StringArray[i], ReportParams.fontVerySmall, XBrushes.Black, new XRect(50, 70, 600, 20), XStringFormats.TopLeft);
|
|
}
|
|
|
|
}
|
|
|
|
public static Int32 Settings(Int32 pagecounter, String textSoftwareVersion, String[] columns, Boolean enable, PdfDocument report, XImage logo, CultureInfo culture)
|
|
{
|
|
#region CA1062
|
|
if ((report == null) || (columns == null))
|
|
return 0;
|
|
#endregion
|
|
try
|
|
{
|
|
#region Page "SETTINGS"
|
|
#region Generate page
|
|
if (pagecounter < Int32.MaxValue)
|
|
pagecounter++;
|
|
PdfPage pdfPage = report.AddPage();
|
|
XGraphics Gp30Settings = XGraphics.FromPdfPage(pdfPage);
|
|
var formatterGp30Settings = new XTextFormatter(Gp30Settings);
|
|
var layoutRectangleGp30Settings = new XRect(1, 1, 1, 1);
|
|
#endregion
|
|
#region Set Image/ Logo
|
|
Gp30Settings.DrawImage(logo, new XRect(ReportParams.LogoXPos, ReportParams.LogoYPos, ReportParams.LogoXSize, ReportParams.LogoYSize));
|
|
#endregion
|
|
#region Headline1
|
|
Gp30Settings.DrawString("Settings", ReportParams.font20, XBrushes.Black, new XRect(ReportParams.HeadlineXPos, ReportParams.HeadlineYPos, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopCenter);
|
|
#endregion
|
|
#region Headline2 (first)
|
|
Gp30Settings.DrawString("Software Version", ReportParams.font12, XBrushes.Black, new XRect(ReportParams.Headline2XPos, ReportParams.Headline2YPos, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
|
|
#endregion
|
|
#region Data
|
|
formatterGp30Settings.DrawString(textSoftwareVersion, ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.StandardTextXPos, ReportParams.StandardTextYPos, 400, 200), XStringFormats.TopLeft);
|
|
#endregion
|
|
#region GP30 settings
|
|
if (enable)
|
|
{
|
|
#region Headline2
|
|
Gp30Settings.DrawString("Values obtained from register readout", ReportParams.font12, XBrushes.Black, new XRect(ReportParams.Headline2XPos, ReportParams.Headline2YPos + 150, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
|
|
#endregion
|
|
#region Data/ text
|
|
formatterGp30Settings.DrawString(columns[ReportParams.Column1], ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.StandardTextXPos, ReportParams.StandardTextYPos + 150, 400, 200), XStringFormats.TopLeft);
|
|
formatterGp30Settings.DrawString(columns[ReportParams.Column2], ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.StandardTextXPos + 140, ReportParams.StandardTextYPos + 150, 400, 200), XStringFormats.TopLeft);
|
|
formatterGp30Settings.DrawString(columns[ReportParams.Column3], ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.StandardTextXPos + 190, ReportParams.StandardTextYPos + 150, 400, 200), XStringFormats.TopLeft);
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region Set page number
|
|
Gp30Settings.DrawString($"Page {pagecounter.ToString(culture)}", ReportParams.font12, XBrushes.Black, new XRect(ReportParams.PageNumberXPosition, ReportParams.PageNumberYPosition, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.BottomCenter);
|
|
#endregion
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
#region Error
|
|
ErrorLog.Log(LogErrReason.Exeption, "ReportPages.Settings() failed", $"0x{ex.HResult.ToString("X", culture)}", String.Empty, culture);
|
|
#endregion
|
|
}
|
|
|
|
#region Return values
|
|
return pagecounter;
|
|
#endregion
|
|
}
|
|
|
|
public static UInt16 DecodedData(UInt16 pagecounter, String[] columns, Boolean enable, Boolean enableColumn2, Boolean enableColumn3, Boolean enableColumn4, PdfDocument report, XImage logo, CultureInfo culture)
|
|
{
|
|
const Int32 WaitingTime = 100;
|
|
|
|
#region CA1062
|
|
if ((report == null) || (columns == null))
|
|
return 0;
|
|
#endregion
|
|
|
|
try
|
|
{
|
|
#region Page "MEAN VALUES"
|
|
if ((enable) && ((enableColumn2) || (enableColumn3) || (enableColumn4)))
|
|
{
|
|
#region All PATHs
|
|
#region Prepare Data
|
|
if (pagecounter < UInt16.MaxValue)
|
|
pagecounter++;
|
|
PdfPage pdfPage = report.AddPage();
|
|
XGraphics XMean = XGraphics.FromPdfPage(pdfPage);
|
|
var formatterData = new XTextFormatter(XMean);
|
|
var layoutRectangleData = new XRect(1, 1, 1, 1);
|
|
int Xoffset = -20;
|
|
#endregion
|
|
#region Headline1
|
|
XMean.DrawString("Decoded Data", ReportParams.font20, XBrushes.Black, new XRect(ReportParams.HeadlineXPos, ReportParams.HeadlineYPos, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopCenter);
|
|
#endregion
|
|
#region Set text (First column)
|
|
if (!enableColumn2)
|
|
Xoffset = Xoffset + 40;
|
|
if (!enableColumn3)
|
|
Xoffset = Xoffset + 40;
|
|
if (!enableColumn4)
|
|
Xoffset = Xoffset + 40;
|
|
formatterData.DrawString(columns[ReportParams.Column1], ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.StandardTextXPos + Xoffset, ReportParams.StandardTextYPos, 400, 200), XStringFormats.TopLeft);
|
|
Xoffset = Xoffset + 120;
|
|
#endregion
|
|
#region Set Image/Logo
|
|
XMean.DrawImage(logo, new XRect(ReportParams.LogoXPos, ReportParams.LogoYPos, ReportParams.LogoXSize, ReportParams.LogoYSize));
|
|
#endregion
|
|
#region Add pagenumber
|
|
XMean.DrawString("Page " + pagecounter.ToString(culture), ReportParams.font12, XBrushes.Black, new XRect(ReportParams.PageNumberXPosition, ReportParams.PageNumberYPosition, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.BottomCenter);
|
|
#endregion
|
|
#endregion
|
|
#region PATH0
|
|
if (enableColumn2)
|
|
{
|
|
Misc.WaitNMilliseconds(WaitingTime);
|
|
#region Headline2
|
|
XMean.DrawString("PATH1", ReportParams.font12, XBrushes.Black, new XRect(ReportParams.Headline2XPos + Xoffset, ReportParams.Headline2YPos + 20, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
|
|
#endregion
|
|
#region Set text
|
|
formatterData.DrawString(columns[ReportParams.Column2], ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.StandardTextXPos + Xoffset, ReportParams.StandardTextYPos, 400, 200), XStringFormats.TopLeft);
|
|
Xoffset = Xoffset + 110;
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region PATH1
|
|
if (enableColumn3)
|
|
{
|
|
Misc.WaitNMilliseconds(WaitingTime);
|
|
#region Headline2
|
|
XMean.DrawString("PATH2", ReportParams.font12, XBrushes.Black, new XRect(ReportParams.Headline2XPos + Xoffset, ReportParams.Headline2YPos + 20, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
|
|
#endregion
|
|
#region Set text
|
|
formatterData.DrawString(columns[ReportParams.Column3], ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.StandardTextXPos + Xoffset, ReportParams.StandardTextYPos, 400, 200), XStringFormats.TopLeft);
|
|
Xoffset = Xoffset + 110;
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region PATH2
|
|
if (enableColumn4)
|
|
{
|
|
Misc.WaitNMilliseconds(WaitingTime);
|
|
#region Headline2
|
|
XMean.DrawString("PATH3", ReportParams.font12, XBrushes.Black, new XRect(ReportParams.Headline2XPos + Xoffset, ReportParams.Headline2YPos + 20, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
|
|
#endregion
|
|
#region Set text
|
|
formatterData.DrawString(columns[ReportParams.Column4], ReportParams.fontStandard, XBrushes.Black, new XRect(ReportParams.StandardTextXPos + Xoffset, ReportParams.StandardTextYPos, 400, 200), XStringFormats.TopLeft);
|
|
#endregion
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
#region Error
|
|
ErrorLog.Log(LogErrReason.Exeption, "ReportPages.DecodedData() failed", $"0x{ex.HResult.ToString("X", culture)}", String.Empty, culture);
|
|
#endregion
|
|
}
|
|
|
|
#region Return values
|
|
return pagecounter;
|
|
#endregion
|
|
}
|
|
|
|
|
|
}
|
|
} |