Установить с помощью Maven
<dependency> <groupId>e-iceblue</groupId> <artifactId>spire.doc</artifactId> <version>12.2.2</version> </dependency>
Ссылки по теме
Word позволяет создавать формы, которые другие люди могут использовать для ввода информации. Заполняемые формы используются для различных целей. Отдел кадров использует формы для сбора информации о сотрудниках и консультантах. Отделы маркетинга используют формы для опроса удовлетворенности клиентов их продуктами и услугами. Организации используют формы для регистрации членов, студентов или клиентов. Некоторые из инструментов, которые вы будете использовать при создании формы, включают:
- Элементы управления содержимым: области, в которых пользователи вводят информацию в форму.
- Таблицы:Таблицы используются в формах для выравнивания текста и полей формы, а также для создания границ и полей.
- Защита: позволяет пользователям заполнять поля, но не вносить изменения в остальную часть документа.
Элементы управления содержимым в Word — это контейнеры для содержимого, которые позволяют пользователям создавать структурированные документы. Структурированный документ определяет, где в документе отображается содержимое. В Word 2013 доступно десять типов элементов управления содержимым. В этой статье основное внимание уделяется тому, как создать заполняемую форму в Word состоящий из следующих семи общих элементов управления содержимым, использующих Spire.Doc for Java.
Контроль контента | Описание |
Простой текст | Текстовое поле, ограниченное обычным текстом, поэтому форматирование невозможно. |
Богатый текст | Текстовое поле, которое может содержать форматированный текст или другие элементы, например таблицы, изображения или другие элементы управления содержимым. |
Картина | Принимает одно изображение. |
Выпадающий список | В раскрывающемся списке отображается заранее определенный список элементов, из которых пользователь может выбирать. |
Поле со списком | Поле со списком позволяет пользователям выбирать предопределенное значение в списке или вводить собственное значение в текстовое поле элемента управления. |
Флажок | Флажок представляет собой графический виджет, который позволяет пользователю сделать двоичный выбор: да (отмечено) или нет (не отмечено). |
Выбор даты | Содержит элемент управления календарем, из которого пользователь может выбрать дату. |
Установите Spire.Doc for Java
Прежде всего, вам необходимо добавить файл Spire.Doc.jar в качестве зависимости в вашу Java-программу. JAR-файл можно скачать по этой ссылке. Если вы используете Maven, вы можете легко импортировать файл JAR в свое приложение, добавив следующий код в файл pom.xml вашего проекта.
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.doc</artifactId> <version>12.11.0</version> </dependency> </dependencies>
Создайте заполняемую форму в Word на Java
Класс StructureDocumentTagInline, предоставляемый Spire.Doc для Java, используется для создания тегов структурированного документа для структур строкового уровня (объекта DrawingML, полей и т. д.) в абзаце. Свойство SDTProperties и свойство SDTContent этого класса должны использоваться для указания свойств и содержимого текущего тега структурированного документа. Ниже приведены подробные инструкции по созданию заполняемой формы с элементами управления содержимым в Word.
- Создайте объект Документ.
- Добавьте раздел, используя метод Document.addSection().
- Добавьте таблицу с помощью метода Раздел.addTable().
- Добавьте абзац в определенную ячейку таблицы с помощью метода TableCell.addParagraph().
- Создайте экземпляр класса StructureDocumentTagInline и добавьте его в абзац как дочерний объект с помощью метода Paragraph.getChildObjects().add().
- Укажите свойства и содержимое тега структурированного документа, используя методы свойства SDTProperties и свойства SDTContent объекта StructureDocumentTagInline. Тип тега структурированного документа задается с помощью метода SDTProperties.setSDTType().
- Запретите пользователям редактировать содержимое вне полей формы с помощью метода Document.protect().
- Сохраните документ, используя метод Document.saveToFile().
- Java
import com.spire.doc.*; import com.spire.doc.documents.*; import com.spire.doc.fields.DocPicture; import com.spire.doc.fields.TextRange; import java.util.Date; public class CreateFillableForm { public static void main(String[] args) { //Create a Document object Document doc = new Document(); //Add a section Section section = doc.addSection(); //add a table Table table = section.addTable(true); table.resetCells(7, 2); //Add text to the cells of the first column Paragraph paragraph = table.getRows().get(0).getCells().get(0).addParagraph(); paragraph.appendText("Plain Text Content Control"); paragraph = table.getRows().get(1).getCells().get(0).addParagraph(); paragraph.appendText("Rich Text Content Control"); paragraph = table.getRows().get(2).getCells().get(0).addParagraph(); paragraph.appendText("Picture Content Control"); paragraph = table.getRows().get(3).getCells().get(0).addParagraph(); paragraph.appendText("Drop-Down List Content Control"); paragraph = table.getRows().get(4).getCells().get(0).addParagraph(); paragraph.appendText("Check Box Content Control"); paragraph = table.getRows().get(5).getCells().get(0).addParagraph(); paragraph.appendText("Combo box Content Control"); paragraph = table.getRows().get(6).getCells().get(0).addParagraph(); paragraph.appendText("Date Picker Content Control"); //Add a plain text content control to the cell (0,1) paragraph = table.getRows().get(0).getCells().get(1).addParagraph(); StructureDocumentTagInline sdt = new StructureDocumentTagInline(doc); paragraph.getChildObjects().add(sdt); sdt.getSDTProperties().setSDTType(SdtType.Text); sdt.getSDTProperties().setAlias("Plain Text"); sdt.getSDTProperties().setTag("Plain Text"); sdt.getSDTProperties().isShowingPlaceHolder(true); SdtText text = new SdtText(true); text.isMultiline(false); sdt.getSDTProperties().setControlProperties(text); TextRange tr = new TextRange(doc); tr.setText("Click or tap here to enter text."); sdt.getSDTContent().getChildObjects().add(tr); //Add a rich text content control to the cell (1,1) paragraph = table.getRows().get(1).getCells().get(1).addParagraph(); sdt = new StructureDocumentTagInline(doc); paragraph.getChildObjects().add(sdt); sdt.getSDTProperties().setSDTType(SdtType.Rich_Text); sdt.getSDTProperties().setAlias("Rich Text"); sdt.getSDTProperties().setTag("Rich Text"); sdt.getSDTProperties().isShowingPlaceHolder(true); text = new SdtText(true); text.isMultiline(false); sdt.getSDTProperties().setControlProperties(text); tr = new TextRange(doc); tr.setText("Click or tap here to enter text."); sdt.getSDTContent().getChildObjects().add(tr); //Add a picture content control to the cell (2,1) paragraph = table.getRows().get(2).getCells().get(1).addParagraph(); sdt = new StructureDocumentTagInline(doc); paragraph.getChildObjects().add(sdt); sdt.getSDTProperties().setSDTType(SdtType.Picture); sdt.getSDTProperties().setAlias("Picture"); sdt.getSDTProperties().setTag("Picture"); SdtPicture sdtPicture = new SdtPicture(); sdt.getSDTProperties().setControlProperties(sdtPicture); DocPicture pic = new DocPicture(doc); pic.loadImage("C:\\Users\\Administrator\\Desktop\\ChooseImage.png"); sdt.getSDTContent().getChildObjects().add(pic); //Add a dropdown list content control to the cell(3,1) paragraph = table.getRows().get(3).getCells().get(1).addParagraph(); sdt = new StructureDocumentTagInline(doc); sdt.getSDTProperties().setSDTType(SdtType.Drop_Down_List); sdt.getSDTProperties().setAlias("Dropdown List"); sdt.getSDTProperties().setTag("Dropdown List"); paragraph.getChildObjects().add(sdt); SdtDropDownList sddl = new SdtDropDownList(); sddl.getListItems().add(new SdtListItem("Choose an item.", "1")); sddl.getListItems().add(new SdtListItem("Item 2", "2")); sddl.getListItems().add(new SdtListItem("Item 3", "3")); sddl.getListItems().add(new SdtListItem("Item 4", "4")); sdt.getSDTProperties().setControlProperties(sddl); tr = new TextRange(doc); tr.setText(sddl.getListItems().get(0).getDisplayText()); sdt.getSDTContent().getChildObjects().add(tr); //Add two check box content controls to the cell (4,1) paragraph = table.getRows().get(4).getCells().get(1).addParagraph(); sdt = new StructureDocumentTagInline(doc); paragraph.getChildObjects().add(sdt); sdt.getSDTProperties().setSDTType(SdtType.Check_Box); SdtCheckBox scb = new SdtCheckBox(); sdt.getSDTProperties().setControlProperties(scb); tr = new TextRange(doc); sdt.getChildObjects().add(tr); scb.setChecked(false); paragraph.appendText(" Option 1"); paragraph = table.getRows().get(4).getCells().get(1).addParagraph(); sdt = new StructureDocumentTagInline(doc); paragraph.getChildObjects().add(sdt); sdt.getSDTProperties().setSDTType(SdtType.Check_Box); scb = new SdtCheckBox(); sdt.getSDTProperties().setControlProperties(scb); tr = new TextRange(doc); sdt.getChildObjects().add(tr); scb.setChecked(false); paragraph.appendText(" Option 2"); //Add a combo box content control to the cell (5,1) paragraph = table.getRows().get(5).getCells().get(1).addParagraph(); sdt = new StructureDocumentTagInline(doc); paragraph.getChildObjects().add(sdt); sdt.getSDTProperties().setSDTType(SdtType.Combo_Box); sdt.getSDTProperties().setAlias("Combo Box"); sdt.getSDTProperties().setTag("Combo Box"); SdtComboBox cb = new SdtComboBox(); cb.getListItems().add(new SdtListItem("Choose an item.")); cb.getListItems().add(new SdtListItem("Item 2")); cb.getListItems().add(new SdtListItem("Item 3")); sdt.getSDTProperties().setControlProperties(cb); tr = new TextRange(doc); tr.setText(cb.getListItems().get(0).getDisplayText()); sdt.getSDTContent().getChildObjects().add(tr); //Add a date picker content control to the cell (6,1) paragraph = table.getRows().get(6).getCells().get(1).addParagraph(); sdt = new StructureDocumentTagInline(doc); paragraph.getChildObjects().add(sdt); sdt.getSDTProperties().setSDTType(SdtType.Date_Picker); sdt.getSDTProperties().setAlias("Date Picker"); sdt.getSDTProperties().setTag("Date Picker"); SdtDate date = new SdtDate(); date.setCalendarType(CalendarType.Default); date.setDateFormat("yyyy.MM.dd"); date.setFullDate(new Date()); sdt.getSDTProperties().setControlProperties(date); tr = new TextRange(doc); tr.setText("Click or tap to enter a date."); sdt.getSDTContent().getChildObjects().add(tr); //Allow users to edit the form fields only doc.protect(ProtectionType.Allow_Only_Form_Fields, "permission-psd"); //Save to file doc.saveToFile("output/WordForm.docx", FileFormat.Docx_2013); } }
Подать заявку на временную лицензию
Если вы хотите удалить сообщение об оценке из сгенерированных документов или избавиться от ограничений функции, пожалуйста, запросите 30-дневную пробную лицензию для себя.