Java Word에서 채울 수 있는 양식 만들기

2023-11-06 09:39:47

메이븐으로 설치

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.doc</artifactId>
    <version>12.2.2</version>
</dependency>
    

관련된 링크들

Word를 사용하면 다른 사람이 정보를 입력하는 데 사용할 수 있는 양식을 만들 수 있습니다. 채울 수 있는 양식은 다양한 목적으로 사용됩니다. 인사부에서는 양식을 사용하여 직원 및 컨설턴트 정보를 수집합니다. 마케팅 부서에서는 양식을 사용하여 제품 및 서비스에 대한 고객 만족도를 조사합니다. 조직에서는 양식을 사용하여 회원, 학생 또는 고객을 등록합니다. 양식을 만들 때 사용할 도구 중 일부는 다음과 같습니다.

  • 콘텐츠 컨트롤: 사용자가 양식에 정보를 입력하는 영역입니다.
  • 테이블: 테이블은 양식에서 텍스트와 양식 필드를 정렬하고 테두리와 상자를 만드는 데 사용됩니다.
  • 보호: 사용자가 필드를 채울 수 있지만 문서의 나머지 부분을 변경할 수는 없습니다.

Word의 콘텐츠 컨트롤은 사용자가 구조화된 문서를 작성할 수 있는 콘텐츠의 컨테이너입니다. 구조화된 문서는 문서 내에서 콘텐츠가 표시되는 위치를 제어합니다. Word 2013에서는 기본적으로 10가지 유형의 콘텐츠 컨트롤을 사용할 수 있습니다. 이 문서에서는 Word에서 채울 수 있는 양식 만들기 Spire.Doc for Java사용하는 다음 7가지 공통 콘텐츠 컨트롤로 구성됩니다.

콘텐츠 제어 설명
일반 텍스트 텍스트 필드는 일반 텍스트로 제한되므로 서식을 포함할 수 없습니다.
리치 텍스트 서식이 지정된 텍스트나 표, 그림, 기타 콘텐츠 컨트롤과 같은 기타 항목을 포함할 수 있는 텍스트 필드입니다.
그림 단일 사진을 허용합니다.
드롭 다운 목록 드롭다운 목록에는 사용자가 선택할 수 있는 미리 정의된 항목 목록이 표시됩니다.
콤보 박스 콤보 상자를 사용하면 사용자는 목록에서 미리 정의된 값을 선택하거나 컨트롤의 텍스트 상자에 자신의 값을 입력할 수 있습니다.
체크박스 확인란은 사용자가 예(선택됨) 또는 아니오(선택 안함)라는 이진 선택을 할 수 있는 그래픽 위젯을 제공합니다.
날짜 선택기 사용자가 날짜를 선택할 수 있는 달력 컨트롤을 포함합니다.

Spire.Doc for Java 설치

우선, Spire.Doc.jar 파일을 Java 프로그램의 종속성으로 추가해야 합니다. JAR 파일은 이 링크에서 다운로드할 수 있습니다. Maven을 사용하는 경우 프로젝트의 pom.xml 파일에 다음 코드를 추가하여 애플리케이션에서 JAR 파일을 쉽게 가져올 수 있습니다.

<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>
    

Java의 Word에서 채울 수 있는 양식 만들기

Spire.Doc for Java에서 제공하는 StructureDocumentTagInline 클래스는 단락의 인라인 수준 구조(드로잉ML 개체, 필드 등)에 대한 구조화된 문서 태그를 만드는 데 사용됩니다. 이 클래스 아래의 SDTProperties 속성과 SDTContent 속성은 현재 구조화된 문서 태그의 속성과 내용을 지정하는 데 사용됩니다. 다음은 Word에서 콘텐츠 컨트롤을 사용하여 채울 수 있는 양식을 만드는 자세한 단계입니다.

  • 문서 개체를 만듭니다.
  • Document.addSection() 메서드를 사용하여 섹션을 추가합니다.
  • Section.addTable() 메서드를 사용하여 테이블을 추가합니다.
  • TableCell.addParagraph() 메서드를 사용하여 특정 표 셀에 단락을 추가합니다.
  • StructureDocumentTagInline 클래스의 인스턴스를 생성하고 Paragraph.getChildObjects().add() 메서드를 사용하여 단락에 하위 객체로 추가합니다.
  • SDTProperties 속성 및 StructureDocumentTagInline 개체의 SDTContent 속성 아래에 있는 메서드를 사용하여 구조화된 문서 태그의 속성과 콘텐츠를 지정합니다. 구조화된 문서 태그의 유형은 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일 평가판 라이센스 요청 자신을 위해.

또한보십시오