@ Jcis, я фактически справился с обходом нескольких запросов, используя ваш пример в качестве отправной точки.Я использую ваш проект в качестве ссылки в ac # project и изменил то, что он делаетВместо того, чтобы просто выделять, я фактически рисую белый прямоугольник вокруг поискового запроса, а затем, используя координаты прямоугольника, помещаю поле формы.Мне также пришлось поменять режим записи contentbyte на getovercontent, чтобы полностью заблокировать искомый текст.На самом деле я создал строковый массив поисковых терминов, и затем, используя цикл for, я создаю столько разных текстовых полей, сколько мне нужно.
Test.Form1 formBuilder = new Test.Form1();
string[] fields = new string[] { "%AccountNumber%", "%MeterNumber%", "%EmailFieldHolder%", "%AddressFieldHolder%", "%EmptyFieldHolder%", "%CityStateZipFieldHolder%", "%emptyFieldHolder1%", "%emptyFieldHolder2%", "%emptyFieldHolder3%", "%emptyFieldHolder4%", "%emptyFieldHolder5%", "%emptyFieldHolder6%", "%emptyFieldHolder7%", "%emptyFieldHolder8%", "%SiteNameFieldHolder%", "%SiteNameFieldHolderWithExtraSpace%" };
//int a = 0;
for (int a = 0; a < fields.Length; )
{
string[] fieldNames = fields[a].Split('%');
string[] fieldName = Regex.Split(fieldNames[1], "Field");
formBuilder.PDFTextGetter(fields[a], StringComparison.CurrentCultureIgnoreCase, htmlToPdf, finalhtmlToPdf, fieldName[0]);
File.Delete(htmlToPdf);
System.Array.Clear(fieldNames, 0, 2);
System.Array.Clear(fieldName, 0, 1);
a++;
if (a == fields.Length)
{
break;
}
string[] fieldNames1 = fields[a].Split('%');
string[] fieldName1 = Regex.Split(fieldNames1[1], "Field");
formBuilder.PDFTextGetter(fields[a], StringComparison.CurrentCultureIgnoreCase, finalhtmlToPdf, htmlToPdf, fieldName1[0]);
File.Delete(finalhtmlToPdf);
System.Array.Clear(fieldNames1, 0, 2);
System.Array.Clear(fieldName1, 0, 1);
a++;
}
В вашем примере она возвращает функцию PDFTextGetterи вперед между двумя файлами, пока я не достигну готового продукта.Это работает очень хорошо, и это было бы невозможно без вашего первоначального проекта, так что спасибо вам за это.Я также изменил ваш VB таким образом, чтобы отображать текстовые поля так:
For Each rect As iTextSharp.text.Rectangle In MatchesFound
cb.Rectangle(rect.Left, rect.Bottom + 1, rect.Width, rect.Height + 4)
Dim field As New TextField(stamper.Writer, rect, FieldName & Fields)
Dim form = stamper.AcroFields
Dim fieldKeys = form.Fields.Keys
stamper.AddAnnotation(field.GetTextField(), page)
Fields += 1
Next
Просто подумал, что поделюсь тем, что мне удалось сделать с вашим проектом в качестве основы.Он даже увеличивает имена полей по мере необходимости.Мне также пришлось добавить новый параметр в вашу функцию, но это не стоит перечислять здесь.Еще раз спасибо за этот отличный старт.