This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,191 @@
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using FastReport;
namespace Kreta.BusinessLogic.Classes
{
public enum PrintReportStatus
{
Sikeres,
Hibas,
NincsTemplate
}
public static class SDAPrintReport
{
//public static byte[] PrintDataTableReport(Kreta.Enums.FormTypeEnum FormType, DataTable tblData, out PrintReportStatus status)
//{
// string strReport = "";
// byte[] strRetVal = null;
// FastReport.Report report = new Report();
// status = PrintReportStatus.Hibas;
// //Nyomtatási template-k betöltése
// Kreta.Framework.Caching.TemplateCache cache = SDAServer.Instance.CacheManager.AquireCache<Kreta.Framework.Caching.TemplateCache>();
// Dictionary<int, string> frTemplates = null;
// //Amennyiben nem volt template
// if (frTemplates.Count > 0)
// {
// foreach (int TemplateId in frTemplates.Keys)
// {
// strReport = cache.GetTemplate(TemplateId);
// }
// if (!string.IsNullOrWhiteSpace(strReport))
// {
// byte[] myByte = System.Text.Encoding.Default.GetBytes(strReport);
// System.IO.MemoryStream myStream = new System.IO.MemoryStream(myByte);
// report.Load(myStream);
// report.RegisterData(tblData, tblData.TableName);
// strRetVal = ExportFR3ToPDF(report);
// status = PrintReportStatus.Sikeres;
// }
// }
// else
// {
// status = PrintReportStatus.NincsTemplate;
// }
// return strRetVal;
//}
private static void GeneratePrintData(Report report, DataTable tblData)
{
report.RegisterData(tblData, tblData.TableName);
report.Prepare(true);
}
private static string ExportFR3ToHTML(Report report)
{
report.ReportInfo.Author = "Kréta.NET Egységes Tanulmányi Rendszer";
report.PrintSettings.ShowDialog = false;
FastReport.Export.Html.HTMLExport export = new FastReport.Export.Html.HTMLExport();
export.ShowProgress = false;
System.IO.MemoryStream ms = new System.IO.MemoryStream();
StringBuilder build = new StringBuilder();
export.Export(report, ms);
ms.Position = 0;
ms.Seek(0, SeekOrigin.Begin);
StreamReader rd = new StreamReader(ms);
char[] bytes = new char[ms.Length];
rd.ReadBlock(bytes, 0, (int)ms.Length);
StringBuilder sb = new StringBuilder();
sb.EnsureCapacity((int)ms.Length);
sb.Append(bytes);
return sb.ToString();
}
/// <summary>
/// Elkészült FR exportálása PDF formátumba
/// </summary>
/// <param name="report">ReportClass, amiből PDF -et szeretnénk készíteni</param>
/// <returns></returns>
public static byte[] ExportFR3ToPDF(Report report)
{
report.Prepare(true);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport();
export.ShowProgress = false;
export.EmbeddingFonts = true;
report.ReportInfo.Author = "Kréta.NET Egységes Tanulmányi Rendszer";
report.PrintSettings.ShowDialog = false;
export.Export(report, ms);
ms.Position = 0;
return ms.ToArray();
}
/// <summary>
/// Leellenőrzi, hogy a paraméterül kapott templateben lévő összes hivatkozás szerepel-e az adattábla oszlopai között
/// </summary>
/// <param name="template"></param>
/// <param name="table"></param>
/// <returns>Ha volt eltérés, akkor azok a hivatkozások, amellyek az adattáblában nem szerepelnek, de a templateben igen</returns>
public static string CheckTableColumnNamesAndReportDatas(string template, DataTable table)
{
string tmp = template;
List<string> templatebenhivatkozasok = new List<string>();
// Fejlécben lévő hivatkozások kiszedése
int oeleje = tmp.IndexOf("<Column"); // oszlop elem kiszedése xml-ből (eleje)
int ovege = tmp.IndexOf("/>", oeleje); // oszlop elem kiszedése xml-ből (vége)
int neleje = -1; // a fejlcében lévő hivatkozások Name tagnak az eleje
int nvege = -1; // a fejlcében lévő hivatkozások Name tagnak a vége
string seged = "";
while (oeleje > -1)
{
ovege = tmp.IndexOf("/>", oeleje);
seged = tmp.Substring(oeleje, ovege - oeleje + 2);
tmp = tmp.Remove(0, ovege + 2);
neleje = seged.IndexOf("Name=");
if (neleje > -1)
{
nvege = seged.IndexOf('"', neleje + 7);
templatebenhivatkozasok.Add(seged.Substring(neleje + 6, nvege - (neleje + 6)).ToUpper());
}
oeleje = tmp.IndexOf("<Column");
}
// Törzsben lévő hivatkozások kiszedése
oeleje = tmp.IndexOf("<TextObject"); // textobject elem kiszedése xml-ből (eleje)
ovege = tmp.IndexOf("/>", oeleje); // tectobjoct elem kiszedése xml-ből (vége)
neleje = -1; // a törzsben lévő hivatkozások Text tagnak az eleje
nvege = -1; // a törzsben lévő hivatkozások Text tagnak a vége
seged = "";
string seged2 = "";
while (oeleje > -1)
{
ovege = tmp.IndexOf("/>", oeleje);
seged = tmp.Substring(oeleje, ovege - oeleje + 2);
tmp = tmp.Remove(0, ovege + 2);
neleje = seged.IndexOf("Text=\"[");
if (neleje > -1)
{
nvege = seged.IndexOf(']', neleje + 8);
seged2 = seged.Substring(neleje + 7, nvege - (neleje + 7));
neleje = seged2.IndexOf('.');
nvege = seged2.Length;
if (neleje > -1)
{
templatebenhivatkozasok.Add(seged2.Substring(neleje + 1, nvege - (neleje + 1)).ToUpper());
}
}
oeleje = tmp.IndexOf("<TextObject");
}
// Az adattáblában lévő oszlopneve
List<string> columnnames = new List<string>();
for (int i = 0; i < table.Columns.Count; i++)
{
columnnames.Add(table.Columns[i].ColumnName.ToUpper());
}
string result = "Az adattáblában lévő oszlopok között nem szerepelnek a következő hivatkozások a reportban: ";
List<string> nemletezooszlophivatkozasok = new List<string>();
foreach (string s in templatebenhivatkozasok)
{
if (!columnnames.Contains(s))
{
nemletezooszlophivatkozasok.Add(s);
}
}
if (nemletezooszlophivatkozasok.Count == 0)
{
result = "";
}
else
{
result += string.Join(",", nemletezooszlophivatkozasok);
}
return result;
}
}
}