#c# #itextsharp
#c# #itextsharp
Вопрос:
Я добавляю содержимое в существующий PDF-файл, используя PdfContentByte. Существующий PDF-документ, который изначально был создан в Word, имеет несколько флажков. Мне нужно наложить «X» на флажок, когда это необходимо. Что я могу сделать, чтобы заставить ‘X’ наложить флажок. В приведенном ниже коде «X» помещается под флажок.
private static void AddField(float xpos, float ypos, string Text, PdfImportedPage page, PdfContentByte cb2, BaseFont f_cn2)
{
cb2.AddTemplate(page, 0, 0);
cb2.BeginText();
cb2.SetFontAndSize(f_cn2, 10);
cb2.ShowTextAligned(Element.ALIGN_LEFT, Text, xpos, ypos, 0F);
//cb2.SetTextMatrix(xpos, ypos); //(xPos, yPos)
//cb2.ShowText(Text);
cb2.EndText();
}
Комментарии:
1. в вашем названии вы имеете в виду переопределение или перезапись ?
Ответ №1:
Если ваш флажок является полем формы, то он визуализируется с помощью аннотации виджета. Аннотация виджета — это особая форма аннотации. Аннотации — это интерактивные функции, которые не являются частью потока содержимого страницы. Они перечислены в /Annots
массиве словаря страниц и всегда добавляются поверх содержимого страницы.
В вашем фрагменте кода я вижу метод с вводящим в заблуждение именем AddField()
. Это имя вводит в заблуждение, потому что вы не добавляете поле. Похоже, вы добавляете содержимое в поток содержимого. Если этот поток содержимого является частью потока содержимого страницы, то следует ожидать и нормально, что это содержимое покрывается аннотацией виджета.
Мне кажется, что вы хотите «установить» флажок. Почему бы вам не сделать это, заполнив форму? Предположим, что имя поля флажка равно «cb», а значение on равно «Yes», тогда вы бы использовали PdfStamper
экземпляр, создали AcroFields
объект (например form
), а затем сделали что-то вроде этого:
form.setField("cb", "Yes");
Это должно «проверить» поле интерактивного флажка. Смотрите Пример FillDataSheet для полного примера.
Важно: вам нужно знать имя поля (оно не всегда будет «cb»), и вам нужно знать состояния внешнего вида флажка (оно не всегда будет «Да»). Вам следует прочитать главу 6 моей книги для получения дополнительной информации.