De Forms-service rendert interactieve PDF forms naar clientapparaten, meestal webbrowsers, om informatie van gebruikers te verzamelen. Nadat een interactief formulier is gegenereerd, kan een gebruiker gegevens invoeren in formuliervelden en op een verzendknop op het formulier klikken om informatie terug te sturen naar de Forms-service. Een interactief PDF-formulier is alleen zichtbaar als Adobe Reader of Acrobat is geïnstalleerd op de computer die als host fungeert voor de webbrowser van de client.
Voordat u een formulier kunt genereren met de Forms-service, moet u eerst een formulierontwerp maken. Doorgaans wordt een formulierontwerp gemaakt in Designer en opgeslagen als een XDP-bestand. Zie Forms Designer voor informatie over het maken van een formulierontwerp.
Voorbeeldtoepassing van een lening
Er wordt een voorbeeldtoepassing voor leningen geïntroduceerd om aan te tonen hoe de Forms-service interactieve formulieren gebruikt om informatie van gebruikers te verzamelen. Met deze toepassing kan een gebruiker een formulier invullen met gegevens die nodig zijn om een lening te beveiligen en vervolgens gegevens verzenden naar de Forms-service. In het volgende diagram wordt de logische stroom van de toepassing van de lening weergegeven.
In de volgende tabel worden de stappen in dit diagram beschreven.
Stap |
Beschrijving |
---|---|
1 |
De Java Server |
2 |
De Java Server |
3 |
Nadat de gebruiker het leningformulier heeft ingevuld en op de verzendknop klikt, worden de gegevens verzonden naar de Java Server. |
4 |
De Java Server |
5 |
Een bevestigingsformulier wordt teruggestuurd naar de webbrowser. Gegevens zoals de voor- en achternaam van de gebruiker worden met het formulier samengevoegd voordat het wordt gegenereerd. (Zie Forms vooraf vullen met stroombare layouts.) |
Lijnformulier
Dit interactieve leningformulier wordt gegenereerd door Java Servlet van de voorbeeldtoepassing.GetLoanForm
Bevestigingsformulier
Dit formulier wordt gegenereerd door de Java Servlet van de voorbeeldtoepassing.HandleData
Met de Java Server HandleData
wordt dit formulier vooraf ingevuld met de voor- en achternaam van de gebruiker en met de hoeveelheid. Nadat het formulier vooraf is ingevuld, wordt het naar de webbrowser van de client verzonden. (Zie Forms vooraf vullen met stroombare layouts)
Java Servlets
De voorbeeldtoepassing voor leningen is een voorbeeld van een Forms-servicetoepassing die als Java Servlet bestaat. Een Java Server is een Java-programma dat wordt uitgevoerd op een J2EE-toepassingsserver, zoals WebSphere, en bevat Forms Service Client API-code.
De volgende code toont de syntaxis van een Java-server met de naam GetLoanForm:
public class GetLoanForm extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
public void doPost(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
Normaal gesproken plaatst u geen Forms Service Client API-code binnen een Java Server doGet
- of doPost
-methode. Het is beter programmeringspraktijk om deze code binnen een afzonderlijke klasse te plaatsen, de klasse van binnen de doPost
methode (of doGet
methode) te concretiseren, en de aangewezen methodes te roepen. Voor de beknoptheid van de code worden de codevoorbeelden in deze sectie echter tot een minimum beperkt en worden codevoorbeelden in de methode doPost
geplaatst.
Zie Referentiehandleiding voor services voor AEM Forms voor meer informatie over de Forms-service.
Overzicht van de stappen
Voer de volgende taken uit om een interactief PDF-formulier te genereren:
Projectbestanden opnemen
Neem de benodigde bestanden op in uw ontwikkelingsproject. Als u een clienttoepassing maakt met Java, neemt u de benodigde JAR-bestanden op. Als u webservices gebruikt, dient u de proxybestanden op te nemen.
Een Forms Client API-object maken
Voordat u een Forms Service Client API-bewerking programmatisch kunt uitvoeren, moet u een Forms Client API-object maken. Als u de Java API gebruikt, maakt u een FormsServiceClient
-object. Als u de Forms-API voor webservices gebruikt, maakt u een FormsService
-object.
URI-waarden opgeven
U kunt URI-waarden opgeven die de Forms-service nodig heeft om een formulier te genereren. Er kan naar een formulierontwerp worden verwezen dat is opgeslagen als onderdeel van een Forms-toepassing met de URI-waarde repository:///
van de inhoudsbasis. Neem bijvoorbeeld het volgende formulierontwerp met de naam Loan.xdp in een Forms-toepassing met de naam FormsApplication:
Als u toegang wilt krijgen tot dit formulierontwerp, geeft u Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
op als de formuliernaam (de eerste parameter die is doorgegeven aan de methode renderPDFForm
) en repository:///
als de URI-waarde van de inhoudsbasis.
Zie Workbench Help voor informatie over het maken van een Forms-toepassing met Workbench.
Het pad naar een bron in een Forms-toepassing is:
Applications/Application-name/Application-version/Folder.../Filename
De volgende waarden tonen enkele voorbeelden van URI-waarden:
Wanneer u een interactief formulier genereert, kunt u URI-waarden definiëren, zoals de doel-URL waarnaar de formuliergegevens worden gepost. De doel-URL kan op een van de volgende manieren worden gedefinieerd:
Als de doel-URL is gedefinieerd in het formulierontwerp, mag u deze niet overschrijven met de Forms Service Client API. Met andere woorden, als u de doel-URL instelt met de Forms API, wordt de opgegeven URL in het formulierontwerp teruggezet naar de URL die is opgegeven met de API. Als u het PDF-formulier wilt verzenden naar de doel-URL die in het formulierontwerp is opgegeven, stelt u de doel-URL programmatisch in op een lege tekenreeks.
Als u een formulier hebt dat een verzendknop en een berekeningsknop bevat (met een overeenkomstig script dat op de server wordt uitgevoerd), kunt u de URL programmatisch definiëren waarnaar het formulier wordt verzonden om het script uit te voeren. Met de knop Verzenden op het formulierontwerp geeft u de URL op waarnaar de formuliergegevens worden verzonden. (Zie Formuliergegevens berekenen.)
In plaats van een URL-waarde op te geven die naar een XDP-bestand verwijst, kunt u ook een com.adobe.idp.Document
-instantie doorgeven aan de Forms-service. Het com.adobe.idp.Document
-exemplaar bevat een formulierontwerp. (Zie Documenten doorgeven aan de Forms Service.)
Bestanden aan het formulier koppelen
U kunt bestanden aan een formulier koppelen. Wanneer u een PDF-formulier met bestandsbijlagen genereert, kunnen gebruikers de bestandsbijlagen in Acrobat ophalen via het venster Bestandsbijlage. U kunt verschillende bestandstypen aan een formulier koppelen, zoals een tekstbestand, of aan een binair bestand, zoals een JPG-bestand.
Het koppelen van bestandsbijlagen aan een formulier is optioneel.
Een interactief PDF-formulier renderen
Als u een formulier wilt genereren, gebruikt u een formulierontwerp dat in Designer is gemaakt en als XDP- of PDF-bestand is opgeslagen. U kunt ook een formulier genereren dat met Acrobat is gemaakt en als PDF-bestand is opgeslagen. Als u een interactief PDF-formulier wilt genereren, roept u de methode renderPDFForm
of renderPDFForm2
van het object aan.FormsServiceClient
renderPDFForm
gebruikt een URLSpec
voorwerp. De inhoudsbasis wordt aan het XDP-bestand doorgegeven aan de Forms-service met behulp van de methode setContentRootURI
van het object. URLSpec
De naam van het formulierontwerp ( formQuery
) wordt doorgegeven als een afzonderlijke parameterwaarde. De twee waarden worden samengevoegd om de absolute verwijzing naar het formulierontwerp te verkrijgen.
De methode renderPDFForm2
accepteert een com.adobe.idp.Document
-instantie die het XDP- of PDF-document bevat dat moet worden gerenderd.
De runtime-optie voor gecodeerde PDF kan niet worden ingesteld als het invoerdocument een PDF-document is. Als het invoerbestand een XDP-bestand is, kunt u de optie Gecodeerde PDF instellen.
Een interactief PDF-formulier renderen met de Forms API (Java):
Projectbestanden opnemen
Neem client-JAR-bestanden, zoals adobe-forms-client.jar, op in het klassenpad van uw Java-project.
Een Forms Client API-object maken
ServiceClientFactory
-object dat verbindingseigenschappen bevat.FormsServiceClient
-object door de constructor ervan te gebruiken en het object ServiceClientFactory
door te geven.URI-waarden opgeven
URLSpec
waarin URI-waarden worden opgeslagen met behulp van de constructor.URLSpec
van het object setApplicationWebRoot
aan en geef een tekenreekswaarde door die de hoofdmap van de toepassing vertegenwoordigt.setContentRootURI
van het object URLSpec
aan en geef een tekenreekswaarde door die de URI-waarde van de inhoudsbasis opgeeft. Zorg ervoor dat het formulierontwerp zich in de URI van de inhoudsbasis bevindt. Als niet, werpt de dienst van Forms een uitzondering. Geef repository:///
op om naar de gegevensopslagruimte te verwijzen.setTargetURL
van het object URLSpec
aan en geef een tekenreekswaarde door die de doel-URL-waarde opgeeft waar de formuliergegevens worden gepost. Als u de doel-URL in het formulierontwerp definieert, kunt u een lege tekenreeks doorgeven. U kunt ook de URL opgeven waarnaar een formulier wordt verzonden om berekeningen uit te voeren.Bestanden aan het formulier koppelen
Maak een java.util.HashMap
-object om bestandsbijlagen op te slaan met behulp van de constructor.
Roep de methode java.util.HashMap
van het object put
aan voor elk bestand dat aan het gerenderde formulier moet worden gekoppeld. Geef de volgende waarden door aan deze methode:
Een com.adobe.idp.Document
-object dat de bestandsbijlage bevat.
Herhaal deze stap voor elk bestand dat u aan het formulier wilt koppelen. Deze stap is optioneel en u kunt null
* doorgeven als u geen bestandsbijlagen wilt verzenden.*
Een interactief PDF-formulier renderen
Roep de methode renderPDFForm
van het object FormsServiceClient
aan en geef de volgende waarden door:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.com.adobe.idp.Document
dat gegevens bevat die met het formulier moeten worden samengevoegd. Als u geen gegevens wilt samenvoegen, geeft u een leeg com.adobe.idp.Document
-object door.PDFFormRenderSpec
-object dat uitvoeringsopties opslaat. Dit is een optionele parameter en u kunt null
specificeren als u runtime geen opties wilt specificeren.URLSpec
dat URI-waarden bevat die door de Forms-service worden vereist.java.util.HashMap
-object dat bestandsbijlagen opslaat. Dit is een optionele parameter en u kunt null
opgeven als u geen bestanden aan het formulier wilt koppelen.De methode renderPDFForm
retourneert een FormsResult
-object dat een formuliergegevensstroom bevat die naar de webbrowser van de client moet worden geschreven.
De formuliergegevensstroom naar de webbrowser van de client schrijven
com.adobe.idp.Document
-object door de methode getOutputContent
van het object aan te roepen.FormsResult
com.adobe.idp.Document
opgehaald door de methode getContentType
ervan aan te roepen.javax.servlet.http.HttpServletResponse
in door de methode setContentType
ervan aan te roepen en het inhoudstype van het object com.adobe.idp.Document
door te geven.javax.servlet.ServletOutputStream
-object dat wordt gebruikt om de formuliergegevensstroom naar de webbrowser van de client te schrijven door de methode javax.servlet.http.HttpServletResponse
van het object getOutputStream
aan te roepen.java.io.InputStream
-object door de methode getInputStream
van het object com.adobe.idp.Document
aan te roepen.read
van het object InputStream
aan te roepen en de bytearray als een argument door te geven.javax.servlet.ServletOutputStream
van het object write
aan om de gegevensstroom van het formulier naar de webbrowser van de client te verzenden. Geef de bytearray door aan de methode write
.Een interactief PDF-formulier renderen met de Forms API (webservice):
Projectbestanden opnemen
Een Forms Client API-object maken
Maak een FormsService
-object en stel de verificatiewaarden in.
URI-waarden opgeven
URLSpec
waarin URI-waarden worden opgeslagen met behulp van de constructor.URLSpec
van het object setApplicationWebRoot
aan en geef een tekenreekswaarde door die de hoofdmap van de toepassing vertegenwoordigt.setContentRootURI
van het object URLSpec
aan en geef een tekenreekswaarde door die de URI-waarde van de inhoudsbasis opgeeft. Zorg ervoor dat het formulierontwerp zich in de URI van de inhoudsbasis bevindt. Als niet, werpt de dienst van Forms een uitzondering. Geef repository:///
op om naar de gegevensopslagruimte te verwijzen.setTargetURL
van het object URLSpec
aan en geef een tekenreekswaarde door die de doel-URL-waarde opgeeft waar de formuliergegevens worden gepost. Als u de doel-URL in het formulierontwerp definieert, kunt u een lege tekenreeks doorgeven. U kunt ook de URL opgeven waarnaar een formulier wordt verzonden om berekeningen uit te voeren.Bestanden aan het formulier koppelen
Maak een java.util.HashMap
-object om bestandsbijlagen op te slaan met behulp van de constructor.
Roep de methode java.util.HashMap
van het object put
aan voor elk bestand dat aan het gerenderde formulier moet worden gekoppeld. Geef de volgende waarden door aan deze methode:
Een BLOB
-object dat de bestandsbijlage bevat
Herhaal deze stap voor elk bestand dat u aan het formulier wilt koppelen.
Een interactief PDF-formulier renderen
Roep de methode renderPDFForm
van het object FormsService
aan en geef de volgende waarden door:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
dat gegevens bevat die met het formulier moeten worden samengevoegd. Als u geen gegevens wilt samenvoegen, geeft u null
door.PDFFormRenderSpec
-object dat uitvoeringsopties opslaat. Dit is een optionele parameter en u kunt null
specificeren als u runtime geen opties wilt specificeren.URLSpec
dat URI-waarden bevat die door de Forms-service worden vereist.java.util.HashMap
-object dat bestandsbijlagen opslaat. Dit is een optionele parameter en u kunt null
opgeven als u geen bestanden aan het formulier wilt koppelen.com.adobe.idp.services.holders.BLOBHolder
dat door de methode is gevuld. Hiermee slaat u het gerenderde PDF-formulier op.javax.xml.rpc.holders.LongHolder
dat door de methode is gevuld. (In dit argument wordt het aantal pagina's in het formulier opgeslagen.)javax.xml.rpc.holders.StringHolder
dat door de methode is gevuld. (In dit argument wordt de waarde van de landinstelling opgeslagen.)com.adobe.idp.services.holders.FormsResultHolder
-object dat de resultaten van deze bewerking zal bevatten.Met de methode renderPDFForm
wordt het object com.adobe.idp.services.holders.FormsResultHolder
dat als laatste argumentwaarde is doorgegeven, gevuld met een formuliergegevensstroom die naar de webbrowser van de client moet worden geschreven.
De formuliergegevensstroom naar de webbrowser van de client schrijven
FormResult
-object door de waarde op te halen van het com.adobe.idp.services.holders.FormsResultHolder
-gegevenslid van het object.value
BLOB
-object dat formuliergegevens bevat door de methode getOutputContent
van het object FormsResult
aan te roepen.BLOB
opgehaald door de methode getContentType
ervan aan te roepen.javax.servlet.http.HttpServletResponse
in door de methode setContentType
ervan aan te roepen en het inhoudstype van het object BLOB
door te geven.javax.servlet.ServletOutputStream
-object dat wordt gebruikt om de formuliergegevensstroom naar de webbrowser van de client te schrijven door de methode javax.servlet.http.HttpServletResponse
van het object getOutputStream
aan te roepen.getBinaryData
van het object BLOB
aan te roepen. Deze taak wijst de inhoud van het FormsResult
voorwerp aan de byteserie toe.javax.servlet.http.HttpServletResponse
van het object write
aan om de gegevensstroom van het formulier naar de webbrowser van de client te verzenden. Geef de bytearray door aan de methode write
.De formuliergegevensstroom naar de webbrowser van de client schrijven
Wanneer de Forms-service een formulier genereert, wordt een formuliergegevensstroom geretourneerd die u naar de webbrowser van de client moet schrijven. Wanneer het formulier naar de webbrowser van de client wordt geschreven, is het zichtbaar voor de gebruiker.