У меня проблема с подписью через iText7. В некоторых указанных c документах процесс подписи завершен успешно, и подпись действительна в Adobe, но внешний вид подписи не виден, а подпись невидима. Для справки найдите прилагаемый документ ниже:
https://1drv.ms/b/s! AvIgyv7xAxxoihngL6ZfyqzsJogy? E = r0vL91
Мой код добавления подписи выглядит следующим образом:
PdfAcroForm pdfAcroForm = PdfAcroForm.GetAcroForm(pdfDocument, true);
PDFSignaturePosition SigPosition = field.Position;
PdfPage page = pdfDocument.GetPage(SigPosition.Pages[i]);
if (page == null)
{
page = pdfDocument.GetPage(SigPosition.PageNumber);
}
int rotation = page.GetRotation();
iText.Kernel.Geom.Rectangle rect;
if (rotation > 0 && SigPosition.Position == PDFSignaturePosition.DefaultSignaturePosition.Custom)
{
page = page.SetIgnorePageRotationForContent(false);
rect = GetSignaturePositionAccordingToRotation(SigPosition.Rect, page.GetCropBox(), rotation);
}
else
{
rect = GetSignaturePositionRect(SigPosition.Position, SigPosition.Rect, page.GetCropBox());
}
PdfFormField sig = PdfFormField.CreateSignature(pdfDocument, rect);
sig.SetFieldFlags(PdfFormField.VISIBLE);
sig.Put(PdfName.DA, new PdfString("/Helv 0 Tf 0 g"));
sig.SetFieldName(i == 0 ? field.Name : field.Name + " - " + SigPosition.Pages[i]);
sig.SetPage(SigPosition.Pages[i]);
pdfAcroForm.AddField(sig, page);
sig.MakeIndirect(pdfDocument);
pdfAcroForm.GetPdfObject().Get(PdfName.Fields).SetModified();
pdfAcroForm.GetPdfObject().SetModified();
pdfDocument.Close();
Фрагмент кода для добавления измерений в layer2Object rect:
layer2Rect.SetHeight((float)Convert.ToInt32(signingRequest.CollaboratorMainTask.FieldHeight));
layer2Rect.SetWidth((float)Convert.ToInt32(signingRequest.CollaboratorMainTask.FieldWidth));
float[] rectUpdatedValues = new float[] { 0, 0, layer2Rect.GetWidth(), layer2Rect.GetHeight() };
PdfArray pdfArray = new PdfArray(rectUpdatedValues);
layer2Object.SetBBox(pdfArray);