메이븐으로 설치
<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); } }
임시 라이센스 신청
생성된 문서에서 평가 메시지를 제거하고 싶거나, 기능 제한을 없애고 싶다면 30일 평가판 라이센스 요청 자신을 위해.