First version of the report generating engine finished, Both front and back pages are merged into one PDF. Seems the user's screen resolution and/or size affect the size of the PDF document, I feel this is a sort of bug that must be fixed at some point.
This commit is contained in:
+2
-2
@@ -117,11 +117,11 @@
|
|||||||
this.Controls.Add(this.tableLayoutPanel);
|
this.Controls.Add(this.tableLayoutPanel);
|
||||||
this.DoubleBuffered = true;
|
this.DoubleBuffered = true;
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||||
this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
|
this.Margin = new System.Windows.Forms.Padding(6);
|
||||||
this.MaximizeBox = false;
|
this.MaximizeBox = false;
|
||||||
this.MinimizeBox = false;
|
this.MinimizeBox = false;
|
||||||
this.Name = "AboutBox1";
|
this.Name = "AboutBox1";
|
||||||
this.Padding = new System.Windows.Forms.Padding(17, 17, 17, 17);
|
this.Padding = new System.Windows.Forms.Padding(17);
|
||||||
this.ShowIcon = false;
|
this.ShowIcon = false;
|
||||||
this.ShowInTaskbar = false;
|
this.ShowInTaskbar = false;
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace AdvertsingProfitControl
|
|||||||
var db = new AdvertisingProfitControlModel();
|
var db = new AdvertisingProfitControlModel();
|
||||||
var version = db.Versions.SingleOrDefault(x => x.Id == 1);
|
var version = db.Versions.SingleOrDefault(x => x.Id == 1);
|
||||||
databaseVersionLabel.Text = version == null ? @"Database Version: N/A" : $@"Database Version: {version.VersionNumber}";
|
databaseVersionLabel.Text = version == null ? @"Database Version: N/A" : $@"Database Version: {version.VersionNumber}";
|
||||||
reportGeneratingVersionLabel.Text = @"Report Generating Engine Version: 0.5.0.0 Alpha";
|
reportGeneratingVersionLabel.Text = @"Report Generating Engine Version: " + ReportGenerator.Version;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,6 +99,12 @@
|
|||||||
<Reference Include="Pechkin, Version=0.5.8.1, Culture=neutral, processorArchitecture=x86">
|
<Reference Include="Pechkin, Version=0.5.8.1, Culture=neutral, processorArchitecture=x86">
|
||||||
<HintPath>..\packages\Pechkin.0.5.8.1\lib\net40\Pechkin.dll</HintPath>
|
<HintPath>..\packages\Pechkin.0.5.8.1\lib\net40\Pechkin.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Spire.License, Version=1.3.2.40, Culture=neutral, PublicKeyToken=b1144360237c8b3f, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\FreeSpire.PDF.3.2\lib\net40\Spire.License.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Spire.Pdf, Version=3.2.52.56040, Culture=neutral, PublicKeyToken=663f351905198cb3, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\FreeSpire.PDF.3.2\lib\net40\Spire.Pdf.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||||
<Reference Include="System.Configuration" />
|
<Reference Include="System.Configuration" />
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
|
||||||
using System.Drawing.Printing;
|
using System.Drawing.Printing;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web.UI;
|
using System.Web.UI;
|
||||||
using Pechkin;
|
using Pechkin;
|
||||||
@@ -10,34 +10,28 @@ namespace AdvertsingProfitControl
|
|||||||
{
|
{
|
||||||
internal class BackPageGenerator
|
internal class BackPageGenerator
|
||||||
{
|
{
|
||||||
FrmLogConsole _console = FrmLogConsole.GetStaticInstance;
|
/// <summary>
|
||||||
|
/// Generates the back page of the report, Weekly Inventory Control, as a single PDF file.
|
||||||
public byte[] RenderHtmlCodeToImage(string path, string targetPath)
|
/// </summary>
|
||||||
|
/// <param name="date"></param>
|
||||||
|
public void GenerateBackPage(DateTime date)
|
||||||
{
|
{
|
||||||
var htmlCode = File.ReadAllLines(path);
|
var stringWriter = new StringWriter();
|
||||||
var code = htmlCode.Aggregate("", (current, line) => current + "\r\n" + line);
|
var writer = new HtmlTextWriter(stringWriter);
|
||||||
try
|
BuildReportBackPage(date, ref writer);
|
||||||
|
var backPage = new SimplePechkin(new GlobalConfig().SetPaperOrientation(false).SetPaperSize(PaperKind.A4)).Convert(stringWriter.ToString());
|
||||||
|
//
|
||||||
|
using (var fs = new FileStream(GlobalClasses.LogFilePath + "Back.pdf", FileMode.Create, FileAccess.Write))
|
||||||
{
|
{
|
||||||
var config = new GlobalConfig().SetPaperSize(PaperKind.A4).SetPaperOrientation(true);
|
fs.Write(backPage, 0, backPage.Length);
|
||||||
var pdfBuf = new SimplePechkin(config).Convert(code);
|
|
||||||
using (var fs = new FileStream(targetPath, FileMode.Create, FileAccess.ReadWrite))
|
|
||||||
{
|
|
||||||
fs.Write(pdfBuf, 0, pdfBuf.Length);
|
|
||||||
}
|
|
||||||
return pdfBuf;
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_console.WriteToLog(FrmLogConsole.Level.Critical,
|
|
||||||
"Failed to generate an updated image for the back page of Advertising Profit Control.");
|
|
||||||
_console.WriteToLog(FrmLogConsole.Level.Debug, e.Message);
|
|
||||||
_console.WriteToLog(FrmLogConsole.Level.Info, "This is most likely a screw you from the GDI+ subsystem of Windows.");
|
|
||||||
|
|
||||||
}
|
|
||||||
return new byte[1];
|
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
public void BuildReportBackPage(DateTime date, ref HtmlTextWriter writer)
|
/// Generates the HTML code for the back page, Weekly Inventory Control.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="date"></param>
|
||||||
|
/// <param name="writer"></param>
|
||||||
|
private void BuildReportBackPage(DateTime date, ref HtmlTextWriter writer)
|
||||||
{
|
{
|
||||||
var db = new AdvertisingProfitControlModel();
|
var db = new AdvertisingProfitControlModel();
|
||||||
var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date);
|
var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date);
|
||||||
@@ -46,18 +40,18 @@ namespace AdvertsingProfitControl
|
|||||||
var taxable = db.Taxables.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
|
var taxable = db.Taxables.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
|
||||||
var costAnylsis = db.CostAnalysis.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
|
var costAnylsis = db.CostAnalysis.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
|
||||||
|
|
||||||
//writer.Write("<!DOCTYPE html>\n");
|
writer.Write("<!DOCTYPE html>\n");
|
||||||
//writer.RenderBeginTag(HtmlTextWriterTag.Html);
|
writer.RenderBeginTag(HtmlTextWriterTag.Html);
|
||||||
//writer.RenderBeginTag(HtmlTextWriterTag.Head);
|
writer.RenderBeginTag(HtmlTextWriterTag.Head);
|
||||||
//writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css");
|
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css");
|
||||||
//writer.RenderBeginTag(HtmlTextWriterTag.Style);
|
writer.RenderBeginTag(HtmlTextWriterTag.Style);
|
||||||
//writer.Write("td{margins:0px; padding:2px; border:1px solid black; text-align:left; vertical-align:bottom}");
|
writer.Write("td{margins:0px; padding:2px; border:1px solid black; text-align:left; vertical-align:bottom; font-size:20px}");
|
||||||
//writer.RenderEndTag();//style
|
writer.RenderEndTag();//style
|
||||||
//writer.RenderEndTag();//Head
|
writer.RenderEndTag();//Head
|
||||||
//writer.RenderBeginTag(HtmlTextWriterTag.Body);
|
writer.RenderBeginTag(HtmlTextWriterTag.Body);
|
||||||
writer.AddAttribute(HtmlTextWriterAttribute.Style, "page-break-inside: avoid; page-break-before:always");
|
//writer.AddAttribute(HtmlTextWriterAttribute.Style, "page-break-inside: avoid; page-break-before:always");
|
||||||
writer.RenderBeginTag(HtmlTextWriterTag.Div);//div
|
//writer.RenderBeginTag(HtmlTextWriterTag.Div);//div
|
||||||
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-collapse: collapse; width:50%; -webkit-transform: rotate(270deg)");
|
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-collapse: collapse; width:100%; height:100%");
|
||||||
writer.RenderBeginTag(HtmlTextWriterTag.Table);
|
writer.RenderBeginTag(HtmlTextWriterTag.Table);
|
||||||
//Create the header as the first row.
|
//Create the header as the first row.
|
||||||
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
|
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
|
||||||
@@ -372,7 +366,7 @@ namespace AdvertsingProfitControl
|
|||||||
writer.RenderEndTag();//tr
|
writer.RenderEndTag();//tr
|
||||||
}
|
}
|
||||||
writer.RenderEndTag();//table
|
writer.RenderEndTag();//table
|
||||||
writer.RenderEndTag();//div
|
//writer.RenderEndTag();//div
|
||||||
writer.RenderEndTag();//body
|
writer.RenderEndTag();//body
|
||||||
writer.RenderEndTag();//html
|
writer.RenderEndTag();//html
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-11
@@ -45,8 +45,8 @@
|
|||||||
this.manageSuppliersToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
this.manageSuppliersToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.adSpecialKeyWordsToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
this.adSpecialKeyWordsToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.helpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
this.helpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.showHideConsoleHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.dbVersionHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
this.dbVersionHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.showHideConsoleHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.examineLogsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.examineLogsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.debugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
this.debugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.rawViewDebugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
this.rawViewDebugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -135,11 +135,11 @@
|
|||||||
//
|
//
|
||||||
// printPreviewButton
|
// printPreviewButton
|
||||||
//
|
//
|
||||||
this.printPreviewButton.Location = new System.Drawing.Point(16, 273);
|
this.printPreviewButton.Location = new System.Drawing.Point(180, 271);
|
||||||
this.printPreviewButton.Name = "printPreviewButton";
|
this.printPreviewButton.Name = "printPreviewButton";
|
||||||
this.printPreviewButton.Size = new System.Drawing.Size(138, 49);
|
this.printPreviewButton.Size = new System.Drawing.Size(174, 49);
|
||||||
this.printPreviewButton.TabIndex = 4;
|
this.printPreviewButton.TabIndex = 4;
|
||||||
this.printPreviewButton.Text = "Print Preview";
|
this.printPreviewButton.Text = "Generate Report";
|
||||||
this.printPreviewButton.UseVisualStyleBackColor = true;
|
this.printPreviewButton.UseVisualStyleBackColor = true;
|
||||||
this.printPreviewButton.Click += new System.EventHandler(this.DisplayPrintPreview);
|
this.printPreviewButton.Click += new System.EventHandler(this.DisplayPrintPreview);
|
||||||
//
|
//
|
||||||
@@ -272,13 +272,6 @@
|
|||||||
this.helpMainMenu.Size = new System.Drawing.Size(68, 34);
|
this.helpMainMenu.Size = new System.Drawing.Size(68, 34);
|
||||||
this.helpMainMenu.Text = "&Help";
|
this.helpMainMenu.Text = "&Help";
|
||||||
//
|
//
|
||||||
// showHideConsoleHelpMainMenu
|
|
||||||
//
|
|
||||||
this.showHideConsoleHelpMainMenu.Name = "showHideConsoleHelpMainMenu";
|
|
||||||
this.showHideConsoleHelpMainMenu.Size = new System.Drawing.Size(288, 34);
|
|
||||||
this.showHideConsoleHelpMainMenu.Text = "Sh&ow/Hide Console";
|
|
||||||
this.showHideConsoleHelpMainMenu.Click += new System.EventHandler(this.ShowHideLogConsole);
|
|
||||||
//
|
|
||||||
// dbVersionHelpMainMenu
|
// dbVersionHelpMainMenu
|
||||||
//
|
//
|
||||||
this.dbVersionHelpMainMenu.Name = "dbVersionHelpMainMenu";
|
this.dbVersionHelpMainMenu.Name = "dbVersionHelpMainMenu";
|
||||||
@@ -286,6 +279,13 @@
|
|||||||
this.dbVersionHelpMainMenu.Text = "&Verison Information";
|
this.dbVersionHelpMainMenu.Text = "&Verison Information";
|
||||||
this.dbVersionHelpMainMenu.Click += new System.EventHandler(this.DisplayProductVersionNumbers);
|
this.dbVersionHelpMainMenu.Click += new System.EventHandler(this.DisplayProductVersionNumbers);
|
||||||
//
|
//
|
||||||
|
// showHideConsoleHelpMainMenu
|
||||||
|
//
|
||||||
|
this.showHideConsoleHelpMainMenu.Name = "showHideConsoleHelpMainMenu";
|
||||||
|
this.showHideConsoleHelpMainMenu.Size = new System.Drawing.Size(288, 34);
|
||||||
|
this.showHideConsoleHelpMainMenu.Text = "Sh&ow/Hide Console";
|
||||||
|
this.showHideConsoleHelpMainMenu.Click += new System.EventHandler(this.ShowHideLogConsole);
|
||||||
|
//
|
||||||
// examineLogsToolStripMenuItem
|
// examineLogsToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.examineLogsToolStripMenuItem.Name = "examineLogsToolStripMenuItem";
|
this.examineLogsToolStripMenuItem.Name = "examineLogsToolStripMenuItem";
|
||||||
|
|||||||
@@ -327,55 +327,10 @@ namespace AdvertsingProfitControl
|
|||||||
|
|
||||||
private void DisplayPrintPreview(object sender, EventArgs e)
|
private void DisplayPrintPreview(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//Build and render the front and back forms of the document.
|
printPreviewButton.Enabled = false;
|
||||||
//var test = new FrontPageGenerator();
|
var report = new ReportGenerator();
|
||||||
//var backPageTest = new BackPageGenerator();
|
report.GeneratePdfReport(_currentActiveDate);
|
||||||
//var printTestPage = new PrintDocument();
|
printPreviewButton.Enabled = true;
|
||||||
//var printDialog = new PrintPreviewDialog();
|
|
||||||
//if (!usePreRenderedFilesCheckbox.Checked)
|
|
||||||
//{
|
|
||||||
// //var databaseTracker = new DatabaseTracker();
|
|
||||||
// //var databaseReader = new DatabaseReader();
|
|
||||||
// //var dateId =
|
|
||||||
// // databaseReader.RetrieveDateIdByDateString(monthCalendar.SelectionStart.ToShortDateString(),
|
|
||||||
// // databaseTracker.DatabaseConnectionString);
|
|
||||||
// //var remaingingSales = _departmentSales - _salesProducedByAdItems;
|
|
||||||
// //var totalProfitReturnFromReminaingSales = remaingingSales * .3m;
|
|
||||||
// //var totalProfitReturn = _totalProfitReturnFromAdItems + totalProfitReturnFromReminaingSales;
|
|
||||||
// ////test.BuildFormFrontCompressedLayout(dateId, _departmentSales, _salesProducedByAdItems, remaingingSales,
|
|
||||||
// // //_totalProfitReturnFromAdItems, totalProfitReturnFromReminaingSales, totalProfitReturn,
|
|
||||||
// // //commentsTextBox.Text);
|
|
||||||
// //test.RenderHtmlToImage();
|
|
||||||
// //backPageTest.GenerateWeeklyInventoryControlPage(dateId);
|
|
||||||
// //backPageTest.RenderHtmlToImage();
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// if (File.Exists(Application.StartupPath + "\\" + "FrontPage.html") &&
|
|
||||||
// File.Exists(Application.StartupPath + "\\" + "Backpage.html"))
|
|
||||||
// {
|
|
||||||
// test.RenderHtmlToImage();
|
|
||||||
// backPageTest.RenderHtmlToImage();
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
//var margin = new Margins(50, 50, 0, 0);
|
|
||||||
//printDoc.DefaultPageSettings.Margins = margin;
|
|
||||||
//printTestPage.PrintPage += PrintPage;
|
|
||||||
//printDialog.Document = printTestPage;
|
|
||||||
//printDialog.ShowDialog();
|
|
||||||
//printDialog.Document = new PrintDocument();
|
|
||||||
|
|
||||||
//var dialog = new FolderBrowserDialog();
|
|
||||||
//dialog.ShowDialog();
|
|
||||||
//var path = dialog.SelectedPath;
|
|
||||||
//var pdf = gen.RenderHtmlCodeToImage(path + "\\FrontPage.html", path + "\\Image.pdf");
|
|
||||||
//var doc = new PrintDocument();
|
|
||||||
//doc.PrintPage += RenderPage;
|
|
||||||
//var spam = new PrintPreviewDialog {Document = doc};
|
|
||||||
//spam.ShowDialog();
|
|
||||||
//var form = new Test();
|
|
||||||
//form.ShowDialog();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RenderPage(object sender, PrintPageEventArgs e)
|
private void RenderPage(object sender, PrintPageEventArgs e)
|
||||||
@@ -910,6 +865,7 @@ namespace AdvertsingProfitControl
|
|||||||
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = string.Empty;
|
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = string.Empty;
|
||||||
clearCurrentActiveYearTools.Enabled = true;
|
clearCurrentActiveYearTools.Enabled = true;
|
||||||
clearCurrentActiveYearTools.ToolTipText = string.Empty;
|
clearCurrentActiveYearTools.ToolTipText = string.Empty;
|
||||||
|
printPreviewButton.Enabled = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -920,6 +876,7 @@ namespace AdvertsingProfitControl
|
|||||||
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = @"There is no date to clear.";
|
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = @"There is no date to clear.";
|
||||||
clearCurrentActiveYearTools.Enabled = false;
|
clearCurrentActiveYearTools.Enabled = false;
|
||||||
clearCurrentActiveYearTools.ToolTipText = @"There are no records to clear.";
|
clearCurrentActiveYearTools.ToolTipText = @"There are no records to clear.";
|
||||||
|
printPreviewButton.Enabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1139,9 +1096,7 @@ namespace AdvertsingProfitControl
|
|||||||
|
|
||||||
private void testToolStripMenuItem_Click(object sender, EventArgs e)
|
private void testToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var page = new ReportGenerator();
|
MessageBox.Show(@"Nothing to debug here!", @"Debug Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
page.GeneratePdfReport(_currentActiveDate);
|
|
||||||
page.RenderHtmlCodeToImage("C:\\Users\\Crypto\\Desktop\\Full.html", "C:\\Users\\Crypto\\Desktop\\Full.pdf");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,9 +10,28 @@ namespace AdvertsingProfitControl
|
|||||||
{
|
{
|
||||||
internal class FrontPageGenerator
|
internal class FrontPageGenerator
|
||||||
{
|
{
|
||||||
FrmLogConsole _console = FrmLogConsole.GetStaticInstance;
|
/// <summary>
|
||||||
|
/// Generates the front page of the report, Advertising Profit Control, as a single PDF file.
|
||||||
public void BuildReportFrontPage(DateTime date, ref HtmlTextWriter writer)
|
/// </summary>
|
||||||
|
/// <param name="date"></param>
|
||||||
|
public void GenerateFrontPage(DateTime date)
|
||||||
|
{
|
||||||
|
var stringWriter = new StringWriter();
|
||||||
|
var writer = new HtmlTextWriter(stringWriter);
|
||||||
|
BuildReportFrontPage(date, ref writer);
|
||||||
|
var frontPage = new SimplePechkin(new GlobalConfig().SetPaperOrientation(true).SetPaperSize(PaperKind.A4)).Convert(stringWriter.ToString());
|
||||||
|
//
|
||||||
|
using (var fs = new FileStream(GlobalClasses.LogFilePath + "Front.pdf", FileMode.Create, FileAccess.Write))
|
||||||
|
{
|
||||||
|
fs.Write(frontPage, 0, frontPage.Length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Generates the HTML code for the front page, Advertising Profit Control.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="date"></param>
|
||||||
|
/// <param name="writer"></param>
|
||||||
|
private void BuildReportFrontPage(DateTime date, ref HtmlTextWriter writer)
|
||||||
{
|
{
|
||||||
var db = new AdvertisingProfitControlModel();
|
var db = new AdvertisingProfitControlModel();
|
||||||
var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date);
|
var dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date);
|
||||||
@@ -27,15 +46,16 @@ namespace AdvertsingProfitControl
|
|||||||
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css");
|
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css");
|
||||||
//Set the global style for the data cells.
|
//Set the global style for the data cells.
|
||||||
writer.RenderBeginTag(HtmlTextWriterTag.Style);
|
writer.RenderBeginTag(HtmlTextWriterTag.Style);
|
||||||
writer.Write("td{margins:0; padding:2px; border:1px solid black; font-size:20px; text-align:center; vertical-align:bottom}");
|
writer.Write("td{margins:0; padding:2px; border:1px solid black; font-size:14px; text-align:center; vertical-align:bottom}");
|
||||||
writer.RenderEndTag();// end style
|
writer.RenderEndTag();// end style
|
||||||
writer.RenderEndTag(); // end Head
|
writer.RenderEndTag(); // end Head
|
||||||
|
//writer.AddAttribute(HtmlTextWriterAttribute.Style, "width:11in; height:8in");
|
||||||
writer.RenderBeginTag(HtmlTextWriterTag.Body);
|
writer.RenderBeginTag(HtmlTextWriterTag.Body);
|
||||||
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-collapse: collapse; width:100%"); //style for the table
|
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; border-collapse: collapse; margin-top:1in; width:100%; height:100%"); //style for the table
|
||||||
writer.RenderBeginTag(HtmlTextWriterTag.Table);
|
writer.RenderBeginTag(HtmlTextWriterTag.Table);
|
||||||
//Begin rendering the top rows, the form name, store, department and date fields.
|
//Begin rendering the top rows, the form name, store, department and date fields.
|
||||||
writer.RenderBeginTag(HtmlTextWriterTag.Tr);//begin first row
|
writer.RenderBeginTag(HtmlTextWriterTag.Tr);//begin first row
|
||||||
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; font-size:40px");
|
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none; font-size:30px");
|
||||||
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "20");
|
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "20");
|
||||||
writer.RenderBeginTag(HtmlTextWriterTag.Td);
|
writer.RenderBeginTag(HtmlTextWriterTag.Td);
|
||||||
writer.Write("<b>Advertising Profit Control v" + Application.ProductVersion + "</b>");
|
writer.Write("<b>Advertising Profit Control v" + Application.ProductVersion + "</b>");
|
||||||
@@ -291,6 +311,8 @@ namespace AdvertsingProfitControl
|
|||||||
writer.RenderEndTag();//end totals row
|
writer.RenderEndTag();//end totals row
|
||||||
//end totals row
|
//end totals row
|
||||||
writer.RenderEndTag();//table
|
writer.RenderEndTag();//table
|
||||||
|
writer.RenderEndTag();//body
|
||||||
|
writer.RenderEndTag();//html
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RenderCostsAnalysisCell(CostAnalysisCells cell, ref HtmlTextWriter writer, decimal? value, string rowSpan)
|
private void RenderCostsAnalysisCell(CostAnalysisCells cell, ref HtmlTextWriter writer, decimal? value, string rowSpan)
|
||||||
@@ -318,11 +340,11 @@ namespace AdvertsingProfitControl
|
|||||||
break;
|
break;
|
||||||
case CostAnalysisCells.ProfitReturnFromRemainingSales:
|
case CostAnalysisCells.ProfitReturnFromRemainingSales:
|
||||||
number = "5";
|
number = "5";
|
||||||
labelText = "Total $ Profit Return<br>From Remaining Sales<br><br>Going-in Gross % x Remaining Sales";
|
labelText = "Total $ Profit Return<br>From Remaining Sales";
|
||||||
break;
|
break;
|
||||||
case CostAnalysisCells.TotalProfitReturn:
|
case CostAnalysisCells.TotalProfitReturn:
|
||||||
number = "6";
|
number = "6";
|
||||||
labelText = "Total $ Profit<br>Return<br><br>Line 4 Plus Line 5";
|
labelText = "Total $ Profit<br>Return<br>Line 4 Plus Line 5";
|
||||||
break;
|
break;
|
||||||
case CostAnalysisCells.CrossProfitInfoCell:
|
case CostAnalysisCells.CrossProfitInfoCell:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1,50 +1,65 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Drawing.Printing;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using Spire.Pdf;
|
||||||
using System.Web.UI;
|
|
||||||
using Pechkin;
|
|
||||||
|
|
||||||
namespace AdvertsingProfitControl
|
namespace AdvertsingProfitControl
|
||||||
{
|
{
|
||||||
internal class ReportGenerator
|
internal class ReportGenerator
|
||||||
{
|
{
|
||||||
public readonly string Version = "1.0.0.0";
|
public static readonly string Version = "0.5.0.0";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Generates a full report, and places the file on the user's desktop for later viewing.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="date"></param>
|
||||||
public void GeneratePdfReport(DateTime date)
|
public void GeneratePdfReport(DateTime date)
|
||||||
{
|
{
|
||||||
var stringWriter = new StringWriter();
|
//Check to see if the report already exists.
|
||||||
var writer = new HtmlTextWriter(stringWriter);
|
var reportFileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + date.ToString("yyyy MMMM dd") + " Report.pdf";
|
||||||
|
if (File.Exists(reportFileName))
|
||||||
|
{
|
||||||
|
var argument = "/select, \"" + reportFileName + "\"";
|
||||||
|
System.Diagnostics.Process.Start("explorer.exe", argument);
|
||||||
|
return;
|
||||||
|
}
|
||||||
var front = new FrontPageGenerator();
|
var front = new FrontPageGenerator();
|
||||||
var back = new BackPageGenerator();
|
var back = new BackPageGenerator();
|
||||||
front.BuildReportFrontPage(date, ref writer);
|
front.GenerateFrontPage(date);
|
||||||
back.BuildReportBackPage(date, ref writer);
|
back.GenerateBackPage(date);
|
||||||
|
//Merge the PDFs
|
||||||
using (var streamWriter = new StreamWriter("C:\\Users\\Crypto\\Desktop\\Full.html"))
|
GenerateFullReport(reportFileName);
|
||||||
{
|
|
||||||
streamWriter.WriteLine(stringWriter.ToString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
public void RenderHtmlCodeToImage(string path, string targetPath)
|
/// Merges the front and back PDF files into one and places the new file on the user's desktop.
|
||||||
|
/// Deletes the front and back pages when done.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="targetPath"></param>
|
||||||
|
private static void GenerateFullReport(string targetPath)
|
||||||
{
|
{
|
||||||
var htmlCode = File.ReadAllLines(path);
|
|
||||||
var code = htmlCode.Aggregate("", (current, line) => current + "\r\n" + line);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var pechkin = new SimplePechkin(new GlobalConfig().SetMargins(50,0,0,0).SetPaperSize(PaperKind.A4).SetPaperOrientation(true).SetCopyCount(1));
|
var pdfdocs = new PdfDocument[2];
|
||||||
var pdf = pechkin.Convert(new ObjectConfig().SetZoomFactor(1.25), code);
|
pdfdocs[0] = new PdfDocument();
|
||||||
//var config = new GlobalConfig().SetPaperSize(PaperKind.A4).SetPaperOrientation(true);
|
pdfdocs[0].LoadFromFile(GlobalClasses.LogFilePath + "Front.pdf", FileFormat.PDF);
|
||||||
//var pdfBuf = new SimplePechkin(config).Convert(code);
|
pdfdocs[1] = new PdfDocument();
|
||||||
using (var fs = new FileStream(targetPath, FileMode.Create, FileAccess.Write))
|
pdfdocs[1].LoadFromFile(GlobalClasses.LogFilePath + "Back.pdf", FileFormat.PDF);
|
||||||
{
|
pdfdocs[0].AppendPage(pdfdocs[1]);
|
||||||
fs.Write(pdf, 0, pdf.Length);
|
pdfdocs[0].SaveToFile(targetPath);
|
||||||
}
|
pdfdocs[0].Close();
|
||||||
|
pdfdocs[1].Close();
|
||||||
|
File.Delete(GlobalClasses.LogFilePath + "Front.pdf");
|
||||||
|
File.Delete(GlobalClasses.LogFilePath + "Back.pdf");
|
||||||
|
var argument = "/select, \"" + targetPath + "\"";
|
||||||
|
System.Diagnostics.Process.Start("explorer.exe", argument);
|
||||||
}
|
}
|
||||||
finally
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
finally
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,5 +3,6 @@
|
|||||||
<package id="Common.Logging" version="3.3.1" targetFramework="net45" />
|
<package id="Common.Logging" version="3.3.1" targetFramework="net45" />
|
||||||
<package id="Common.Logging.Core" version="3.3.1" targetFramework="net45" />
|
<package id="Common.Logging.Core" version="3.3.1" targetFramework="net45" />
|
||||||
<package id="EntityFramework" version="6.1.3" targetFramework="net45" />
|
<package id="EntityFramework" version="6.1.3" targetFramework="net45" />
|
||||||
|
<package id="FreeSpire.PDF" version="3.2" targetFramework="net45" />
|
||||||
<package id="Pechkin" version="0.5.8.1" targetFramework="net45" />
|
<package id="Pechkin" version="0.5.8.1" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
||||||
@@ -90,17 +90,51 @@
|
|||||||
<Component Id="AppConfig">
|
<Component Id="AppConfig">
|
||||||
<File Name="AdvertsingProfitControl.exe.config" Source="$(var.SolutionDir)\AdvertsingProfitControl\App.config"/>
|
<File Name="AdvertsingProfitControl.exe.config" Source="$(var.SolutionDir)\AdvertsingProfitControl\App.config"/>
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="HTMLRender">
|
<!--<Component Id="HTMLRender">
|
||||||
<File Source="$(var.SolutionDir)\packages\HtmlRenderer.WinForms.1.5.0.6\lib\net45\HtmlRenderer.WinForms.dll"/>
|
<File Source="$(var.SolutionDir)\packages\HtmlRenderer.WinForms.1.5.0.6\lib\net45\HtmlRenderer.WinForms.dll"/>
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="HTMLRenderCore">
|
<Component Id="HTMLRenderCore">
|
||||||
<File Source="$(var.SolutionDir)\packages\HtmlRenderer.Core.1.5.0.6\lib\net45\HtmlRenderer.dll"/>
|
<File Source="$(var.SolutionDir)\packages\HtmlRenderer.Core.1.5.0.6\lib\net45\HtmlRenderer.dll"/>
|
||||||
</Component>
|
</Component>-->
|
||||||
<Component Id="EntityFrameworkDll">
|
<Component Id="EntityFrameworkDll">
|
||||||
<File Source="$(var.SolutionDir)\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll"/>
|
<File Source="$(var.SolutionDir)\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll"/>
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="EntityFrameworkSqlDll">
|
<Component Id="EntityFrameworkSqlDll">
|
||||||
<File Source="$(var.SolutionDir)\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll"/>
|
<File Source="$(var.SolutionDir)\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll"/>
|
||||||
|
</Component>
|
||||||
|
<!--PDF generator library files-->
|
||||||
|
<Component Id="libeay32">
|
||||||
|
<File Source="$(var.SolutionDir)AdvertsingProfitControl\libeay32.dll"/>
|
||||||
|
</Component>
|
||||||
|
<Component Id="libgcc_s_dw2">
|
||||||
|
<File Source="$(var.SolutionDir)AdvertsingProfitControl\libgcc_s_dw2-1.dll"/>
|
||||||
|
</Component>
|
||||||
|
<Component Id="mingwm10">
|
||||||
|
<File Source="$(var.SolutionDir)AdvertsingProfitControl\mingwm10.dll"/>
|
||||||
|
</Component>
|
||||||
|
<Component Id="ssleay32">
|
||||||
|
<File Source="$(var.SolutionDir)AdvertsingProfitControl\ssleay32.dll"/>
|
||||||
|
</Component>
|
||||||
|
<Component Id="wkhtmltox0">
|
||||||
|
<File Source="$(var.SolutionDir)AdvertsingProfitControl\wkhtmltox0.dll"/>
|
||||||
|
</Component>
|
||||||
|
|
||||||
|
<Component Id="Spire">
|
||||||
|
<File Source="$(var.SolutionDir)\packages\FreeSpire.PDF.3.2\lib\net40\Spire.License.dll"/>
|
||||||
|
</Component>
|
||||||
|
<Component Id="SpirePdf">
|
||||||
|
<File Source="$(var.SolutionDir)\packages\FreeSpire.PDF.3.2\lib\net40\Spire.Pdf.dll"/>
|
||||||
|
</Component>
|
||||||
|
<!--Pechkin-->
|
||||||
|
<Component Id="Pechkin">
|
||||||
|
<File Source="$(var.SolutionDir)packages\Pechkin.0.5.8.1\lib\net40\Pechkin.dll"/>
|
||||||
|
</Component>
|
||||||
|
<!--Common logging -->
|
||||||
|
<Component Id="CommonCore">
|
||||||
|
<File Source="$(var.SolutionDir)\packages\Common.Logging.Core.3.3.1\lib\net40\Common.Logging.Core.dll"/>
|
||||||
|
</Component>
|
||||||
|
<Component Id="Logging">
|
||||||
|
<File Source="$(var.SolutionDir)\packages\Common.Logging.3.3.1\lib\net40\Common.Logging.dll"/>
|
||||||
</Component>
|
</Component>
|
||||||
</ComponentGroup>
|
</ComponentGroup>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
|
|||||||
Reference in New Issue
Block a user