133 lines
5.1 KiB
C#
Raw Normal View History

2025-01-02 12:15:45 +08:00
using CG.Framework;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Runtime.InteropServices;
using UnityEngine;
/*******************************************************************************
*Create By CG
*Function
*******************************************************************************/
namespace CG.UTility
{
public class PDFGreadeManager : ClassSingleton<PDFGreadeManager>
{
#region PDF<EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD><EFBFBD>_PC
/// <summary>
/// <20><><EFBFBD>ݳɼ<DDB3><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD>ӦPDF<44>ļ<EFBFBD>
/// </summary>
/// <param name="filePath"><3E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="modelName"><3E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]</param>
/// <param name="gradeInfo"><3E><><EFBFBD>гɼ<D0B3><C9BC><EFBFBD>Ϣ[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳɼ<DCB3><C9BC><EFBFBD>ʵ<EFBFBD>ʳɼ<CAB3>]</param>
/// <param name="studentName">ѧ<><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="studentNumber">ѧ<><D1A7>ѧ<EFBFBD><D1A7></param>
/// <param name="greateOverCall"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA>¼<EFBFBD></param>
/// <returns></returns>
public void GreatePDFPC(string filePath, string modelName, Queue<string[]> gradeInfo, string studentName, string studentNumber, Action greateOverCall)
{
MonoManager.Instance.StartCoroutine(GreatePDFIterator(filePath
, modelName
, gradeInfo, studentName
, studentNumber
, greateOverCall));
}
public void GreatePDFWeb(string fileName, string modelName, Queue<string[]> gradeInfo, string studentName, string studentNumber)
{
GreatePDF_WebGl(fileName, modelName, gradeInfo, studentName, studentNumber);
}
private IEnumerator GreatePDFIterator(string filePath, string modelName, Queue<string[]> gradeInfo, string studentName, string studentNumber, Action greateOverCall)
{
//<2F><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ݵı<DDB5><C4B1>
string[] Layout = new string[] { "<22><><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>", "<22><><EFBFBD>˵<EFBFBD>", "<22>ܷ<EFBFBD>", <>ʵ÷<CAB5>" };
DataTable dt = new DataTable();
for (int i = 0; i < Layout.Length; i++)
{
dt.Columns.Add(Layout[i]);
}
//<2F><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float totalScore = 0;
float realeScore = 0;
foreach (var item in gradeInfo)
{
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD>
totalScore += float.Parse(item[2]);
realeScore += float.Parse(item[3]);
dt.Rows.Add(item);
}
using (PDFReport pdf = new PDFReport())
{
yield return pdf.Init(filePath);
pdf.AddTitle(modelName, 1);
//<2F><>һ<EFBFBD><D2BB>
pdf.AddNullLine();
pdf.AddTitle("һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ", 0);
pdf.AddNullLine();
//ѧ<><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
pdf.AddContent("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + studentName, 0);
pdf.AddContent(<>ţ<EFBFBD>" + studentNumber, 0);
pdf.AddContent("<22>ܷ֣<DCB7>" + totalScore, 0);
pdf.AddContent(<>ʵ÷֣<C3B7>" + realeScore, 0);
//<2F><>һ<EFBFBD><D2BB>
pdf.AddNullLine();
pdf.AddTitle("<22><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>", 0);
pdf.AddNullLine();
//<2F><><EFBFBD>ӿ<EFBFBD><D3BF>˻<EFBFBD><CBBB>ڱ<EFBFBD><DAB1><EFBFBD>
pdf.AddNullLine();
pdf.addPDFTable(dt);
pdf.AddNullLine();
}
WDebug.Log("<22><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>:" + filePath);
greateOverCall?.Invoke();
}
#endregion
#region PDF<EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD><EFBFBD>_WebGl
[DllImport("__Internal")]
private static extern void LoadTablePDFBtn(string name, string textData);
private void CreatPDF(string name, string textData)
{
LoadTablePDFBtn(name + ".pdf", textData);
}
private void GreatePDF_WebGl(string fileName, string modelName, Queue<string[]> gradeInfo, string studentName, string studentNumber)
{
float totalScore = 0;
float realeScore = 0;
foreach (var item in gradeInfo)
{
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD>
totalScore += float.Parse(item[2]);
realeScore += float.Parse(item[3]);
}
string[] studentInfo = new string[] { "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + studentName, <>ţ<EFBFBD>" + studentNumber, "<22>ܷ֣<DCB7>" + totalScore, <>ʵ÷֣<C3B7>" + realeScore };
string[] Layout = new string[] { "<22><><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>", "<22><><EFBFBD>˵<EFBFBD>", "<22>ܷ<EFBFBD>", <>ʵ÷<CAB5>" };
string[][] tableData = new string[gradeInfo.Count+1][];
tableData[0] = new string[] { modelName, modelName, modelName, modelName };
tableData[1] = new string[] { "һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ", "һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ", "һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ", "һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ" };
tableData[2] = studentInfo;
tableData[3] = new string[] { "<22><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>" };
tableData[4] = Layout;
for (int i = 5; i < tableData.Length; i++)
{
tableData[i] = gradeInfo.Dequeue();
}
string json = LitJson.JsonMapper.ToJson(tableData);
WDebug.Log(json);
CreatPDF(fileName, json);
}
#endregion
}
}