Siganture не отображается на некоторых c документах - PullRequest
0 голосов
/ 03 марта 2020

У меня проблема с подписью через 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);

1 Ответ

0 голосов
/ 03 марта 2020

но вид подписи не виден, а подпись невидима

Прямоугольники, определяющие размеры и расположение визуализаций как вашей подписи, так и отметки времени вашего документа, равны [0 0 0 0], см. Их Rect записи:

dump of signature and document time stamp fields of

Т.е. они являются прямоугольниками с размером 0 × 0 в начале координат. Сигнатуры с визуализациями размером 0 × 0 считаются невидимыми.

Если вы хотите, чтобы видимые подписи, поэтому присвойте их полям неисчезающие размеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...