133 lines
5.1 KiB
C#
133 lines
5.1 KiB
C#
|
|
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
|
|||
|
|
}
|
|||
|
|
}
|