I can show you my code, but I was hoping you’d show me the correct way to do it. I can fix my code if I have a working example.
using Aspose.Pdf;
using EApp.Services.Properties;
using log4net;
using System;
using System.Globalization;
using System.IO;
using Polly;
using System.Collections;
using Aspose.Pdf.Text;
using Aspose.Pdf.Annotations;
using Aspose.Pdf.Forms;
using EApp.Services.Model;
namespace EApp.Services.Code
{
internal class IllustrationSignatureBoxUtility
{
private static readonly ILog log = LogManager.GetLogger(typeof(IllustrationSignatureBoxUtility));
private static int topOfPage = Settings.Default.PdfTopOfPage;
bool hasSignatureLines;
int page = 0;
SignatureCoordinates signatureCoordinates = new SignatureCoordinates();
public string AddSignatureBoxes(string pdfString, string pdfId)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"AddSignatureBoxes called for {pdfId}");
string outputFilePathPdf = Path.Combine(Settings.Default.WorkFolder, $"temp_{pdfId}.pdf");
//File.WriteAllBytes(outputFilePathPdf, Convert.FromBase64String(pdfString));
InitializeAsposeLicense();
var pdfDocument = CreatePdf(pdfString, outputFilePathPdf);
string wowData = String.Empty;
wowData = SetSignatureCoordinates(pdfDocument, wowData);
double fontSize = 9;
//Font steveFont = Aspose.Pdf.Text.FontRepository.OpenFont(@"C:\Windows\Fonts\STEVE.TTF");
Font steveFont = Aspose.Pdf.Text.FontRepository.OpenFont(@"C:\Work\TF_DEV\WOW.EAPP.Common\1_DEVL\WebServices\EAppServices\STEVE.TTF");
steveFont.IsEmbedded = true;
var steveAppearance = new DefaultAppearance(steveFont, fontSize, System.Drawing.Color.DarkBlue);
steveAppearance.FontName = "SteveHandwriting";
//steveAppearance.FontName = steveFont.FontName;
Font arialFont = FontRepository.FindFont("Arial");
var arialAppearance = new DefaultAppearance(arialFont, fontSize, System.Drawing.Color.DarkBlue);
arialAppearance.FontName = "Arial";
TextBoxField piSigTextBox = CreatePiSigTextBox(pdfDocument, steveAppearance);
pdfDocument.Form.Add(piSigTextBox, page);
TextBoxField piDateTextBox = CreatePiDateTextBox(pdfDocument, arialAppearance);
pdfDocument.Form.Add(piDateTextBox, page);
TextBoxField srSigTextBox = CreateSrTextBox(pdfDocument, steveAppearance);
pdfDocument.Form.Add(srSigTextBox, page);
TextBoxField srDateTextBox = CreateSrDateTextBox(pdfDocument, arialAppearance);
pdfDocument.Form.Add(srDateTextBox, page);
Page pdfPage = (Page)pdfDocument.Pages[page];
TextBuilder textBuilder = new TextBuilder(pdfPage);
textBuilder.AppendText(CreateSignedBy(steveFont, signatureCoordinates.piSigXpos, signatureCoordinates.piSigYpos));
textBuilder.AppendText(CreateSignedBy(steveFont, signatureCoordinates.salesRepSigXpos, signatureCoordinates.salesRepSigYpos));
if (signatureCoordinates.jo1SigXpos != 0 && signatureCoordinates.jo1SigYpos != 0)
{
TextBoxField jo1SigTextBox = CreateJo1SigTextBox(pdfDocument, steveAppearance);
pdfDocument.Form.Add(jo1SigTextBox, page);
TextBoxField jo1DateTextBox = CreateJo1DateTextbox(pdfDocument, arialAppearance);
pdfDocument.Form.Add(jo1DateTextBox, page);
textBuilder.AppendText(CreateSignedBy(steveFont, signatureCoordinates.jo1SigXpos, signatureCoordinates.jo1SigYpos));
}
if (signatureCoordinates.jo2SigXpos != 0 && signatureCoordinates.jo2SigYpos != 0)
{
TextBoxField jo2SigTextBox = CreateJo2SigTextBox(pdfDocument, steveAppearance);
pdfDocument.Form.Add(jo2SigTextBox, page);
TextBoxField jo2DateTextBox = CreateJo2DateTextBox(pdfDocument, arialAppearance);
pdfDocument.Form.Add(jo2DateTextBox, page);
textBuilder.AppendText(CreateSignedBy(steveFont, signatureCoordinates.jo2SigXpos, signatureCoordinates.jo2SigYpos));
}
if (signatureCoordinates.jo3SigXpos != 0 && signatureCoordinates.jo3SigYpos != 0)
{
TextBoxField jo3SigTextBox = CreateJo3SigTextBox(pdfDocument, steveAppearance);
pdfDocument.Form.Add(jo3SigTextBox, page);
TextBoxField jo3DateTextBox = CreateJo3DateTextBox(pdfDocument, arialAppearance);
pdfDocument.Form.Add(jo3DateTextBox, page);
textBuilder.AppendText(CreateSignedBy(steveFont, signatureCoordinates.jo3SigXpos, signatureCoordinates.jo3SigYpos));
}
if (!hasSignatureLines)
{
CreateSignatureLines(arialFont, textBuilder);
}
//Save modified PDF
pdfDocument.Save(outputFilePathPdf);
byte[] pdfBytes = File.ReadAllBytes(outputFilePathPdf);
string pdfBase64 = Convert.ToBase64String(pdfBytes);
DeleteWorkPdf(outputFilePathPdf);
return pdfBase64;
}
private void CreateSignatureLines(Font arialFont, TextBuilder textBuilder)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateSignatureLines called");
var stringLine = "Date: ___________";
var jointLine = "Joint Owner: __________________________________";
TextFragment appOwnerText = new TextFragment("Applicant/Owner: __________________________________");
appOwnerText.TextState.FontSize = 8;
appOwnerText.TextState.Font = arialFont;
appOwnerText.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
appOwnerText.Position = new Position(signatureCoordinates.piSigXpos - 66, topOfPage - signatureCoordinates.piSigYpos - 1);
textBuilder.AppendText(appOwnerText);
TextFragment appOwnerDateText = new TextFragment(stringLine);
appOwnerDateText.TextState.FontSize = 8;
appOwnerDateText.TextState.Font = arialFont;
appOwnerDateText.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
appOwnerDateText.Position = new Position(signatureCoordinates.piDateXpos - 21, topOfPage - signatureCoordinates.piDateYpos - 1);
textBuilder.AppendText(appOwnerDateText);
TextFragment jointOwner1Text = new TextFragment(jointLine);
jointOwner1Text.TextState.FontSize = 8;
jointOwner1Text.TextState.Font = arialFont;
jointOwner1Text.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
jointOwner1Text.Position = new Position(signatureCoordinates.jo1SigXpos - 51, topOfPage - signatureCoordinates.jo1SigYpos - 1);
textBuilder.AppendText(jointOwner1Text);
TextFragment jointOwner1DateText = new TextFragment(stringLine);
jointOwner1DateText.TextState.FontSize = 8;
jointOwner1DateText.TextState.Font = arialFont;
jointOwner1DateText.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
jointOwner1DateText.Position = new Position(signatureCoordinates.jo1DateXpos - 21, topOfPage - signatureCoordinates.jo1DateYpos - 1);
textBuilder.AppendText(jointOwner1DateText);
TextFragment jointOwner2Text = new TextFragment(jointLine);
jointOwner2Text.TextState.FontSize = 8;
jointOwner2Text.TextState.Font = arialFont;
jointOwner2Text.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
jointOwner2Text.Position = new Position(signatureCoordinates.jo2SigXpos - 51, topOfPage - signatureCoordinates.jo2SigYpos - 1);
textBuilder.AppendText(jointOwner2Text);
TextFragment jointOwner2DateText = new TextFragment(stringLine);
jointOwner2DateText.TextState.FontSize = 8;
jointOwner2DateText.TextState.Font = arialFont;
jointOwner2DateText.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
jointOwner2DateText.Position = new Position(signatureCoordinates.jo2DateXpos - 21, topOfPage - signatureCoordinates.jo2DateYpos - 1);
textBuilder.AppendText(jointOwner2DateText);
TextFragment jointOwner3Text = new TextFragment(jointLine);
jointOwner3Text.TextState.FontSize = 8;
jointOwner3Text.TextState.Font = arialFont;
jointOwner3Text.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
jointOwner3Text.Position = new Position(signatureCoordinates.jo3SigXpos - 51, topOfPage - signatureCoordinates.jo3SigYpos - 1);
textBuilder.AppendText(jointOwner3Text);
TextFragment jointOwner3DateText = new TextFragment(stringLine);
jointOwner3DateText.TextState.FontSize = 8;
jointOwner3DateText.TextState.Font = arialFont;
jointOwner3DateText.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
jointOwner3DateText.Position = new Position(signatureCoordinates.jo3DateXpos - 21, topOfPage - signatureCoordinates.jo3DateYpos - 1);
textBuilder.AppendText(jointOwner3DateText);
TextFragment salesRepText = new TextFragment("Field Associate: __________________________________");
salesRepText.TextState.FontSize = 8;
salesRepText.TextState.Font = arialFont;
salesRepText.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
salesRepText.Position = new Position(signatureCoordinates.salesRepSigXpos - 62, topOfPage - signatureCoordinates.salesRepSigYpos - 1);
textBuilder.AppendText(salesRepText);
TextFragment salesRepDateText = new TextFragment(stringLine);
salesRepDateText.TextState.FontSize = 8;
salesRepDateText.TextState.Font = arialFont;
salesRepDateText.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Black);
salesRepDateText.Position = new Position(signatureCoordinates.salesRepDateXpos - 21, topOfPage - signatureCoordinates.salesRepDateYpos - 1);
textBuilder.AppendText(salesRepDateText);
}
private TextFragment CreateSignedBy(Font font, int xCoordinate, int yCoordinate)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateSrSignedBy called");
TextFragment signedby = new TextFragment("esigned by:");
//Set text properties
signedby.TextState.FontSize = 8;
signedby.TextState.Font = font;
signedby.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.DarkBlue);
//Create TextBuilder object
signedby.Position = new Position(xCoordinate - 51, topOfPage - yCoordinate + 9);
return signedby;
}
private TextBoxField CreateJo3DateTextBox(Document pdfDocument, DefaultAppearance arialAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateJo3DateTextBox called");
TextBoxField jo3DateTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateDateRectangle(signatureCoordinates.jo3DateXpos, signatureCoordinates.jo3DateYpos));
jo3DateTextBox.HorizontalAlignment = HorizontalAlignment.Left;
jo3DateTextBox.PartialName = "SIG_D_OWN43";
jo3DateTextBox.DefaultAppearance = arialAppearance;
return jo3DateTextBox;
}
private TextBoxField CreateJo3SigTextBox(Document pdfDocument, DefaultAppearance steveAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateJo3SigTextBox called");
TextBoxField jo3SigTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateSigRectangle(signatureCoordinates.jo3SigXpos, signatureCoordinates.jo3SigYpos));
jo3SigTextBox.HorizontalAlignment = HorizontalAlignment.Left;
jo3SigTextBox.PartialName = "SIG_X_OWN43";
jo3SigTextBox.DefaultAppearance = steveAppearance;
return jo3SigTextBox;
}
private TextBoxField CreateJo2DateTextBox(Document pdfDocument, DefaultAppearance arialAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateJo2DateTextBox called");
TextBoxField jo2DateTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateDateRectangle(signatureCoordinates.jo2DateXpos, signatureCoordinates.jo2DateYpos));
jo2DateTextBox.HorizontalAlignment = HorizontalAlignment.Left;
jo2DateTextBox.PartialName = "SIG_D_OWN42";
jo2DateTextBox.DefaultAppearance = arialAppearance;
return jo2DateTextBox;
}
private TextBoxField CreateJo2SigTextBox(Document pdfDocument, DefaultAppearance steveAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateJo2SigTextBox called");
TextBoxField jo2SigTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateSigRectangle(signatureCoordinates.jo2SigXpos, signatureCoordinates.jo2SigYpos));
jo2SigTextBox.HorizontalAlignment = HorizontalAlignment.Left;
jo2SigTextBox.PartialName = "SIG_X_OWN42";
jo2SigTextBox.DefaultAppearance = steveAppearance;
return jo2SigTextBox;
}
private TextBoxField CreateJo1DateTextbox(Document pdfDocument, DefaultAppearance arialAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateJo1DateTextbox called");
TextBoxField jo1DateTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateDateRectangle(signatureCoordinates.jo1DateXpos, signatureCoordinates.jo1DateYpos));
jo1DateTextBox.HorizontalAlignment = HorizontalAlignment.Left;
jo1DateTextBox.PartialName = "SIG_D_OWN2";
jo1DateTextBox.DefaultAppearance = arialAppearance;
return jo1DateTextBox;
}
private TextBoxField CreateJo1SigTextBox(Document pdfDocument, DefaultAppearance steveAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateJo1SigTextBox called");
TextBoxField jo1SigTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateSigRectangle(signatureCoordinates.jo1SigXpos, signatureCoordinates.jo1SigYpos));
jo1SigTextBox.HorizontalAlignment = HorizontalAlignment.Left;
jo1SigTextBox.PartialName = "SIG_X_OWN2";
jo1SigTextBox.DefaultAppearance = steveAppearance;
return jo1SigTextBox;
}
private TextBoxField CreateSrDateTextBox(Document pdfDocument, DefaultAppearance arialAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateSrDateTextBox called");
TextBoxField srDateTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateDateRectangle(signatureCoordinates.salesRepDateXpos, signatureCoordinates.salesRepDateYpos));
srDateTextBox.HorizontalAlignment = HorizontalAlignment.Left;
srDateTextBox.PartialName = "SIG_D_AGENT";
srDateTextBox.DefaultAppearance = arialAppearance;
return srDateTextBox;
}
private TextBoxField CreateSrTextBox(Document pdfDocument, DefaultAppearance steveAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreateSrTextBox called");
TextBoxField srSigTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateSigRectangle(signatureCoordinates.salesRepSigXpos, signatureCoordinates.salesRepSigYpos));
srSigTextBox.HorizontalAlignment = HorizontalAlignment.Left;
srSigTextBox.PartialName = "SIG_X_AGENT";
srSigTextBox.DefaultAppearance = steveAppearance;
return srSigTextBox;
}
private TextBoxField CreatePiDateTextBox(Document pdfDocument, DefaultAppearance arialAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreatePiDateTextBox called");
TextBoxField piDateTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateDateRectangle(signatureCoordinates.piDateXpos, signatureCoordinates.piDateYpos));
piDateTextBox.HorizontalAlignment = HorizontalAlignment.Left;
piDateTextBox.PartialName = "SIG_D_APPCNT";
piDateTextBox.DefaultAppearance = arialAppearance;
return piDateTextBox;
}
private TextBoxField CreatePiSigTextBox(Document pdfDocument, DefaultAppearance steveAppearance)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreatePiSigTextBox called");
TextBoxField piSigTextBox = new TextBoxField(pdfDocument.Pages[page], GenerateSigRectangle(signatureCoordinates.piSigXpos, signatureCoordinates.piSigYpos));
piSigTextBox.HorizontalAlignment = HorizontalAlignment.Left;
piSigTextBox.PartialName = "SIG_X_APPCNT";
piSigTextBox.DefaultAppearance = steveAppearance;
return piSigTextBox;
}
private string SetSignatureCoordinates(Document pdfDocument, string wowData)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"SetSignatureCoordinates called");
// looking for WowData in pdf metadata for signature coordinates
foreach (DictionaryEntry workVal in pdfDocument.Metadata.Values)
{
if (workVal.Key.ToString().Contains("WowData"))
{
wowData = workVal.Value.ToString();
}
}
if (wowData != String.Empty)
{
hasSignatureLines = true;
SetWowSigCoordinates(ref page, ref signatureCoordinates, wowData);
}
else
{
hasSignatureLines = false;
SetNoSigCoordinates(ref page, ref signatureCoordinates);
}
return wowData;
}
private static void SetWowSigCoordinates(ref int page, ref SignatureCoordinates signatureCoordinates, string wowData)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"SetWowSigCoordinates called");
//example of metadata in wowData: /WowData (P[4],S2[99~527],D2[269~527],S1[99~573],D1[269~573])
string[] arguments = wowData.Split(',');
foreach (var arg in arguments)
{
string[] workData = arg.ToString().Replace('[', '~').Replace(']', '~').Split('~'); //
switch (workData[0])
{
case "P": // Page to place sigatures
page = Convert.ToInt32(workData[1]);
break;
case "S1": // Sales Rep Signature
signatureCoordinates.salesRepSigXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.salesRepSigYpos = Convert.ToInt32(workData[2]);
break;
case "D1": // Sales Rep Signature Date
signatureCoordinates.salesRepDateXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.salesRepDateYpos = Convert.ToInt32(workData[2]);
break;
case "S2": // Owner 1 (Proposed Insured/Proposed Owner) Signature
signatureCoordinates.piSigXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.piSigYpos = Convert.ToInt32(workData[2]);
break;
case "D2": // Owner 1 (Proposed Insured/Proposed Owner) Signature Date
signatureCoordinates.piDateXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.piDateYpos = Convert.ToInt32(workData[2]);
break;
case "S3": // Owner 2 (Proposed Joint Owner 1) Signature
signatureCoordinates.jo1SigXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.jo1SigYpos = Convert.ToInt32(workData[2]);
break;
case "D3": // Owner 2 (Proposed Joint Owner 1) Signature Date
signatureCoordinates.jo1DateXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.jo1DateYpos = Convert.ToInt32(workData[2]);
break;
case "S4": // Owner 3 (Proposed Joint Owner 2) Signature
signatureCoordinates.jo2SigXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.jo2SigYpos = Convert.ToInt32(workData[2]);
break;
case "D4": // Owner 3 (Proposed Joint Owner 2) Signature Date
signatureCoordinates.jo2DateXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.jo2DateYpos = Convert.ToInt32(workData[2]);
break;
case "S5": // Owner 4 (Proposed Joint Owner 3) Signature
signatureCoordinates.jo3SigXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.jo3SigYpos = Convert.ToInt32(workData[2]);
break;
case "D5": // Owner 4 (Proposed Joint Owner 3) Signature Date
signatureCoordinates.jo3DateXpos = Convert.ToInt32(workData[1]);
signatureCoordinates.jo3DateYpos = Convert.ToInt32(workData[2]);
break;
}
}
}
private static void SetNoSigCoordinates(ref int page, ref SignatureCoordinates signatureCoordinates)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"SetNoSigCoordinates called");
int column1 = 80;
int column1Xdate = 257;
int column2 = 367;
int column2Xdate = 544;
int row1Y = 690;
int row2Y = 710;
int row3Y = 730;
page = 1;
signatureCoordinates.piSigXpos = column1;
signatureCoordinates.piSigYpos = row1Y;
signatureCoordinates.piDateXpos = column1Xdate;
signatureCoordinates.piDateYpos = row1Y;
signatureCoordinates.jo1SigXpos = column2;
signatureCoordinates.jo1SigYpos = row1Y;
signatureCoordinates.jo1DateXpos = column2Xdate;
signatureCoordinates.jo1DateYpos = row1Y;
signatureCoordinates.jo2SigXpos = column1;
signatureCoordinates.jo2SigYpos = row2Y;
signatureCoordinates.jo2DateXpos = column1Xdate;
signatureCoordinates.jo2DateYpos = row2Y;
signatureCoordinates.jo3SigXpos = column2;
signatureCoordinates.jo3SigYpos = row2Y;
signatureCoordinates.jo3DateXpos = column2Xdate;
signatureCoordinates.jo3DateYpos = row2Y;
signatureCoordinates.salesRepSigXpos = column1;
signatureCoordinates.salesRepSigYpos = row3Y;
signatureCoordinates.salesRepDateXpos = column1Xdate;
signatureCoordinates.salesRepDateYpos = row3Y;
}
private static Rectangle GenerateSigRectangle(int fromPdfX, int fromPdfY)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"GenerateSigRectangle called");
int lowerLeftX = fromPdfX - 5;
int lowerLeftY = topOfPage - fromPdfY;
int upperRightX = lowerLeftX + 157;
int upperRightY = lowerLeftY + 17;
return new Aspose.Pdf.Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
}
private static Rectangle GenerateDateRectangle(int fromPdfX, int fromPdfY)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"GenerateDateRectangle called");
int lowerLeftX = fromPdfX - 1;
int lowerLeftY = topOfPage - fromPdfY;
int upperRightX = lowerLeftX + 60;
int upperRightY = lowerLeftY + 17;
return new Aspose.Pdf.Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
}
private void DeleteWorkPdf(string outputFilePathPdf)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"DeleteWorkPdf called");
File.Delete(outputFilePathPdf);
}
private Document CreatePdf(string base64pdf, string outputFilePathPdf)
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"CreatePdf called");
if (!Directory.Exists(Settings.Default.WorkFolder))
{
Directory.CreateDirectory(Settings.Default.WorkFolder);
}
var policy = Polly.Policy.Handle<IOException>()
.WaitAndRetry(Settings.Default.FileIOProcessRetries, attempt => TimeSpan.FromTicks(Settings.Default.FileIOProcessDelay.Ticks * attempt),
(ex, timeSpan) =>
{
if (log.IsErrorEnabled) log.Error($"There was an error creating PDF file: {outputFilePathPdf}.", ex);
if (log.IsFatalEnabled)
{
ILog logger = LogManager.GetLogger("EmailErrorLogger");
log.Fatal($"There was an error creating PDF file: {outputFilePathPdf}.", ex);
}
});
policy.Execute(() => File.WriteAllBytes(outputFilePathPdf, Convert.FromBase64String(base64pdf)));
if (log.IsDebugEnabled) log.Debug($"PDF file {outputFilePathPdf} contents saved.");
Document pdfDocument = new Document(outputFilePathPdf);
return pdfDocument;
}
private static void InitializeAsposeLicense()
{
if (log.IsDebugEnabled) log.DebugFormat(CultureInfo.InstalledUICulture, $"InitializeAsposeLicense called");
// Create a PDF license object
License license = new License();
// Instantiate license file
license.SetLicense(@"Aspose.Total.Product.Family.lic");
// Set the value to indicate that license will be embedded in the application
license.Embedded = true;
}
}
}