Я пытаюсь добавить поле подписи в существующий PDF, но у меня есть две ошибки, вот мой код
private static bool CreateForm(string inputPDF, float x, float y, float w, float h, float angle, bool allPages)
{
try
{
PdfReader reader = new PdfReader(inputPDF);
using (FileStream os = new FileStream(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + Path.DirectorySeparatorChar + "Temp" + Path.DirectorySeparatorChar + "t0.pdf", FileMode.Create, FileAccess.Write))
{
PdfStamper st0 = PdfStamper.CreateSignature(reader, os, '\0', Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + Path.DirectorySeparatorChar + "Temp" + Path.DirectorySeparatorChar + "t1.pdf", true);
PdfFormField field = PdfFormField.CreateSignature(st0.Writer);
field.FieldName = "FIRMA";
field.SetWidget(new Rectangle(x, y, x + w, y + h), PdfAnnotation.HIGHLIGHT_OUTLINE);
field.SetFieldFlags(PdfAnnotation.FLAGS_PRINT);
field.Rotate = Convert.ToInt32(Math.Round(angle));
if (allPages)
for (int i = 1; i <= reader.NumberOfPages; i++)
st0.AddAnnotation(field, i);
else
st0.AddAnnotation(field, reader.NumberOfPages);
st0.FormFlattening = true;
st0.Writer.CloseStream = true;
//st0.Close();
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
return true;
}
, теперь, если я закрою штамп st0.Close()
, я получил ошибку "Подпись должна быть закрыта », иначе, если я не закрою ее, результирующий файл будет пуст (0 B);пробовал также без st0.FormFlattening = true;
и без st0.Writer.CloseStream = true;
, я не нашел ни одной работающей комбинации.
Предложения?