В ответ на мой комментарий, я полагаю, вы используете iTextSharp, даже если вы не укажете. Используя iTextSharp, я считаю, что вам нужно сгладить форму, когда закончите. Вот простой пример:
public void GeneratePDF(string filePath, List<PDFField> modifiedFields)
{
var pdfReader = new PdfReader(filePath);
var folderStructure = filePath.Split('\\');
if (folderStructure.Length == 0) return;
var currentFileName = folderStructure.Last();
var newFilePath = string.Format("{0}{1}", Constants.SaveFormsPath,
currentFileName.Replace(".pdf", DateTime.Now.ToString("MMddyyhhmmss") + ".pdf"));
var pdfStamper = new PdfStamper(pdfReader, new FileStream(newFilePath, FileMode.Create));
foreach (var field in modifiedFields.Where(f=>f.Value != null))
{
pdfStamper.AcroFields.SetField(field.Name, field.Value);
}
pdfStamper.FormFlattening = true;
pdfStamper.Close();
}
Игнорирование части о имени файла, оно сводится к тому, переходящим в некоторых ключевом списке значений относительно значений полей, чтобы установить. Это может быть то, где вы делаете свою часть подписи, а затем устанавливаете свойство FormFlattening на значение stamper в true.
Вот еще SO пост, где они использовали похожую технику для немного другого вопроса, это может быть полезным: How to flatten already filled out PDF form using iTextSharp
Я считаю, что вы должны выравнивать форму, дайте мне двойную проверку. – JasonWilczak
PDF с полями формы AcroForm *** является ** нормальным *. То, что вы называете * Acroform PDF *, скорее всего, представляет собой PDF-файл с полями AcroForm, который был * Reader-enabled *, то есть который содержит подписывания прав использования. Подпись прав использования также является обычным PDF-файлом, но некоторые простые API подписывания могут иметь проблемы с ранее подписанными PDF-файлами. – mkl