updfate 20250919

This commit is contained in:
Stefan Hutter
2025-09-19 14:20:47 +02:00
parent 98dc8ed0cb
commit d81d620468
2488 changed files with 1833953 additions and 103283 deletions

View File

@@ -13,6 +13,7 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Remoting.Messaging;
using System.Security;
using System.Security.Policy;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;
@@ -44,7 +45,28 @@ namespace Versandstrasse
}
}
public string save_stapel(ref Stream[] streams, int MaxSize)
{
try
{
Lic();
PdfDocument finalDoc = new PdfDocument();
PdfDocumentBase.Merge(finalDoc, streams);
MemoryStream outputStream = new MemoryStream();
finalDoc.Save(outputStream);
var size = outputStream.ToArray().Length;
byte[] bytes;
bytes = outputStream.ToArray();
if (size > MaxSize)
{
return "File too large";
}
return Convert.ToBase64String(bytes);
}
catch { return ""; }
}
private List<PdfLoadedDocument> loadedDocuments = new List<PdfLoadedDocument>();
public void Lic()
{
@@ -63,116 +85,213 @@ namespace Versandstrasse
string resturi = "";
string apikey = "";
public void writelog(string inhalt)
{
//System.IO.File.AppendAllText(@"h:\edoka_work\vs.log", Environment.NewLine + inhalt);
}
public string check_pdf_pages(string dokument)
{
var stream = new MemoryStream(Convert.FromBase64String(dokument));
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream);
if (loadedDocument.Pages.Count % 2 == 0) { } else { Add_EmptyPage(ref loadedDocument); }
MemoryStream outputStream = new MemoryStream();
string dok = "";
try
{
loadedDocument.Save(outputStream);
byte[] bytes;
bytes = outputStream.ToArray();
dok = Convert.ToBase64String(bytes);
return dok;
}
catch
{
dok = "";
return dok;
}
finally
{
stream = null;
loadedDocument = null;
outputStream = null;
}
}
public string Prepare_PDF(string dokumentid, string tempdir, string connectionstring, string resturi, string apikey, string startuppath, versandscript vs = null, serienbrief sb = null, string sbsourcedok = "", bool couvertpos = false)
{
Lic();
this.resturi = resturi;
this.apikey = apikey;
clsdok dok = new clsdok("", "", "", "");
if (sbsourcedok != "")
try
{
dok.dokument = sbsourcedok;
}
else
{
OnDocOffice.OfficeToPDF officeToPDF = new OnDocOffice.OfficeToPDF();
dok.dokument = officeToPDF.word_to_pdf(dokumentid, connectionstring, tempdir);
}
//var stream = new MemoryStream(Convert.FromBase64String(dok.dokument));
Lic();
this.resturi = resturi;
this.apikey = apikey;
clsdok dok = new clsdok("", "", "", "");
writelog("Start");
////Originalfile laden
//PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream);
Database.DB db = new Database.DB(connectionstring);
db.clear_parameter();
db.add_parameter("@dokumentid", dokumentid);
if (sb != null)
{
db.add_parameter("@doktyp", sb.dokumenttypnr.ToString());
}
db.Get_Tabledata("ondoc_get_versandstrasse_parameter", true, false);
versandscript vscript = new versandscript();
logo = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0]["logo"]);
color = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0]["logocolor"]);
top = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["logotop"]);
left = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["logoleft"]);
height = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["logoheight"]);
width = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["logowidth"]);
pages = db.dsdaten.Tables[0].Rows[0]["pages"].ToString();
xml = db.dsdaten.Tables[0].Rows[0]["vscript"].ToString();
if (xml != "")
{
XmlSerializer serializer = new XmlSerializer(typeof(versandscript));
using (StringReader reader = new StringReader(xml))
if (sbsourcedok != "")
{
vscript = (versandscript)(serializer.Deserialize(reader));
dok.dokument = sbsourcedok;
}
foreach (vsdokument vsd in vscript.dokuments)
else
{
OnDocOffice.OfficeToPDF officeToPDF = new OnDocOffice.OfficeToPDF();
dok.dokument = officeToPDF.word_to_pdf(dokumentid, connectionstring, tempdir);
}
writelog("Nach OfficeToPDF");
//var stream = new MemoryStream(Convert.FromBase64String(dok.dokument));
////Originalfile laden
//PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream);
Database.DB db = new Database.DB(connectionstring);
db.clear_parameter();
db.add_parameter("@dokumentid", dokumentid);
if (sb != null)
{
db.add_parameter("@doktyp", sb.dokumenttypnr.ToString());
}
db.Get_Tabledata("ondoc_get_versandstrasse_parameter", true, false);
versandscript vscript = new versandscript();
logo = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0]["logo"]);
color = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0]["logocolor"]);
top = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["logotop"]);
left = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["logoleft"]);
height = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["logoheight"]);
width = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["logowidth"]);
pages = db.dsdaten.Tables[0].Rows[0]["pages"].ToString();
xml = db.dsdaten.Tables[0].Rows[0]["vscript"].ToString();
if (xml != "")
{
}
if (vscript.Split_Doc != "")
{
split_doc(ref vscript, dok.dokument);
}
if (vscript.PartCopies != "")
{
create_copies(ref vscript, dok.dokument);
}
}
else
{
vsdokument d = new vsdokument();
d.LogoTop = top;
d.LogoLeft = left;
d.LogoHeigth = height;
d.LogoWidth = width;
d.LogoColor = color;
d.Logo = logo;
d.LogoOnPages = pages;
d.sourcedokument = dok.dokument;
vscript.dokuments.Add(d);
}
foreach (vsdokument vdok in vscript.dokuments)
{
var stream = new MemoryStream(Convert.FromBase64String(vdok.sourcedokument));
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream);
if (vdok.Logo)
{
Add_Logo(ref loadedDocument, vdok.LogoColor, vdok.LogoLeft, vdok.LogoTop, vdok.LogoWidth, vdok.LogoHeigth, vdok.LogoOnPages, this.resturi, this.apikey, startuppath);
}
if (couvertpos)
{
drawcouvert(ref loadedDocument);
}
if (vdok.TextReplaces.Count > 0)
{
foreach (TextReplace tr in vdok.TextReplaces)
XmlSerializer serializer = new XmlSerializer(typeof(versandscript));
using (StringReader reader = new StringReader(xml))
{
if (tr.TextToReplace.Trim() != "")
{
Replace_Text(ref loadedDocument, tr.TextToReplace, tr.NewText, tr.Fontname, tr.Fontsize, startuppath);
}
vscript = (versandscript)(serializer.Deserialize(reader));
}
//loadedDocument.Save(@"x:\r1.pdf");
}
if (loadedDocument.Pages.Count % 2 == 0) { } else { Add_EmptyPage(ref loadedDocument); }
foreach (vsdokument vsd in vscript.dokuments)
{
MemoryStream outputStream = new MemoryStream();
try
}
if (vscript.Split_Doc != "")
{
writelog("Split");
split_doc(ref vscript, dok.dokument);
}
if (vscript.PartCopies != "")
{
writelog("Copies");
create_copies(ref vscript, dok.dokument);
}
}
else
{
vsdokument d = new vsdokument();
d.LogoTop = top;
d.LogoLeft = left;
d.LogoHeigth = height;
d.LogoWidth = width;
d.LogoColor = color;
d.Logo = logo;
d.LogoOnPages = pages;
d.sourcedokument = dok.dokument;
vscript.dokuments.Add(d);
}
foreach (vsdokument vdok in vscript.dokuments)
{
var stream = new MemoryStream(Convert.FromBase64String(vdok.sourcedokument));
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream);
if (vdok.Logo)
{
Add_Logo(ref loadedDocument, vdok.LogoColor, vdok.LogoLeft, vdok.LogoTop, vdok.LogoWidth, vdok.LogoHeigth, vdok.LogoOnPages, this.resturi, this.apikey, startuppath);
}
if (couvertpos)
{
drawcouvert(ref loadedDocument);
}
if (vdok.TextReplaces.Count > 0)
{
foreach (TextReplace tr in vdok.TextReplaces)
{
if (tr.TextToReplace.Trim() != "")
{
Replace_Text(ref loadedDocument, tr.TextToReplace, tr.NewText, tr.Fontname, tr.Fontsize, startuppath);
}
}
//loadedDocument.Save(@"x:\r1.pdf");
}
if (loadedDocument.Pages.Count % 2 == 0) { } else { Add_EmptyPage(ref loadedDocument); }
MemoryStream outputStream = new MemoryStream();
try
{
//db.Get_Tabledata("Select * from Ondoc_PDF_CompressionOptions where aktiv=1", false, true);
//if (db.dsdaten.Tables[0].Rows.Count > 0)
//{
// PdfCompressionOptions options = new PdfCompressionOptions();
// options.CompressImages = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][2]);
// options.ImageQuality = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][3]);
// options.OptimizeFont = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][4]);
// options.OptimizePageContents = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][5]);
// options.RemoveMetadata = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][6]);
// loadedDocument.CompressionOptions = options;
//}
loadedDocument.Save(outputStream);
//outputStream.Position = 0;
//outputStream.WriteTo(filestream);
//loadedDocument.Close(true);
//loadedDocument = new PdfLoadedDocument(filename);
//loadedDocument.ConvertToPDFA(PdfConformanceLevel.Pdf_A1B);
//loadedDocument.Save(outputStream);
//filestream.Close();
byte[] bytes;
bytes = outputStream.ToArray();
vdok.pdfdokument = Convert.ToBase64String(bytes);
}
catch (Exception ex)
{
writelog(ex.Message);
}
}
if (vscript.dokuments.Count > 1)
{
int i = 0;
Stream[] streams = new Stream[vscript.dokuments.Count];
foreach (vsdokument vdoc in vscript.dokuments)
{
var stream = new MemoryStream(Convert.FromBase64String(vdoc.pdfdokument));
streams[i] = stream;
i++;
}
PdfDocument finalDoc = new PdfDocument();
PdfDocumentBase.Merge(finalDoc, streams);
MemoryStream outputStream = new MemoryStream();
string filename = tempdir + Guid.NewGuid().ToString() + ".pdf";
//FileStream filestream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
//finalDoc.Save(filestream,;
finalDoc.Save(outputStream);
//filestream.Close();
PdfLoadedDocument loadeddoc = new PdfLoadedDocument(outputStream);
//db.Get_Tabledata("Select * from Ondoc_PDF_CompressionOptions where aktiv=1", false, true);
//if (db.dsdaten.Tables[0].Rows.Count > 0)
//{
@@ -182,97 +301,42 @@ namespace Versandstrasse
// options.OptimizeFont = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][4]);
// options.OptimizePageContents = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][5]);
// options.RemoveMetadata = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][6]);
// loadedDocument.CompressionOptions = options;
// loadeddoc.CompressionOptions = options;
//}
loadedDocument.Save(outputStream);
loadeddoc.ConvertToPDFA(PdfConformanceLevel.Pdf_A1B);
//outputStream.Position = 0;
//outputStream.WriteTo(filestream);
//loadedDocument.Close(true);
loadeddoc.Save(outputStream);
//System.IO.File.Delete(filename);
//loadedDocument = new PdfLoadedDocument(filename);
//loadedDocument.ConvertToPDFA(PdfConformanceLevel.Pdf_A1B);
//loadedDocument.Save(outputStream);
//filestream.Close();
//finalDoc.Save(outputStream);
byte[] bytes;
bytes = outputStream.ToArray();
vdok.pdfdokument = Convert.ToBase64String(bytes);
dok.dokument = Convert.ToBase64String(bytes);
vscript.FinalDoc = Convert.ToBase64String(bytes);
finalDoc.Close();
finalDoc.Dispose();
streams = null;
vscript.FinalDoc = vscript.FinalDoc;
outputStream = null;
}
catch
else
{
vscript.FinalDoc = vscript.dokuments[0].pdfdokument.ToString();
}
return vscript.FinalDoc;
}
if (vscript.dokuments.Count > 1)
{
int i = 0;
Stream[] streams = new Stream[vscript.dokuments.Count];
foreach (vsdokument vdoc in vscript.dokuments)
{
var stream = new MemoryStream(Convert.FromBase64String(vdoc.pdfdokument));
streams[i] = stream;
i++;
}
PdfDocument finalDoc = new PdfDocument();
PdfDocumentBase.Merge(finalDoc, streams);
MemoryStream outputStream = new MemoryStream();
string filename = tempdir + Guid.NewGuid().ToString() + ".pdf";
//FileStream filestream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
//finalDoc.Save(filestream,;
finalDoc.Save(filename);
//filestream.Close();
PdfLoadedDocument loadeddoc = new PdfLoadedDocument(filename);
//db.Get_Tabledata("Select * from Ondoc_PDF_CompressionOptions where aktiv=1", false, true);
//if (db.dsdaten.Tables[0].Rows.Count > 0)
//{
// PdfCompressionOptions options = new PdfCompressionOptions();
// options.CompressImages = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][2]);
// options.ImageQuality = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][3]);
// options.OptimizeFont = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][4]);
// options.OptimizePageContents = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][5]);
// options.RemoveMetadata = Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][6]);
// loadeddoc.CompressionOptions = options;
//}
loadeddoc.ConvertToPDFA(PdfConformanceLevel.Pdf_A1B);
loadeddoc.Save(outputStream);
System.IO.File.Delete(filename);
//loadedDocument = new PdfLoadedDocument(filename);
//loadedDocument.ConvertToPDFA(PdfConformanceLevel.Pdf_A1B);
//loadedDocument.Save(outputStream);
//finalDoc.Save(outputStream);
byte[] bytes;
bytes = outputStream.ToArray();
dok.dokument = Convert.ToBase64String(bytes);
vscript.FinalDoc = Convert.ToBase64String(bytes);
finalDoc.Close();
finalDoc.Dispose();
streams = null;
vscript.FinalDoc = vscript.FinalDoc;
}
else
{
vscript.FinalDoc = vscript.dokuments[0].pdfdokument.ToString();
}
return vscript.FinalDoc;
catch (Exception ex) { writelog("2" + ex.Message);return ""; }
}
private void split_doc(ref versandscript vscript, string document)