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:
2017-05-08 19:51:45 -05:00
parent 15abab5f50
commit 718562222d
10 changed files with 170 additions and 143 deletions
+2 -2
View File
@@ -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;
+1 -1
View File
@@ -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" />
+32 -38
View File
@@ -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
View File
@@ -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";
+7 -52
View File
@@ -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");
} }
} }
} }
+30 -8
View File
@@ -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;
+43 -28
View File
@@ -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
{
}
}
} }
} }
+1
View File
@@ -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>
+37 -3
View File
@@ -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>