update 20251210
This commit is contained in:
@@ -87,6 +87,7 @@ namespace Versandstrasse
|
||||
|
||||
public void writelog(string inhalt)
|
||||
{
|
||||
// inhalt = DateTime.Now + " / " + inhalt;
|
||||
//System.IO.File.AppendAllText(@"h:\edoka_work\vs.log", Environment.NewLine + inhalt);
|
||||
}
|
||||
|
||||
@@ -97,6 +98,7 @@ namespace Versandstrasse
|
||||
if (loadedDocument.Pages.Count % 2 == 0) { } else { Add_EmptyPage(ref loadedDocument); }
|
||||
MemoryStream outputStream = new MemoryStream();
|
||||
string dok = "";
|
||||
|
||||
try
|
||||
{
|
||||
loadedDocument.Save(outputStream);
|
||||
@@ -117,15 +119,18 @@ namespace Versandstrasse
|
||||
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)
|
||||
{
|
||||
try
|
||||
{
|
||||
writelog("Start");
|
||||
Lic();
|
||||
this.resturi = resturi;
|
||||
this.apikey = apikey;
|
||||
clsdok dok = new clsdok("", "", "", "");
|
||||
writelog("Start");
|
||||
|
||||
|
||||
if (sbsourcedok != "")
|
||||
{
|
||||
@@ -206,24 +211,31 @@ namespace Versandstrasse
|
||||
|
||||
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)
|
||||
{
|
||||
writelog("DrawCouvert Start");
|
||||
drawcouvert(ref loadedDocument);
|
||||
writelog("DrawCouvert Ende");
|
||||
}
|
||||
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);
|
||||
writelog("Replace Start " + tr.TextToReplace);
|
||||
Replace_Text(ref loadedDocument, tr.TextToReplace, tr.NewText, tr.Fontname, tr.Fontsize, startuppath,tr);
|
||||
writelog("Replace Ende");
|
||||
}
|
||||
}
|
||||
//loadedDocument.Save(@"x:\r1.pdf");
|
||||
@@ -233,27 +245,11 @@ namespace Versandstrasse
|
||||
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();
|
||||
@@ -266,6 +262,7 @@ namespace Versandstrasse
|
||||
}
|
||||
|
||||
}
|
||||
writelog("Merge Start");
|
||||
if (vscript.dokuments.Count > 1)
|
||||
{
|
||||
int i = 0;
|
||||
@@ -283,40 +280,16 @@ namespace Versandstrasse
|
||||
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)
|
||||
//{
|
||||
// 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();
|
||||
@@ -333,7 +306,7 @@ namespace Versandstrasse
|
||||
vscript.FinalDoc = vscript.dokuments[0].pdfdokument.ToString();
|
||||
}
|
||||
|
||||
|
||||
writelog("Merge Ende");
|
||||
return vscript.FinalDoc;
|
||||
}
|
||||
catch (Exception ex) { writelog("2" + ex.Message);return ""; }
|
||||
@@ -341,7 +314,8 @@ namespace Versandstrasse
|
||||
|
||||
private void split_doc(ref versandscript vscript, string document)
|
||||
{
|
||||
//SaveBase64ToFile(document, @"x:\f0.pdf");
|
||||
writelog("Split");
|
||||
; //SaveBase64ToFile(document, @"x:\f0.pdf");
|
||||
vscript.dokuments[0].sourcedokument = document;
|
||||
vsdokument vsd = vscript.dokuments[0];
|
||||
var stream = new MemoryStream(Convert.FromBase64String(vscript.dokuments[0].sourcedokument));
|
||||
@@ -392,6 +366,7 @@ namespace Versandstrasse
|
||||
//if (vsd.LogoHeigth == 0) { vsd.LogoHeigth = height; }
|
||||
//if (vsd.LogoWidth == 0) { vsd.LogoWidth = width; }
|
||||
//vsd.sourcedokument = dokument;
|
||||
writelog("Copies");
|
||||
if (vscript.dokuments[0].sourcedokument == "") { vscript.dokuments[0].sourcedokument = dokument; }
|
||||
int i = 1;
|
||||
List<String> copyparts = vscript.PartCopies.Split(';').ToList();
|
||||
@@ -419,14 +394,14 @@ namespace Versandstrasse
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private PdfUsedFont get_fontname(ref PdfLoadedDocument document)
|
||||
private PdfUsedFont get_fontname(ref PdfLoadedDocument document, string fontname)
|
||||
{
|
||||
PdfUsedFont[] usedFonts = document.UsedFonts;
|
||||
|
||||
// Iterate through the fonts and check if they are embedded
|
||||
foreach (PdfUsedFont font in usedFonts)
|
||||
{
|
||||
if (font.Name.Contains("Futura")) { return font; }
|
||||
if (font.Name.Contains(fontname)) { return font; }
|
||||
|
||||
//if (font.Type == PdfFontType.TrueType)
|
||||
//{
|
||||
@@ -442,68 +417,43 @@ namespace Versandstrasse
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private void Replace_Text(ref PdfLoadedDocument document, string texttoreplace, string newtext, string fontname, string fontsize, string startuppath)
|
||||
private void Replace_Text(ref PdfLoadedDocument document, string texttoreplace, string newtext, string fontname, string fontsize, string startuppath, TextReplace tr)
|
||||
{
|
||||
|
||||
//string imagefile = "";
|
||||
//string texttol = newtext.Trim().Replace(" ", "_");
|
||||
//texttol = texttol + ".jpg";
|
||||
//imagefile = startuppath + @"\images\"+texttol;
|
||||
//PdfBitmap image;
|
||||
//if (System.IO.File.Exists(imagefile))
|
||||
//{
|
||||
// System.Drawing.Image img = System.Drawing.Image.FromFile(imagefile);
|
||||
// img = ResizeImage(img, new Size(86, 12));
|
||||
// image = new PdfBitmap(img);
|
||||
|
||||
// PdfLoadedPage loadedPage = document.Pages[0] as PdfLoadedPage;
|
||||
// Dictionary<int, List<RectangleF>> matchedTextbounds = new Dictionary<int, List<RectangleF>>();
|
||||
// document.FindText(texttoreplace, out matchedTextbounds);
|
||||
|
||||
// List<RectangleF> imachedrect = new List<RectangleF>();
|
||||
// int ipageindex = 0;
|
||||
|
||||
// for (int i = 0; i < document.Pages.Count; i++)
|
||||
// {
|
||||
// document.FindText(texttoreplace, ipageindex, out imachedrect);
|
||||
// loadedPage = (PdfLoadedPage)document.Pages[i];
|
||||
// foreach (RectangleF rectangle in matchedTextbounds[i])
|
||||
// {
|
||||
|
||||
// RectangleF rect = rectangle;
|
||||
// rect.X = rect.X - 5;
|
||||
// rect.Y = rect.Y - 5;
|
||||
// rect.Height = rect.Height + 5;
|
||||
// loadedPage.Graphics.DrawRectangle(PdfBrushes.White, rectangle);
|
||||
// loadedPage.Graphics.DrawRectangle(PdfBrushes.White, rect);
|
||||
// PdfGraphics graphics = loadedPage.Graphics;
|
||||
|
||||
// graphics.DrawImage(image, rect.X, rect.Y);
|
||||
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
|
||||
|
||||
PdfLoadedPage loadedPage = document.Pages[0] as PdfLoadedPage;
|
||||
|
||||
//Dimenssions
|
||||
int x = -5;
|
||||
int y = -5;
|
||||
int w = 0;
|
||||
int h = 5;
|
||||
if (tr.Boxpos_X != "") { x=Convert.ToInt32(tr.Boxpos_X); }
|
||||
if (tr.Boxpos_Y != "") { y=Convert.ToInt32(tr.Boxpos_Y); }
|
||||
if (tr.Boxpos_W != "") { w=Convert.ToInt32(tr.Boxpos_W); }
|
||||
if (tr.Boxpos_H != "") { h=Convert.ToInt32(tr.Boxpos_H); }
|
||||
//Font und Size
|
||||
string fname = "Futura";
|
||||
string fsize = "8";
|
||||
if (fontname != "")
|
||||
{
|
||||
fname = fontname;
|
||||
fsize = fontsize;
|
||||
}
|
||||
|
||||
PdfUsedFont usedfont = get_fontname(ref document);
|
||||
if (tr.Fontname != "") { fname = tr.Fontname; }
|
||||
if (tr.Fontsize != "") { fsize = tr.Fontsize; }
|
||||
|
||||
// PdfUsedFont usedfont = get_fontname(ref document, fname);
|
||||
PdfFont font = new PdfTrueTypeFont(new Font(fname, Convert.ToInt32(fsize)));
|
||||
//PdfFont fnt = new PdfStandardFont(PdfFontFamily.TimesRoman, 8);
|
||||
Dictionary<int, List<RectangleF>> matchedTextbounds = new Dictionary<int, List<RectangleF>>();
|
||||
document.FindText(texttoreplace, out matchedTextbounds);
|
||||
|
||||
|
||||
PdfSolidBrush brush = new PdfSolidBrush(Color.White);
|
||||
try
|
||||
{
|
||||
if (tr.BGColor != "")
|
||||
{
|
||||
brush = new PdfSolidBrush(Color.FromName(tr.BGColor));
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
List<RectangleF> machedrect = new List<RectangleF>();
|
||||
int pageindex = 0;
|
||||
|
||||
@@ -515,11 +465,13 @@ namespace Versandstrasse
|
||||
{
|
||||
|
||||
RectangleF rect = rectangle;
|
||||
rect.X = rect.X - 5;
|
||||
rect.Y = rect.Y - 5;
|
||||
rect.Height = rect.Height + 5;
|
||||
|
||||
rect.X = rect.X + x;
|
||||
rect.Y = rect.Y + y;
|
||||
rect.Width = rect.Width + w;
|
||||
rect.Height = rect.Height + h;
|
||||
loadedPage.Graphics.DrawRectangle(PdfBrushes.White, rectangle);
|
||||
loadedPage.Graphics.DrawRectangle(PdfBrushes.White, rect);
|
||||
loadedPage.Graphics.DrawRectangle(brush, rect);
|
||||
loadedPage.Graphics.DrawString(newtext, font, PdfBrushes.Black, rectangle.X - 2, rectangle.Y - 3);
|
||||
//if (newtext != "")
|
||||
//{
|
||||
@@ -816,5 +768,10 @@ namespace Versandstrasse
|
||||
|
||||
public string Fontname { get; set; } = "";
|
||||
public string Fontsize { get; set; } = "";
|
||||
public string BGColor { get; set; } = "";
|
||||
public string Boxpos_X { get; set; } = "";
|
||||
public string Boxpos_Y { get; set; } = "";
|
||||
public string Boxpos_W { get; set; } = "";
|
||||
public string Boxpos_H { get; set; } = "";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user