Java Crea un modulo compilabile in Word

2023-11-06 09:39:02

Installa con Maven

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

Link correlati

Word ti consente di creare moduli che altre persone possono utilizzare per inserire informazioni. I moduli compilabili vengono utilizzati per diversi scopi. Le risorse umane utilizzano moduli per raccogliere informazioni su dipendenti e consulenti. I reparti marketing utilizzano moduli per sondare la soddisfazione dei clienti rispetto ai loro prodotti e servizi. Le organizzazioni utilizzano moduli per registrare membri, studenti o clienti. Alcuni degli strumenti che utilizzerai durante la creazione di un modulo includono:

  • Controlli del contenuto: aree in cui gli utenti inseriscono informazioni in un modulo.
  • Tabelle: le tabelle vengono utilizzate nei moduli per allineare testo e campi modulo e per creare bordi e caselle.
  • Protezione: consente agli utenti di compilare i campi ma non di apportare modifiche al resto del documento.

I controlli contenuto in Word sono contenitori di contenuto che consentono agli utenti di creare documenti strutturati.Un documento strutturato controlla dove appare il contenuto all'interno del documento. Esistono fondamentalmente dieci tipi di controlli del contenuto disponibili in Word 2013. Questo articolo si concentra su come farlo creare un modulo compilabile in Word costituito dai seguenti sette controlli di contenuto comuni che utilizzano Spire.Doc for Java.

Controllo dei contenuti Descrizione
Testo semplice Un campo di testo limitato al testo semplice, pertanto non è possibile includere alcuna formattazione.
Testo ricco Un campo di testo che può contenere testo formattato o altri elementi, come tabelle, immagini o altri controlli contenuto.
Immagine Accetta una singola immagine.
Menu `A tendina Un elenco a discesa visualizza un elenco predefinito di elementi tra cui l'utente può scegliere.
Casella combinata Una casella combinata consente agli utenti di selezionare un valore predefinito in un elenco o digitare il proprio valore nella casella di testo del controllo.
Casella di controllo Una casella di controllo fornisce un widget grafico che consente all'utente di effettuare una scelta binaria: sì (selezionato) o no (non selezionato).
Date picker Contiene un controllo del calendario da cui l'utente può selezionare una data.

Installa Spire.Doc for Java

Prima di tutto, devi aggiungere il file Spire.Doc.jar come dipendenza nel tuo programma Java. Il file JAR può essere scaricato da questo collegamento. Se utilizzi Maven, puoi importare facilmente il file JAR nella tua applicazione aggiungendo il seguente codice al file pom.xml del tuo progetto.

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

Crea un modulo compilabile in Word in Java

La classe StructureDocumentTagInline fornita da Spire.Doc per Java viene utilizzata per creare tag di documento strutturati per strutture a livello inline (oggetto DrawingML, campi, ecc.) in un paragrafo. La proprietà SDTProperties e la proprietà SDTContent in questa classe devono essere utilizzate per specificare le proprietà e il contenuto del tag del documento strutturato corrente. Di seguito sono riportati i passaggi dettagliati per creare un modulo compilabile con controlli del contenuto in Word.

  • Creare un oggetto Documento.
  • Aggiungi una sezione utilizzando il metodo Document.addSection().
  • Aggiungi una tabella utilizzando il metodo Sezione.addTable().
  • Aggiungi un paragrafo a una cella di tabella specifica utilizzando il metodo TableCell.addParagraph().
  • Crea un'istanza della classe StructureDocumentTagInline e aggiungila al paragrafo come oggetto figlio utilizzando il metodo Paragraph.getChildObjects().add().
  • Specificare le proprietà e il contenuto del tag del documento strutturato utilizzando i metodi nella proprietà SDTProperties e nella proprietà SDTContent dell'oggetto StructureDocumentTagInline. Il tipo del tag del documento strutturato viene impostato tramite il metodo SDTProperties.setSDTType().
  • Impedisci agli utenti di modificare il contenuto all'esterno dei campi del modulo utilizzando il metodo Document.protect().
  • Salvare il documento utilizzando il metodo 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

Richiedi una licenza temporanea

Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni della funzione, per favore richiedere una licenza di prova di 30 giorni per te.

Guarda anche