You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
273 lines
7.8 KiB
273 lines
7.8 KiB
using Database;
|
|
using Syncfusion.DocIO.DLS;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Syncfusion.DocIO;
|
|
using Syncfusion.DocIO.DLS;
|
|
using Syncfusion.Pdf;
|
|
using Syncfusion.XlsIO;
|
|
using static System.Net.Mime.MediaTypeNames;
|
|
using Syncfusion.Pdf.Parsing;
|
|
using System.Xml.Linq;
|
|
using Model;
|
|
using SkiaSharp;
|
|
using System.Web;
|
|
using System.Net;
|
|
using System.Security.Policy;
|
|
using DOCGEN.Klassen;
|
|
|
|
|
|
namespace DOCGEN
|
|
{
|
|
public class DocGet
|
|
{
|
|
private string connectionstring = "";
|
|
private string URI = "https://localhost:44334/";
|
|
|
|
public DocGet(string Connectionstring)
|
|
{
|
|
this.connectionstring = Connectionstring;
|
|
Lic();
|
|
}
|
|
|
|
public void Lic()
|
|
{
|
|
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("Ngo9BigBOggjHTQxAR8/V1NBaF5cXmZCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdnWXxccXVWR2VdUUZ3VkM=");
|
|
|
|
}
|
|
public string test_filetype(string filename)
|
|
{
|
|
string b64 = ConvertFileToBase64(filename);
|
|
var streamword = new MemoryStream(Convert.FromBase64String(b64));
|
|
var streamexcel = new MemoryStream(Convert.FromBase64String(b64));
|
|
|
|
try
|
|
{
|
|
if (Is_WordDocument(streamword) == true)
|
|
{
|
|
return "Word";
|
|
}
|
|
if (Is_ExcelDocument(streamexcel) == true)
|
|
{
|
|
return "Excel";
|
|
}
|
|
if (Is_PDFDocument(b64))
|
|
{
|
|
return "PDF";
|
|
}
|
|
}
|
|
catch {
|
|
return "";
|
|
}
|
|
finally {
|
|
streamword.Dispose();
|
|
streamexcel.Dispose();
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public string Get_FileType(string b64)
|
|
{
|
|
var streamword = new MemoryStream(Convert.FromBase64String(b64));
|
|
var streamexcel = new MemoryStream(Convert.FromBase64String(b64));
|
|
|
|
try
|
|
{
|
|
if (Is_WordDocument(streamword) == true)
|
|
{
|
|
return "W";
|
|
}
|
|
if (Is_ExcelDocument(streamexcel) == true)
|
|
{
|
|
return "X";
|
|
}
|
|
if (Is_PDFDocument(b64))
|
|
{
|
|
return "P";
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
return "";
|
|
}
|
|
finally
|
|
{
|
|
streamword.Dispose();
|
|
streamexcel.Dispose();
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public clsdok GetDocAsPDF(string Docid)
|
|
{
|
|
clsdok dok = GetDoc(Docid);
|
|
try
|
|
{
|
|
switch (dok.doktype.ToUpper().Substring(0,1))
|
|
{
|
|
case "D":
|
|
dok.dokument = Convert_Word_To_PDF(dok.dokument.ToString());
|
|
return dok;
|
|
break;
|
|
case "X":
|
|
|
|
dok.dokument = Convert_Excel_To_PDF(dok.dokument.ToString());
|
|
return dok;
|
|
break;
|
|
case "P":
|
|
return dok;
|
|
break;
|
|
default:
|
|
return dok;
|
|
}
|
|
}
|
|
catch {
|
|
return dok;
|
|
}
|
|
return dok;
|
|
}
|
|
public clsdok GetDoc(string Docid)
|
|
{
|
|
//if (URI !="")
|
|
//{
|
|
// HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI+ "api/GetDocument?dokid=" + Docid);
|
|
// request.Method = "GET";
|
|
// WebResponse response = (WebResponse)request.GetResponse();
|
|
|
|
//}
|
|
DB db = new DB(connectionstring);
|
|
clsdok dok = new clsdok("","","");
|
|
dok = db.GetDocumentAsBase64(Docid);
|
|
|
|
if (dok.doktype=="")
|
|
{
|
|
dok.doktype = Get_FileType(dok.dokument);
|
|
}
|
|
|
|
return dok;
|
|
|
|
}
|
|
|
|
public string ConvertFileToBase64(string fileName)
|
|
{
|
|
string ReturnValue = "";
|
|
|
|
|
|
using (FileStream BinaryFile = new FileStream(fileName, FileMode.Open))
|
|
{
|
|
BinaryReader BinRead = new BinaryReader(BinaryFile);
|
|
byte[] BinBytes = BinRead.ReadBytes(System.Convert.ToInt32(BinaryFile.Length));
|
|
ReturnValue = Convert.ToBase64String(BinBytes);
|
|
BinaryFile.Close();
|
|
}
|
|
|
|
return ReturnValue;
|
|
}
|
|
|
|
private bool Is_WordDocument(MemoryStream stream)
|
|
{
|
|
Syncfusion.DocIO.DLS.WordDocument WordDocument = new Syncfusion.DocIO.DLS.WordDocument();
|
|
try
|
|
{
|
|
WordDocument.Open(stream,FormatType.Automatic);
|
|
string type = "";
|
|
type = WordDocument.ActualFormatType.ToString();
|
|
return true;
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
WordDocument.Dispose();
|
|
WordDocument=null;
|
|
}
|
|
}
|
|
|
|
private bool Is_ExcelDocument(MemoryStream stream)
|
|
{
|
|
ExcelEngine excelEngine = new ExcelEngine();
|
|
IApplication application = excelEngine.Excel;
|
|
//IWorkbook workbook = application.Workbooks.Open(stream);
|
|
IWorkbook workbook;
|
|
try
|
|
{
|
|
string type = "";
|
|
workbook = application.Workbooks.Open(stream);
|
|
type = workbook.Version.ToString();
|
|
|
|
return true;
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
excelEngine.Dispose();
|
|
workbook = null;
|
|
application = null;
|
|
excelEngine = null;
|
|
}
|
|
}
|
|
|
|
private bool Is_PDFDocument(string b64)
|
|
{
|
|
PdfLoadedDocument LoadedDocument;
|
|
try
|
|
{
|
|
LoadedDocument = new PdfLoadedDocument(Helper.EncodeExtensions.DecodeBase642ByteArray(b64));
|
|
|
|
return true;
|
|
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
LoadedDocument = null;
|
|
}
|
|
}
|
|
|
|
public string Convert_Word_To_PDF(string document)
|
|
{
|
|
var streamword = new MemoryStream(Convert.FromBase64String(document));
|
|
WordDocument wordDocument = new WordDocument(streamword, Syncfusion.DocIO.FormatType.Automatic);
|
|
using (Syncfusion.DocToPDFConverter.DocToPDFConverter converter = new Syncfusion.DocToPDFConverter.DocToPDFConverter())
|
|
{
|
|
converter.Settings.EmbedFonts = true;
|
|
//Converts Word document into PDF document
|
|
using (PdfDocument pdfDocument = converter.ConvertToPDF(wordDocument))
|
|
{
|
|
MemoryStream outputStream = new MemoryStream();
|
|
pdfDocument.Save(outputStream);
|
|
byte[] bytes;
|
|
bytes = outputStream.ToArray();
|
|
return Convert.ToBase64String(bytes);
|
|
}
|
|
};
|
|
}
|
|
private string Convert_Excel_To_PDF(string document)
|
|
{
|
|
return "";
|
|
}
|
|
|
|
public void Print_Doc(string document)
|
|
{
|
|
SynFWord sfword = new SynFWord();
|
|
sfword.Print_Word(document);
|
|
|
|
}
|
|
}
|
|
|
|
}
|