Категория

Java Создание заполняемой формы в Word

2023-11-06 09:43:30

Установить с помощью 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);
        }
    }

Java: Create a Fillable Form in Word

Подать заявку на временную лицензию

Если вы хотите удалить сообщение об оценке из сгенерированных документов или избавиться от ограничений функции, пожалуйста, запросите 30-дневную пробную лицензию для себя.

Смотрите также