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.DoubleBuffered = true;
|
||||
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.MinimizeBox = false;
|
||||
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.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace AdvertsingProfitControl
|
||||
var db = new AdvertisingProfitControlModel();
|
||||
var version = db.Versions.SingleOrDefault(x => x.Id == 1);
|
||||
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">
|
||||
<HintPath>..\packages\Pechkin.0.5.8.1\lib\net40\Pechkin.dll</HintPath>
|
||||
</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.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Configuration" />
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Drawing.Printing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web.UI;
|
||||
using Pechkin;
|
||||
@@ -10,34 +10,28 @@ namespace AdvertsingProfitControl
|
||||
{
|
||||
internal class BackPageGenerator
|
||||
{
|
||||
FrmLogConsole _console = FrmLogConsole.GetStaticInstance;
|
||||
|
||||
public byte[] RenderHtmlCodeToImage(string path, string targetPath)
|
||||
/// <summary>
|
||||
/// Generates the back page of the report, Weekly Inventory Control, as a single PDF file.
|
||||
/// </summary>
|
||||
/// <param name="date"></param>
|
||||
public void GenerateBackPage(DateTime date)
|
||||
{
|
||||
var htmlCode = File.ReadAllLines(path);
|
||||
var code = htmlCode.Aggregate("", (current, line) => current + "\r\n" + line);
|
||||
try
|
||||
var stringWriter = new StringWriter();
|
||||
var writer = new HtmlTextWriter(stringWriter);
|
||||
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);
|
||||
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;
|
||||
fs.Write(backPage, 0, backPage.Length);
|
||||
}
|
||||
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];
|
||||
}
|
||||
|
||||
public void BuildReportBackPage(DateTime date, ref HtmlTextWriter writer)
|
||||
/// <summary>
|
||||
/// 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 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 costAnylsis = db.CostAnalysis.SingleOrDefault(x => x.FkDateId == dateRecord.Id);
|
||||
|
||||
//writer.Write("<!DOCTYPE html>\n");
|
||||
//writer.RenderBeginTag(HtmlTextWriterTag.Html);
|
||||
//writer.RenderBeginTag(HtmlTextWriterTag.Head);
|
||||
//writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css");
|
||||
//writer.RenderBeginTag(HtmlTextWriterTag.Style);
|
||||
//writer.Write("td{margins:0px; padding:2px; border:1px solid black; text-align:left; vertical-align:bottom}");
|
||||
//writer.RenderEndTag();//style
|
||||
//writer.RenderEndTag();//Head
|
||||
//writer.RenderBeginTag(HtmlTextWriterTag.Body);
|
||||
writer.AddAttribute(HtmlTextWriterAttribute.Style, "page-break-inside: avoid; page-break-before:always");
|
||||
writer.RenderBeginTag(HtmlTextWriterTag.Div);//div
|
||||
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-collapse: collapse; width:50%; -webkit-transform: rotate(270deg)");
|
||||
writer.Write("<!DOCTYPE html>\n");
|
||||
writer.RenderBeginTag(HtmlTextWriterTag.Html);
|
||||
writer.RenderBeginTag(HtmlTextWriterTag.Head);
|
||||
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css");
|
||||
writer.RenderBeginTag(HtmlTextWriterTag.Style);
|
||||
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();//Head
|
||||
writer.RenderBeginTag(HtmlTextWriterTag.Body);
|
||||
//writer.AddAttribute(HtmlTextWriterAttribute.Style, "page-break-inside: avoid; page-break-before:always");
|
||||
//writer.RenderBeginTag(HtmlTextWriterTag.Div);//div
|
||||
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-collapse: collapse; width:100%; height:100%");
|
||||
writer.RenderBeginTag(HtmlTextWriterTag.Table);
|
||||
//Create the header as the first row.
|
||||
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
|
||||
@@ -372,7 +366,7 @@ namespace AdvertsingProfitControl
|
||||
writer.RenderEndTag();//tr
|
||||
}
|
||||
writer.RenderEndTag();//table
|
||||
writer.RenderEndTag();//div
|
||||
//writer.RenderEndTag();//div
|
||||
writer.RenderEndTag();//body
|
||||
writer.RenderEndTag();//html
|
||||
}
|
||||
|
||||
+11
-11
@@ -45,8 +45,8 @@
|
||||
this.manageSuppliersToolsMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.adSpecialKeyWordsToolsMainMenu = 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.showHideConsoleHelpMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.examineLogsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.debugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.rawViewDebugMainMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -135,11 +135,11 @@
|
||||
//
|
||||
// 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.Size = new System.Drawing.Size(138, 49);
|
||||
this.printPreviewButton.Size = new System.Drawing.Size(174, 49);
|
||||
this.printPreviewButton.TabIndex = 4;
|
||||
this.printPreviewButton.Text = "Print Preview";
|
||||
this.printPreviewButton.Text = "Generate Report";
|
||||
this.printPreviewButton.UseVisualStyleBackColor = true;
|
||||
this.printPreviewButton.Click += new System.EventHandler(this.DisplayPrintPreview);
|
||||
//
|
||||
@@ -272,13 +272,6 @@
|
||||
this.helpMainMenu.Size = new System.Drawing.Size(68, 34);
|
||||
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
|
||||
//
|
||||
this.dbVersionHelpMainMenu.Name = "dbVersionHelpMainMenu";
|
||||
@@ -286,6 +279,13 @@
|
||||
this.dbVersionHelpMainMenu.Text = "&Verison Information";
|
||||
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
|
||||
//
|
||||
this.examineLogsToolStripMenuItem.Name = "examineLogsToolStripMenuItem";
|
||||
|
||||
@@ -327,55 +327,10 @@ namespace AdvertsingProfitControl
|
||||
|
||||
private void DisplayPrintPreview(object sender, EventArgs e)
|
||||
{
|
||||
//Build and render the front and back forms of the document.
|
||||
//var test = new FrontPageGenerator();
|
||||
//var backPageTest = new BackPageGenerator();
|
||||
//var printTestPage = new PrintDocument();
|
||||
//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();
|
||||
printPreviewButton.Enabled = false;
|
||||
var report = new ReportGenerator();
|
||||
report.GeneratePdfReport(_currentActiveDate);
|
||||
printPreviewButton.Enabled = true;
|
||||
}
|
||||
|
||||
private void RenderPage(object sender, PrintPageEventArgs e)
|
||||
@@ -910,6 +865,7 @@ namespace AdvertsingProfitControl
|
||||
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = string.Empty;
|
||||
clearCurrentActiveYearTools.Enabled = true;
|
||||
clearCurrentActiveYearTools.ToolTipText = string.Empty;
|
||||
printPreviewButton.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -920,6 +876,7 @@ namespace AdvertsingProfitControl
|
||||
clearCurrentRecordSelectedDateToolsMainMenu.ToolTipText = @"There is no date to clear.";
|
||||
clearCurrentActiveYearTools.Enabled = false;
|
||||
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)
|
||||
{
|
||||
var page = new ReportGenerator();
|
||||
page.GeneratePdfReport(_currentActiveDate);
|
||||
page.RenderHtmlCodeToImage("C:\\Users\\Crypto\\Desktop\\Full.html", "C:\\Users\\Crypto\\Desktop\\Full.pdf");
|
||||
MessageBox.Show(@"Nothing to debug here!", @"Debug Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,9 +10,28 @@ namespace AdvertsingProfitControl
|
||||
{
|
||||
internal class FrontPageGenerator
|
||||
{
|
||||
FrmLogConsole _console = FrmLogConsole.GetStaticInstance;
|
||||
|
||||
public void BuildReportFrontPage(DateTime date, ref HtmlTextWriter writer)
|
||||
/// <summary>
|
||||
/// Generates the front page of the report, Advertising Profit Control, as a single PDF file.
|
||||
/// </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 dateRecord = db.WeekEndingDates.SingleOrDefault(x => x.EndingDate == date);
|
||||
@@ -27,15 +46,16 @@ namespace AdvertsingProfitControl
|
||||
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css");
|
||||
//Set the global style for the data cells.
|
||||
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 Head
|
||||
//writer.AddAttribute(HtmlTextWriterAttribute.Style, "width:11in; height:8in");
|
||||
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);
|
||||
//Begin rendering the top rows, the form name, store, department and date fields.
|
||||
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.RenderBeginTag(HtmlTextWriterTag.Td);
|
||||
writer.Write("<b>Advertising Profit Control v" + Application.ProductVersion + "</b>");
|
||||
@@ -291,6 +311,8 @@ namespace AdvertsingProfitControl
|
||||
writer.RenderEndTag();//end totals row
|
||||
//end totals row
|
||||
writer.RenderEndTag();//table
|
||||
writer.RenderEndTag();//body
|
||||
writer.RenderEndTag();//html
|
||||
}
|
||||
|
||||
private void RenderCostsAnalysisCell(CostAnalysisCells cell, ref HtmlTextWriter writer, decimal? value, string rowSpan)
|
||||
@@ -318,11 +340,11 @@ namespace AdvertsingProfitControl
|
||||
break;
|
||||
case CostAnalysisCells.ProfitReturnFromRemainingSales:
|
||||
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;
|
||||
case CostAnalysisCells.TotalProfitReturn:
|
||||
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;
|
||||
case CostAnalysisCells.CrossProfitInfoCell:
|
||||
break;
|
||||
|
||||
@@ -1,50 +1,65 @@
|
||||
using System;
|
||||
using System.Drawing.Printing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web.UI;
|
||||
using Pechkin;
|
||||
using Spire.Pdf;
|
||||
|
||||
namespace AdvertsingProfitControl
|
||||
{
|
||||
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)
|
||||
{
|
||||
var stringWriter = new StringWriter();
|
||||
var writer = new HtmlTextWriter(stringWriter);
|
||||
//Check to see if the report already exists.
|
||||
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 back = new BackPageGenerator();
|
||||
front.BuildReportFrontPage(date, ref writer);
|
||||
back.BuildReportBackPage(date, ref writer);
|
||||
|
||||
using (var streamWriter = new StreamWriter("C:\\Users\\Crypto\\Desktop\\Full.html"))
|
||||
{
|
||||
streamWriter.WriteLine(stringWriter.ToString());
|
||||
}
|
||||
front.GenerateFrontPage(date);
|
||||
back.GenerateBackPage(date);
|
||||
//Merge the PDFs
|
||||
GenerateFullReport(reportFileName);
|
||||
}
|
||||
|
||||
public void RenderHtmlCodeToImage(string path, string targetPath)
|
||||
/// <summary>
|
||||
/// 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
|
||||
{
|
||||
var pechkin = new SimplePechkin(new GlobalConfig().SetMargins(50,0,0,0).SetPaperSize(PaperKind.A4).SetPaperOrientation(true).SetCopyCount(1));
|
||||
var pdf = pechkin.Convert(new ObjectConfig().SetZoomFactor(1.25), code);
|
||||
//var config = new GlobalConfig().SetPaperSize(PaperKind.A4).SetPaperOrientation(true);
|
||||
//var pdfBuf = new SimplePechkin(config).Convert(code);
|
||||
using (var fs = new FileStream(targetPath, FileMode.Create, FileAccess.Write))
|
||||
{
|
||||
fs.Write(pdf, 0, pdf.Length);
|
||||
}
|
||||
var pdfdocs = new PdfDocument[2];
|
||||
pdfdocs[0] = new PdfDocument();
|
||||
pdfdocs[0].LoadFromFile(GlobalClasses.LogFilePath + "Front.pdf", FileFormat.PDF);
|
||||
pdfdocs[1] = new PdfDocument();
|
||||
pdfdocs[1].LoadFromFile(GlobalClasses.LogFilePath + "Back.pdf", FileFormat.PDF);
|
||||
pdfdocs[0].AppendPage(pdfdocs[1]);
|
||||
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.Core" version="3.3.1" 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" />
|
||||
</packages>
|
||||
@@ -90,17 +90,51 @@
|
||||
<Component Id="AppConfig">
|
||||
<File Name="AdvertsingProfitControl.exe.config" Source="$(var.SolutionDir)\AdvertsingProfitControl\App.config"/>
|
||||
</Component>
|
||||
<Component Id="HTMLRender">
|
||||
<!--<Component Id="HTMLRender">
|
||||
<File Source="$(var.SolutionDir)\packages\HtmlRenderer.WinForms.1.5.0.6\lib\net45\HtmlRenderer.WinForms.dll"/>
|
||||
</Component>
|
||||
<Component Id="HTMLRenderCore">
|
||||
<File Source="$(var.SolutionDir)\packages\HtmlRenderer.Core.1.5.0.6\lib\net45\HtmlRenderer.dll"/>
|
||||
</Component>
|
||||
<Component Id="EntityFrameworkDll">
|
||||
</Component>-->
|
||||
<Component Id="EntityFrameworkDll">
|
||||
<File Source="$(var.SolutionDir)\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll"/>
|
||||
</Component>
|
||||
<Component Id="EntityFrameworkSqlDll">
|
||||
<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>
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
|
||||
Reference in New Issue
Block a user