Java의 Word에서 양식 필드 만들기

21715 단어 wordformsjava
다른 사람이 채울 수 있는 레거시 양식 필드가 있는 템플릿 Word 문서를 만들 수 있습니다. 기본적으로 Microsoft Word에는 세 가지 유형의 레거시 양식 필드 유형이 있습니다.
  • 텍스트 양식 필드
  • 확인란 양식 필드
  • 드롭다운 양식 필드

  • 이 기사에서는 Free Spire.Doc for Java 라이브러리를 사용하여 Java에서 Word 문서의 텍스트, 확인란 및 드롭다운 양식 필드를 만드는 방법을 소개합니다.

    종속성 추가



    먼저 Free Spire.Doc for Java를 Java 프로젝트에 포함하는 데 필요한 종속 항목을 추가해야 합니다. 두 가지 방법이 있습니다.
    maven을 사용하는 경우 프로젝트의 pom.xml 파일에 다음 코드를 추가해야 합니다.

    <repositories>  
            <repository>  
                <id>com.e-iceblue</id>  
                <name>e-iceblue</name>  
                <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>  
            </repository>  
    </repositories>  
    <dependencies>  
        <dependency>  
            <groupId>e-iceblue</groupId>  
            <artifactId>spire.doc.free</artifactId>  
            <version>2.7.3</version>  
        </dependency>  
    </dependencies>  
    

    Maven이 아닌 프로젝트의 경우 this website에서 무료 Spire.Doc for Java 팩을 다운로드하고 lib 폴더의 Spire.Doc.jar를 종속 항목으로 프로젝트에 추가하십시오.

    양식 필드 만들기



    무료 Spire.Doc for Java API는 Word에서 양식 필드를 생성하기 위한 Paragraph.appendField 메서드를 제공합니다. 양식 필드를 추가한 후 Document.protect 메서드를 사용하여 문서를 보호하여 사용자가 문서의 양식 필드만 채울 수 있도록 할 수 있습니다. 다음 예에서는 Word 문서에 양식 필드를 추가하고 이 API를 사용하여 문서를 보호하는 방법을 보여줍니다.

    import com.spire.doc.*;
    import com.spire.doc.documents.*;
    import com.spire.doc.fields.CheckBoxFormField;
    import com.spire.doc.fields.DropDownFormField;
    import com.spire.doc.fields.TextFormField;
    import com.spire.doc.fields.TextRange;
    
    import java.awt.*;
    
    public class CreateFormFields {
        public static void main(String[] args) throws Exception {
            //Create a Document instance
            Document doc = new Document();
            //Add a section
            Section section = doc.addSection();
    
            //Add a title paragraph
            Paragraph title = section.addParagraph();
            TextRange titleText = title.appendText("Employee Information");
            titleText.getCharacterFormat().setFontName("Calibri");
            titleText.getCharacterFormat().setFontSize(16f);
            title.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
    
            //Create a table
            Table table = section.addTable(true);
            table.resetCells(5, 2);
    
            //Merge cells in the first row
            table.applyHorizontalMerge(0, 0, 1);
    
            //Set table header
            TableRow headerRow = table.getRows().get(0);
            headerRow.isHeader(true);
            headerRow.getRowFormat().setBackColor(new Color(0x00, 0x71, 0xb6));
            headerRow.getCells().get(0).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
            Paragraph headerParagraph = headerRow.getCells().get(0).addParagraph();
            TextRange headerText = headerParagraph.appendText("Personal Information");
            headerText.getCharacterFormat().setBold(true);
    
            //Add paragraph to table cell [1,0]
            Paragraph paragraph = table.getRows().get(1).getCells().get(0).addParagraph();
            TextRange textRange = paragraph.appendText("Full name");
    
            //Add paragraph to table cell [1,1] and append a text form field to the paragraph
            paragraph = table.getRows().get(1).getCells().get(1).addParagraph();
            TextFormField textForm = (TextFormField)paragraph.appendField("FullName", FieldType.Field_Form_Text_Input);
            //Add paragraph to table cell [2,0]
            paragraph = table.getRows().get(2).getCells().get(0).addParagraph();
            textRange = paragraph.appendText("Age");
            //Add paragraph to table cell [2,1] and append a text form field
            paragraph = table.getRows().get(2).getCells().get(1).addParagraph();
            textForm = (TextFormField)paragraph.appendField("Age", FieldType.Field_Form_Text_Input);
    
            //Add paragraph to table cell [3,0] 
            paragraph = table.getRows().get(3).getCells().get(0).addParagraph();
            textRange = paragraph.appendText("Married");
            //Add paragraph to table cell [3,1] and append a check box  form field
            paragraph = table.getRows().get(3).getCells().get(1).addParagraph();
            CheckBoxFormField checkboxForm = (CheckBoxFormField)paragraph.appendField("Married", FieldType.Field_Form_Check_Box);
            checkboxForm.setCheckBoxSize(8);
    
            //Add paragraph to table cell [4,0] 
            paragraph = table.getRows().get(4).getCells().get(0).addParagraph();
            textRange = paragraph.appendText("Gender");
            //Add paragraph to table cell [4,1] and append a drop down  form field
            paragraph = table.getRows().get(4).getCells().get(1).addParagraph();
            DropDownFormField dropdownField = (DropDownFormField)paragraph.appendField("DropDown",FieldType.Field_Form_Drop_Down);
            dropdownField.getDropDownItems().add("Male");
            dropdownField.getDropDownItems().add("Female");
    
            for (int i = 0; i < table.getRows().getCount(); i++) {
                //Set row height
                table.getRows().get(i).setHeight(20f);
                for (Object cell:table.getRows().get(i).getCells()){
                    if (cell instanceof TableCell)
                    {
                        //Set cell alignment
                        ((TableCell) cell).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
                    }
                }
            }
    
            //Set table alignment
            table.getTableFormat().setHorizontalAlignment(RowAlignment.Center);
    
            //Protect the document so that users can only fill out the form fields
            doc.protect(ProtectionType.Allow_Only_Form_Fields, "password");
    
            //Save the result document
            doc.saveToFile("AddFormFields.docx", FileFormat.Docx_2013);
        }
    }
    

    산출:

    좋은 웹페이지 즐겨찾기