К сожалению, это не полный ответ.
Во-первых, когда вы звоните SetField()
, вы стираете текущее содержимое поля и заменяете его новым значением. Когда это сделано в цикле, тогда будет сохранено только последнее значение. Что вам нужно сделать, так это перебрать каждое значение и объединить его в одну большую строку.
string buf = '';
foreach (var disability in formNature.Disabilities)
{
buf += disability.PrimaryDisabilityName + "; ";
}
buf = buf.Trim();
Во-вторых, насколько мне известно, стандарт PDF не поддерживает цепочку полей для переполнения, что вы и ищете. Единственный известный мне способ выполнить то, что вы пытаетесь, - это измерить строки, сравнить их с шириной полей и урезать их при необходимости. Для этого вам нужно найти шрифт, используемый для данного поля, создать из него BaseFont
и использовать его для измерения строки. Затем сравните это с прямоугольником поля и используйте только те символы, которые «вписываются» в это поле. Повторите при необходимости.
Тем не менее, я бы действительно очень рекомендовал , чтобы вы просто отредактировали PDF и заменили несколько полей одним большим полем, которое поддерживает несколько строк. Ваша жизнь будет намного, намного проще.