updfate 20250919
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user